检查会话是否存在

时间:2013-08-08 23:46:31

标签: php

我有一个处理用户登录的脚本,然后将他引导到索引页面,在该页面中他可以选择退出。这是目前的索引页面代码:

<?php
session_start();
?>

<html>
<body>
    <?php
    echo 'You are logged in as : ';
    echo $_SESSION['username'];
    echo '<p><a href="logout.php">Logout</a></p>';
    ?>
</body>
</html>

如果用户退出,它仍会显示文本。如何检查会话是否仍然存在并相应地显示不同的消息?

IE:如果用户未登录,则显示“您未连接”和登录链接?

5 个答案:

答案 0 :(得分:1)

<?php
if (isset($_SESSION['username'])) {echo 'You are signed in.';}
else {echo 'You are not signed in.';}
?>

答案 1 :(得分:0)

(1)。一个常见的错误是尝试结束会话而没有先启动它

所以,如果您的login.phpsession_start();,那么logout.php

如果您有init.php或包含的文件。只需将其添加到那里。会话开始。 那么你可以玩会话所有页面。

(2)。常见的注销脚本包含此

<?php
session_start();
session_destroy();
header('Location: index.php');

?>

(3)。你没有验证会话。

<?php
if (isset($_SESSION['username'])) {echo 'You are signed in.';}
else {echo 'You are not signed in.';}
?>

答案 2 :(得分:0)

您可以使用

检查是否存在活动会话
if (session_id == '') {
    // user logged out
} else {
    // user logged in
}

我不是100%确定session_destroy是否会完全删除会话。 或者您可以检查是否($ _SESSION ['username'])

答案 3 :(得分:0)

<?php
session_start();
?>

<html>
<body>
  <?php
    if(isset($_SESSION['username'])){
      echo "You are logged in as : {$_SESSION['username']}<p><a href='logout.php'>Logout</a></p>";
    }
  ?>
</body>
</html>

只需unset($_SESSION['username']);即可退出。

答案 4 :(得分:0)

您注销时需要调用session_destroy来清除会话。

然后像PHP中的任何其他变量一样,您应该能够检查它是否已设置,然后相应地显示代码。

if (!empty($_SESSION['username']) {
    echo 'You are logged in as : '.$_SESSION['username'];
} else {
    echo 'You are not connected';
}