3

ログオンしているユーザーに関連付けられたセッション データを保持しながら、保存されている特定の量の SESSION データのみを削除する方法を探しています。

現時点では、削除したい SESSION 変数への個々のunsetステートメントによってこれを行っています。

ただし、特定の変数を保持しながら SESSION 配列のセクション全体を削除する、より賢い方法があるかもしれないことを望んでいました

例えば

$_SESSION['username'];
$_SESSION['user_id'];
$_SESSION['ttl'];

このプロセスの使用例は次のとおりです。

ユーザーがログイン --> ユーザーがタスクを実行 --> タスクが完了したら、タスクに関連付けられたセッション データを削除 --> ユーザーはまだログインしています。

データベースの監視ログインにテーブルを使用することを検討していましたが、それについてどう思いますか?

御時間ありがとうございます!

4

4 に答える 4

3

「特定の変数を保持しながら SESSION 配列のセクション全体」を削除する方法はありません。代わりに、タスクに 2 次元配列を使用してその配列を削除できます。

$_SESSION["task1"]["username"] = "name"
$_SESSION["task1"]["pass"] = "pass"

$_SESSION["task2"]["name"] = "name";

task1 が完了したら、いいねを削除します

  unset($_SESSION["task1"]);

現在 $_SESSION["task2"] はまだ存在しています。

于 2012-01-24T17:24:19.763 に答える
1

このすべての揮発性データを別のキーに保存できます。

$_SESSION['volatile'] = array(
   'one' => 'value'
);

それをしたくない場合は、次のような配列比較関数を使用できます。

// specify what keys to keep
$_SESSION = array_intersect_key($_SESSION, array('keepme1', 'keepme2', 'etc'));

//specify what keys to remove
$_SESSION = array_diff_key($_SESSION, array('deleteme1', 'deleteme2', 'etc'));

DBに関してはそれを行うことができますが、目的を達成するために必要ではありません。元の質問IDにリストしなかった可動部分がない限り、今はそれほど複雑なことをする必要はないでしょう。

于 2012-01-24T17:20:45.377 に答える
0

セッションデータを階層構造にします。

$_SESSION['loggedIn'] = TRUE;

// Temporary session data
$_SESSION['temporary'] = array(
    'temp_var1' => 'foo',
    'temp_var2' => 'bar',
    // ...
    'temp_var99' => 'baz'
);

echo $_SESSION['temporary']['temp_var2']; // bar

// Remove all temporary session data
unset($_SESSION['temporary']);

echo $_SESSION['loggedIn'] ? 'yes' : 'no'; // yes
于 2012-01-24T17:28:11.507 に答える