1

私は単純なWebサイトphp/jquery/mysqlなどを書いています。現在、ユーザーがログインするとセッション変数が設定され、他のページにまだログインしているかどうかを確認するために参照される非常に単純なログインシステムがあります. コードは次のとおりです。

$_SESSION['logged_in'] = TRUE;
$_SESSION['member_id'] = $member_id_for_session;
$_SESSION['handle'] = $user_handle;

これを利用するutilファイルには、次のようなさまざまな機能があります。

function echoUserHandle() {
    if (isset($_SESSION['handle'])) {
        echo "Welcome " . $_SESSION['handle'];
    } else {
        echo "You are not logged in";
    }
}

function checkLoggedIn() {

if (isset($_SESSION['logged_in'])) {
    return TRUE;
} else {
    return FALSE;
}
}

これは、Chrome を使用して Mac 上の MAMP サーバーで正常に動作しますが、リモート サーバーにプッシュすると、開発に使用する同じブラウザーでもデータの一貫性のないビューが得られます。これは、一部のページに「ログインしていません」というステータスが表示され、一部のページには正しいユーザー ID が表示されるという事実によってのみわかります。

また、ユーザーがログアウトすると、次を使用してセッションが完全に破棄されます。

        unset($_SESSION['logged_in']);
        unset($_SESSION['member_id']);
        unset($_SESSION['handle']);
        $_SESSION = array();

        if (ini_get("session.use_cookies")) {
            error_log("unsetting cookie:" . session_name(), 0);
            $params = session_get_cookie_params();
            error_log("cookie params:" . $params, 0);
            setcookie(session_name(), '', time() - 42000, $params["path"], $params["domain"], $params["secure"], $params["httponly"]);
        }

        session_destroy();

これはやり過ぎかもしれませんが、一部のページで別のユーザーとして再度ログインすると、以前にログインしたユーザーがまだ表示されます。これは、セッションに何か問題があることを示唆していますね。

誰でもこれをデバッグする方法を提案できますか?私は他の分野で多くの開発を行ってきましたが、php はまだ私にとって新しいものです。

どうもありがとう

4

0 に答える 0