我在php中创建了一个用于登录用户的页面。 但是一旦我退出,如果我在浏览器中键入限制页面,我就能看到它,即使我已经注销了。
我在页面开头有这个代码,有什么想法吗? :)谢谢
<?php
if(!isset($_SESSION)){
session_start();
}
&GT;
答案 0 :(得分:0)
当您需要使用会话时,请始终使用session_start
。
在session_start
之前没有SESSION。
答案 1 :(得分:0)
Cookie是控制用户是否登录的绝佳方式。一种简单但不安全的方式就是简单地编写一个cookie&#34; loggedin&#34;成功登录后,在注销时删除它。
更复杂的cookie登录/注销逻辑可以存储一个大的随机字符串,该字符串在登录时在数据库中被跟踪。注销时,数据库会删除用于cookie值的随机字符串,并且cookie也会被删除。这样,即使有人偷了cookie并试图重新使用它,在页面生成时,它会检查该随机字符串的状态,并拒绝访问该页面。
答案 2 :(得分:0)
希望您在退出时呼叫session_destroy();
。
另外,你不需要
<?php
if(!isset($_SESSION)){
session_start();
}
?>
每页都有。这应该只是在登录页面。对于每个其他页面,它应该是:
<?php
if(!isset($_SESSION)){
//Redirect to login Page
} else {
//User is logged in. Display relevant content.
}
?>
答案 3 :(得分:0)
这是因为您没有销毁会话。
为此,您必须创建指向页面的链接,点击“注销”将指向您必须调用session_destroy()
的页面。例如,<a href="path_to_your_page.php">Logout</a>
在您的页面中,您运行:
<?php
session_start();
session_destroy();
header("location:index.php");
?>