如何在php中添加一个条件来检测会话是否已经结束?

时间:2014-07-09 06:11:22

标签: php session logout

我在php中创建了一个用于登录用户的页面。 但是一旦我退出,如果我在浏览器中键入限制页面,我就能看到它,即使我已经注销了。

我在页面开头有这个代码,有什么想法吗? :)谢谢

<?php 
if(!isset($_SESSION)){
    session_start();
}

&GT;

4 个答案:

答案 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");
?>