刷新包含帖子变量的页面

时间:2012-09-02 13:09:13

标签: php post

这是一个简单的用户名/密码登录表单。当我提交正确的数据时,它会转到test.php和echos' hi' 。但是如果我在test.php上点击刷新它会显示No Permission。如何让它显示' hi'在我提交后刷新test.php之后在test.php上?

的login.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>

test.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();
    }
?>

1 个答案:

答案 0 :(得分: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)

这将检查用户名和userpass是否已设置,然后再检查其值。