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

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 に答える
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
}

ただし、session_destroy がセッションを完全に削除するかどうかは 100% わかりません。または、代わりに ($_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 に答える