これは、次のようにログインしている場合のセッションだと思いますadmin
。
$_SESSION['user']['id'] = 1;
$_SESSION['user']['group'] = 'admin';
...
ただし、これはあなたがただの場合のセッションですuser
。
$_SESSION['user']['id'] = 99;
どこlogout.php
にいても、次のようにします。
if ($_SESSION['user']['group'] == 'admin')
$_SESSION['user']['group'] = null;
else
destroy_session();
あなたがアイデアを得たことを願っています!
アップデート
これはうまくいくかもしれません:
/* Do NOT unset the $_SESSION['user']['role'] */
if ($_SESSION['user']['role'] == 'user') {
/* For Users */
$_SESSION['user']['login'] = false;
$_SESSION['user']['id'] = null;
$_SESSION['user']['last-visit'] = null;
$_SESSION['user']['ip'] = null;
}
if ($_SESSION['user']['role'] == 'admin') {
/* Unset Admin Specific Variables */
$_SESSION['admin']['login'] = false;
$_SESSION['admin']['id'] = null;
$_SESSION['admin']['last-visit'] = null;
$_SESSION['admin']['ip'] = null;
}
/* Get rid of session_destroy() */
// session_destroy();
ちなみに、変数を手動でリセットしているだけで、セッションを完全に破棄するのと同じですが、反対側のセッションは引き続き有効です。
さらに良い
/* Assign the `user_id` to the session, when you log in ... */
/* login.php */
$_SESSION[$user_id] = array();
/* Now fill-up the new array with data ... */
$_SESSION[$user_id]['role'] = 'admin';
$_SESSION[$user_id]['login'] = true;
/* When you want to Log out, just simply null the array based on the user_id again */
/* logout.php */
$_SESSION[$user_id] = null;
/* Here you go, as long as you have different user_id in your database,
you have separated sessions! */