我有一个小型基本网站,用户只能在登录时查看某些页面。只有1个用户名和密码,因为该网站仅供少数人使用,安全性不是主要问题。无论如何,当用户输入正确的用户名和密码并提交时,会在代码中设置cookie并重新加载页面。但它仍然显示内容,好像用户没有登录。当我再次按下sumbit按钮或只是单击到另一个页面时,内容显示正确(导航栏中的更多项目)。我无法找出为什么它不会第一次显示这些项目。
登录页面的顶部:
if (isset($_POST['reg'])){
if ($form_errors = validate_form()) {
show_form($form_errors);
} else {
logon();
}
} else {
show_form();
}
页面内容(功能show_form)
<?php
if( isset($_COOKIE['logedon'])){
echo '<p>You are now logged on</p>';
}
else{
//shows form containing: <input type="hidden" name="reg" value="1"/>
}
?>
,最后是logon()函数
function logon(){
$expire= 60 * 60 * 24 * 10000 + time();
setcookie('logedon', true, $expire);
show_form();
}
因此设置了cookie,调用了show_form函数但仍然显示了表单,而不是回显“你现在登录”。当我再次切换页面或点击提交按钮时,会显示回显。为什么第一次不这样做?
请帮忙!
答案 0 :(得分:4)
直到明天才会看到Cookie 下一页加载的页面 cookie应该是可见的。去测试 如果成功设置了cookie, 在下次加载时检查cookie Cookie过期前的页面。到期 时间是通过expire参数设置的。 调试存在的好方法 只需拨打电话即可享受cookies 的print_r($ _ COOKIE);
设置Cookie后,您应该重新加载页面,您可以使用header('location:http://someurl');die();
答案 1 :(得分:0)
使用标题功能完成登录后,只需手动刷新页面即可。设置cookie后,只能在下一页重新加载
中访问它