0

私は現在、明らかな問題に直面しているアプリケーションを使用しています。私のアプリケーションには2つの主要なパネルがあります。1つは管理パネルで、もう1つはユーザーパネルです。

管理者が現在自分のパネルにログインしていると同時に、ユーザーパネルの一部のユーザーがすでにログインしている可能性があるとします。PHPで次のコードを使用してログアウトし、ログインページにリダイレクトするとどうなりますか(管理者またはいずれかのユーザーがログアウトしたとき)。

session_start();
session_unset();

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

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

セッションはこのように設定解除できることは知っunset($_SESSION['something'])ていますが、両方の側(adminとuser)ですでに非常に多くのセッション変数が使用されているため、アプリケーションで使用されるすべてのセッション変数を覚えておくのは面倒なプロセスです。

管理者セッションとユーザーセッションを別々に破棄する方法はありますか?つまり、ユーザーがログアウトすると、セッションが破棄され、管理セッションにまったく影響を与えてはなりません。その逆も同様です。

4

2 に答える 2

6

セッションはユーザー間で独立しています。1人のユーザーがログアウトしたからといって、すべてのセッションが破棄されるわけではありません。ログアウトしたユーザーだけが破棄されます。

于 2012-05-13T16:04:16.120 に答える
6

簡単な解決策-変数にレベルを追加して、管理者変数とユーザー変数が完全に別々のセクションにあるようにします。

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

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

次に、ユーザーが管理セクションからログアウトする場合、それは簡単です

unset($_SESSION['admin']);

およびPOOF、すべての管理変数がなくなりました。

于 2012-05-13T16:07:32.970 に答える