15

PHPセッションが存在するかどうかを確認する方法を知りたい...私の理解では、セッションを使用している場合、セッションが既に存在することを知っていても、セッションにアクセスするためにsession_start()でファイルを開始する必要があります。 .

セッションが存在するかどうかを確認するためにユーザー session_id() を読みましたが、session_id() を呼び出す前に session_start() を使用する必要があり、session_start() はセッションがない場合に新しい ID を作成します。セッションが存在するかどうかを確認できますか?

4

11 に答える 11

26

session_id()5.4 より前の PHP バージョンでは、次の関数のみを使用できます。

$has_session = session_id() !== '';

PHP バージョン 5.4+ では、以下を使用できますsession_status()

$has_session = session_status() == PHP_SESSION_ACTIVE;
于 2012-10-28T23:42:02.320 に答える
18
isset($_SESSION)

それだけです。単一のセッション変数が存在するかどうかを確認する場合は、を使用しますif(isset($_SESSION['variablename']))

于 2012-10-28T23:47:13.023 に答える
10

セッション Cookie がクライアントに設定されているかどうかを単純にテストするのが、何度も (アプリケーションの性質によって異なります) 最善の方法だと思います。

<?php

if (isset($_COOKIE["PHPSESSID"])) {
    echo "active";
} else {
    echo "don't see one";
}

?>

もちろん、デフォルトのセッション名「PHPSESSID」は、使用しているカスタムの名前に置き換えてください。

于 2016-02-07T13:40:57.450 に答える
7

PHP には、セッション名と呼ばれるものがあります。この名前は、セッションがすでに開始されている場合に設定される Cookie に関連しています。

したがって、$_COOKIE使用可能なセッション cookie があるかどうか、配列を確認できます。Cookie は、通常、セッション名のセッション ID をブラウザーと交換するために推奨される形式です。

Cookie が既に存在する場合、これは PHP セッションが以前に開始されたことを意味します。そうでない場合は、session_start()新しいセッション ID とセッションが作成されます。

これを確認する 2 つ目の方法は、セッションの Cookie がそこに設定されているかどうかを発信ヘッダーで確認することです。新しいセッションの場合に設定されます。または、セッション ID が変更された場合。

于 2012-10-28T23:49:45.947 に答える
0

session_start の前に session_id を呼び出すことができます。http://www.php.net/manual/en/function.session-id.php - id パラメータを読む

于 2012-10-28T23:46:41.507 に答える
0

私はいつも単純に使ってきました

if (@session_id() == "") @session_start();

まだ失敗していません。

これを使うのはかなり久しぶり。

:@単に警告を抑制します。

于 2014-02-10T16:08:45.107 に答える
0

を保管session_id$_SESSION、チェックしてください。

初めて

session_start();
$_SESSION['id'] = session_id();

セッションを開始し、ランダムに与えられたセッション ID を保存します。

次の時間

session_start();
$valid_session = isset($_SESSION['id']) ? $_SESSION['id'] === session_id() : FALSE;
if (!$valid_session) {
   header('Location: login.php');
   exit();
}

セッションを開始し、現在のセッション ID と保存されているセッション ID が同一であるかどうかをチェックします (php の存在しない短絡 AND の代わりに 3 項 ? を使用)。そうでない場合は、再度ログインを求めます。

于 2015-03-05T12:56:25.123 に答える
0

ノートがphpバージョンで機能している場合は、エラーレポートをオフにして、phpコードの先頭に置きます

error_reporting(0);

于 2016-08-17T05:29:25.727 に答える