0

这是一个简单的用户名/密码登录表单。当我提交正确的数据时,它会转到 test.php 并回显 'hi' 。但是,如果我在 test.php 上点击刷新,它会显示没有权限。提交后刷新 test.php 后,如何让它在 test.php 上显示“hi”?

登录.php:

<?php
    session_start();
    session_unset();
?>

<html>
    <body>
        <?php include 'header.php'; ?> 
        <form action = "test.php" method = "post">
            <br/>
            Enter username
            <input type = "text" name = "user"/>
            <br/>
            Enter passowrd
            <input type = "password" name = "pass"/>
            </br>
            <input type = "submit" value = "submit" name = "submit"/>
        </form>
    </body>
</html>

测试.php:

<?php
    session_cache_limiter('private_no_expire');
    session_start();
    $_SESSION['authuser'] = 0;

    if(isset($_POST['user']) && isset($_POST['pass']))
    {
        $_SESSION['username'] = $_POST['user'];
        $_SESSION['userpass'] = $_POST['pass'];
    }
    else
    {
        $_SESSION['username'] = NULL;
        $_SESSION['userpass'] = NULL;
    }

    if($_SESSION['username']=="joe" && $_SESSION['userpass'] == 123456)
    {
        $_SESSION['authuser']=1;
        echo 'hi';
    }
    else
    {
        echo "No permission";
        exit();
    }
?>
4

1 回答 1

1

刷新时,您的浏览器应该为您提供重新发布值的选项,如果您单击是,它应该可以工作。

或者您可以删除代码的 else 部分:

else
{
    $_SESSION['username'] = NULL;
    $_SESSION['userpass'] = NULL;
}

如果您删除它,那么会话变量将被记住,并且您的其余代码将使用这些会话值。

编辑

在第一次加载该页面时(上面有我建议的更改),之前没有登录,你会得到未定义的索引错误。要解决此问题,您可以更改该行:

if($_SESSION['username']=="joe" && $_SESSION['userpass'] == 123456)

if(isset($_SESSION['username']) && $_SESSION['username']=="joe" && isset($_SESSION['userpass']) && $_SESSION['userpass'] == 123456)

这将检查用户名和用户密码是否已设置,然后再检查它们的值。

于 2012-09-02T13:14:54.630 回答