2012-05-13 3 views
0

私は現在、明らかな問題に直面しているアプリケーションで作業しています。私のアプリケーションには2つの主要なパネルがあり、1つはadminパネルで、もう1つはユーザーパネルです。PHPで管理セッションとユーザセッションを別々に破壊するにはどうすればいいですか?

ユーザーパネルのユーザーが既にパネルにログインしていると仮定します.FTPで次のコードを使用してログアウトしてリダイレクトするとどうなりますかログインページ(管理者またはユーザーのいずれかがログアウトしたとき)。

session_start(); 
session_unset(); 

if(session_destroy()) 
{ 
    header("location:Login.php"); 
} 

のは、管理者がまだにログイン中にユーザーがログアウトされていると仮定しましょう。上記のコードは、セッションを破壊すると、その結果、管理者はまた、ログアウトしページでログにリダイレクトされます。

私はセッションがこのような何かを解除することができます知っていますunset($_SESSION['something'])しかし、非常に多くのセッション変数が既に両側(管理者とユーザー)で使用されているので、アプリケーションで使用されるすべてのセッション変数を覚えておくのは退屈なプロセスです。

管理セッションとユーザーセッションを別々に破棄する方法はありますか?私が意味するのは、ユーザーがログアウトすると、セッションが破棄され、管理セッションに影響を及ぼしてはならないことです。

+0

あなただけの 'array_keys($ _ SESSION)'を使用して、瞬時にすべてのセッション変数の名前の完全な配列を持っている、「セッション変数を覚えておく」必要はありません。 –

+0

* "上記のコードはセッションを破壊し、管理者はログアウトしてログインページにリダイレクトされます。" *上記のコードでは、このコードは実行されません。 – goat

+0

@chris :)しかし、ユーザーと同じ時間に 'admin'パネルにログインすると、ユーザーが(自分自身を意味する)ログアウトすると、管理者はログアウトしてログインページにリダイレクトされます。 – Bhavesh

答えて

6

セッションはユーザー間で独立しています。ただ1人のユーザーがログアウトしても、すべてのセッションが破棄されたわけではなく、ログアウトしたユーザーだけです。

+0

私の場合、ユーザーがログアウトしたときになぜそれが起こっているのですか?彼のパネルで現在作業している管理者も自動的にログオフします。 – Bhavesh

+0

同じブラウザでこれをテストしていますか(つまり、同じセッションで)? –

+0

adminとuserの両方が同じローカルホストにいます。これは問題ですか? – Bhavesh

5

シンプルなソリューション - 管理者とユーザーVARSは完全に別のセクションにあるように、あなたのVARSにレベルを追加し、例えば管理セクションのうち、ユーザのログは、それは簡単な

unset($_SESSION['admin']); 

POOFかどう

$_SESSION['admin']['setting1'] = 'someval'; 
$_SESSION['admin']['setting2'] = 'otherval'; 

$_SESSION['user']['setting3'] = 'foo'; 
$_SESSION['user']['setting4'] = 'bar'; 

、その後、すべての管理VARSがなくなっています。

関連する問題