0

だから私は自分のphpサイト用にこの小さなログインシステムを作成しました。最初にUserIdなどのいくつかのセッション変数を使用してセッションを作成するログインフォームがあります。また、セッションを作成する前にsession_destroy()を実行して、既存のセッションが破棄されるようにします。

次に、このphpファイルをサイトのすべてのページの上部に含めます。このファイルは、そのセッションを開きsession_start()、mysql接続などを開始します。

問題は、一部のページではセッションが正しく開かれ、他のページでは新しいセッションが作成されるように見えることです。実際、別のページに移動して、正しいセッションが開かれていないページに戻ると、同じ誤ったセッションであるため、実際には2つのセッションが開かれているようです...

動作するページと動作しないページでセッションIDをエコーすると、セッションIDが異なるため、混乱します。

4

2 に答える 2

2

session_destroy()次のページのリクエストでセッションが削除されるため、まずは使用しないでください。代わりに以下を使用してください:

unset( $_SESSION ); //this will delete the session immediately

問題を試してテストするには、次のsession_id()関数を使用します。

<?php
    $a = session_id();
    if(empty($a)) session_start();
    echo "SID: ".SID."<br>session_id(): ".session_id()."<br>COOKIE: ".$_COOKIE["PHPSESSID"];
?>
于 2012-08-15T09:40:22.523 に答える
-1

(この場合のように)重複するCookieを取得している場合は、各Cookieのドメインとパスを確認してください。Cookieのパスがドメインであることが常に同じドメインに設定され、パスが常にWebサイトのルートであることを確認してください(Cookieをサイトグローバルにする場合)。

各Cookieは、設定されたパスとドメイン、設定されたパスで始まるすべてのパスに表示され、ドメインのすべてのサブドメインに一致するように設定できます。

質問へのコメントに基づいています。

于 2012-08-15T12:35:33.887 に答える