这是一个简单的用户名/密码登录表单。当我提交正确的数据时,它会转到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();
}
?>
答案 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是否已设置,然后再检查其值。