2

でログアウトしようとするとsession_destroy();、うまくいきました。しかし問題は、セッション付きのショッピング カートも持っていることです。だからsession_destroy();私のためのオプションではありません。関数を使用しているときは、unset($_SESSION['username']);機能しているようです。しかし、アカウント ページに戻ると、ログインし直しただけです。ログアウト スクリプトは次のようになります。

<?php
unset($_SESSION['username']);
unset($_SESSION['id']);

header('Location: index?page=home');
?>

ユーザーがログインしているこのコードで確認しました(誰か教えてもらえますか、これは安全ですか?)

<?php if (!$_SESSION['username'] && !$_SESSION['id']){ ?>
<?php header ('Location: index?page=home'); ?>
<?php } ?>

これはあなたが必要とする情報です(私は思う)。さらに必要な場合は、お問い合わせください。

短いバージョンでの私の質問: ショッピング カート セッションを破棄せずにセッションを破棄するにはどうすればよいですか?

みんなありがとう。

4

3 に答える 3

4

ここで試してみsession_write_close()ませんか?スクリプトの終了後に自動的にこれを行う PHP 構成がありますが、PHP の構成は異なる場合があります。

<?php
unset($_SESSION['username']);
unset($_SESSION['id']);

session_write_close();

header('Location: index?page=home');
?>

デバッグのために、これを試してみてください:

<?php

echo $_SESSION['id'].' - '.$_SESSION['username'];

if(!$_SESSION['username'] && !$_SESSION['id']){
    header ('Location: index?page=home');
}

?>
于 2013-10-10T18:11:35.547 に答える
0

最も簡単な方法で使用

<?php
session_start();
if(empty($_SESSION['user']) && empty($_SESSION['id']))
{
echo "please login";

}

unset変数の設定を解除し、session_destroyセッションを完全に破棄するために使用するため、両方を次のように使用することをお勧めします。

<?php
session_start();
unset($_SESSION['user']);
unset($_SESSION['id']);
session_destroy();
header("location:yourpage.com");
?>
于 2013-10-10T18:00:24.290 に答える