3

ログインとページアクセスを制御するためにセッション変数を使用しています。私は変数を使用して、ユーザーが属するさまざまなユーザーグループを制御しているため、かなりの数のセッション変数があります。

また、セッション変数を使用して、更新時にユーザーが最後にアクセスしたページを記憶します。

ユーザーがログアウトするとき、私はsession_destroy();を使用します。すべての変数を削除します。私がやりたいのは、ユーザーがログアウトした後でも、最後にアクセスしたページ変数を維持することです。

他のすべての変数でunset関数を使用することでそれを実行できると思いますが、たくさんあり、もっと簡単な方法があるかどうか疑問に思いましたか?

ありがとうエド

4

4 に答える 4

1

あなたはこれのために以下のコードを試すことができます、

$Arr_not_destoy_session = array('last_visited_id');

        foreach($_SESSION as $sees_key => $sess_val ){
            if(!in_array($sees_key, $Arr_not_destoy_session)){
                unset($_SESSION[$sees_key]);    
            }   
        }

これにより、「last_visited_id」のみを除くすべてのセッション変数の設定が解除されます。この配列に、後で削除したくない値を追加することもできます。

ありがとう。

于 2011-09-13T10:43:09.060 に答える
0

セッションを破棄することはできますが、破棄する前に、最後のページを新しいセッション変数に入れる変数に保存してください。

$ lastPage = $ _SESSION ['last_page'] $ session_destroy(); 次に、$lastPageを含む新しいセッションを作成します。

もう1つの方法は、ユーザーが最後にアクセスしたページをデータベースのユーザーレコードに保存することです。(これにより、どこからでもアクセスできるようになり、場所固有になることはありません)

于 2011-09-13T10:41:46.440 に答える
0

を使用する既存のフォールバックソリューションに戻るunset()と、これに関する問題はたくさんあるということですが、それが難しくなることはないはずです。私はまだこれがあなたの問題に対する良い解決策だと思います。

foreach()まず、ループを使用してそれらすべての設定を解除できます。これには数行のコードしか必要ありません。

foreach($_SESSION as $key=>$value) {
    if($key != "the_one_you_want_to_keep") {
         unset($_SESSION[$key]);
    }
}

別の方法は、セッションデータをサブ配列に整理することです。これにより、単一の最上位配列変数の設定を解除し、他のサブ配列の他のセッションデータはそのままにして、それらをクリアできます。

unset($_SESSION['user_data']);
//but don't unset $_SESSION['data_to_keep']

お役に立てば幸いです。

于 2011-09-13T10:44:17.320 に答える
0

セッション変数を配列にグループ化して、それらの設定を解除するには、の1つまたは複数の配列の設定を解除する必要があります$_SESSION。たとえば、セッションでユーザー情報を保持する場合は、次のことを試してください。

$_SESSION['user_info'] = array(...);

$_SESSION['last_visited_page'] = '...';

$_SESSION['user_info']ログアウト後、設定を解除して保持することができます$_SESSION['last_visited_page']

于 2011-09-13T10:44:29.643 に答える