1

セッションが存在するかどうかを検証しようとしています。そのために、私は次のことを試しました:

次の場合に新しいセッションを作成します。

  1. if(session_id() == '')

  2. if(isset($_SESSION))

  3. if(session_status() == PHP_SESSION_ACTIVE)

上記のどれも機能していません。私が間違っているかもしれない手がかりはありますか?

私がこれを行っている理由は、セッションが存在するかどうかに基づいて個別のことを行う必要があるためです-のように

if (session exists)

 ....

else

 ...
4

3 に答える 3

1
  1. そのためには session_start が必要であり、その結果、セッション Cookie が送信されます
  2. この変数は常に存在します
  3. 1と同じ

ユーザーのセッション内に何かがあるかどうかを確認するだけです。
isset($_SESSION['some flag]) セッションを使用するには呼び出しが必要であるsession_startため、セッション Cookie が送信され、最終的にセッションが作成されます。これは常に true になります。

于 2013-01-21T11:12:46.887 に答える
1

試してみる2つの選択肢は次のとおりです。

  1. if (!session_id())
  2. if (empty(session_id())

これらのいずれかが を返した場合は、true最初にセッションを開始してから、存在するはずの値を確認してください。例えば:

// Start the session when no id is set
if (!session_id()) {
    session_start();
}

// Double-check for a known session variable
if (array_key_exists('username', $_SESSION) && !empty($_SESSION['username'])) {
    // Session is good, continue here.
}
于 2013-01-21T11:15:47.703 に答える
0

これを試してください:

public function session_exists(){
    if(ini_get('session.use_cookies') == '1' && isset($_COOKIE[session_name()])){
        return true;
    } 
    else if(!empty($_REQUEST[session_name()])){
        return true;
    }
    return false;
}
于 2013-01-21T11:11:57.173 に答える