1

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

<?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:如果用户未登录,显示“您未连接”和登录链接?

4

5 回答 5

1
<?php
if (isset($_SESSION['username'])) {echo 'You are signed in.';}
else {echo 'You are not signed in.';}
?>
于 2013-08-08T23:50:19.803 回答
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.';}
?>
于 2013-08-08T23:50:46.827 回答
0

您可以通过使用检查是否有活动会话

if (session_id == '') {
    // user logged out
} else {
    // user logged in
}

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

于 2013-08-08T23:50:59.983 回答
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']);为了退出。

于 2013-08-08T23:51:28.407 回答
0

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

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

if (!empty($_SESSION['username']) {
    echo 'You are logged in as : '.$_SESSION['username'];
} else {
    echo 'You are not connected';
}
于 2013-08-08T23:53:43.960 回答