0

重複の可能性:
特定のキーを除くすべてのセッションデータを設定解除/破棄するにはどうすればよいですか?

「車」で始まる特定のセッション変数があります。

$_SESSION["cars_registration"];
$_SESSION["cars_make"];
$_SESSION["cars_model"];
$_SESSION["cars_variant"];
.
.
.
$_SESSION["cars_date_created"];

上記のように接頭辞としてcarsで始まるセッション変数のみを設定解除/削除/空にするためのコードを知りたいです。

これまでのところ私はこれを達成しましたが、それらを設定解除するためのコードについては何も考えていません。

foreach($_SESSION as $key => $value)
{
    if (strpos($key, 'cars_') === 0)
    {
      // Need to delete / unset the session variables  
    }
}

手伝ってください

4

5 に答える 5

6

がまだ明白なことを無視できることを知ってうれしく思います。

ループやあらゆる種類のものでこれを行う方法はたくさんありますが、これを行う正しいcars方法は、一度に簡単に破棄できるsub array を使用することです。

したがって、作成する代わりに

$_SESSION["cars_registration"];
$_SESSION["cars_make"];

など、次のように作成します。

$_SESSION["cars"]["registration"];
$_SESSION["cars"]["make"];

したがって、設定を解除するときは、次のことを行うだけです。

unset($_SESSION["cars"]);

$_SESSION他の配列と同様に多次元構造でデータを保持できます。値のフラットなコレクションである必要はありません。

于 2012-12-31T10:57:12.220 に答える
4

あなたはほとんどそれを手に入れました!!!

 foreach($_SESSION as $key => $value)
    {
        if (strpos($key, 'cars_') === 0)
        {
          unset($_SESSION[$key]); //add this line
        }
    }

ここにいくつかの説明があります。内部で、各反復の配列を保持する変数にforeach設定すると、$keykey$_SESSION$value

参照:

http://php.net/manual/en/control-structures.foreach.php

于 2012-12-31T10:51:42.973 に答える
3

を使用するだけunsetです。

foreach($_SESSION as $key => $value)
{
    if (strpos($key, 'cars_') === 0)
    {
      unset($_SESSION[$key]);
    }
}
于 2012-12-31T10:51:13.427 に答える
0

session_unregister — 現在のセッションからグローバル変数を登録解除する この関数は、PHP 5.3.0 で非推奨になりました。この機能に依存することはお勧めできません。

session_unset — すべてのセッション変数を解放する unset($_SESSION) で $_SESSION 全体を設定解除しないでください。これにより、$_SESSION スーパーグローバルを介したセッション変数の登録が無効になります。

session_destroy — セッションに登録されたすべてのデータを破棄します

于 2012-12-31T10:52:52.573 に答える
0

unsetPHP では、変数を「破棄」するために使用できます。したがって、キーが基準を満たしていると確信したら、次のことができます。

unset($_SESSION($key));
于 2012-12-31T10:53:08.617 に答える