0

基本的に、ファイルの先頭にセッション再生成チェックがないとスクリプトは機能しません。これまでこの問題が発生したことがなく、なぜこのコードを実行する必要があるのか​​わからないため、これは非常に奇妙です。以下は私のログアウトです。次に、セッションを機能させるために、セッションにアクセスするすべてのファイルの上部に配置する必要があります。何が悪いのかについて何か考えはありますか?

ログアウト:

require_once("../Core/Core.php");

if(!isset($_SESSION['LoggedIn']))
    Core::ThrowError(13,"",1);

session_destroy();
header("Location: " . Core::$url);

それを機能させるために必要です:(また、ユーザーが表示するすべてのページにこれを配置しています(ログインスクリプトページのようなものはありません))

<?
    session_start();
    if(!isset($_SESSION['started']))
    {
        session_regenerate_id();
        $_SESSION['started'] = true;
    }
?>

アップデート1:

上記のsession_start()を追加して変数にデータを追加した後、データをセッションに入れることができるようになりました(ただし、ログインページを表示する前に開始されたため、セッションは既に開始されています)が、session_destroy()を呼び出すと次のようになります。セッションが存在しないかのようにfalseですが、session_start()をsession_destroy()の上に置くと、正常に機能します。これはそれが何であれ本当にばかげています...助けてください。

アップデート2:

セッションがすでに指定されている場合でも、アクセスを試みる前にsession_start()を配置した場合にのみ、セッションデータにアクセスできるようです。

4

1 に答える 1

0

なんとか修正できました。「Cookieベースのセッションを使用するには、ブラウザに何かを出力する前にsession_start()を呼び出す必要がある」ということを知りませんでした。それを修正するために、すべてに必要なsession_start()をコアに配置して、セッションにアクセスしようとする前にすべてがそれを呼び出すようにしました。

于 2013-03-25T20:10:09.950 に答える