1

まず、私の英語はあまり上手ではありません。

こんにちは、私のプロジェクトに問題があります

フロントエンドから (メンバーとして) および管理者としてログインできる Web サイトを作成しました。別のユーザー名とパスワードを使用して両方 (フロントエンドとバックエンド) にログインしますが、バックエンドからログアウトすると、フロントエンドもログアウトします。

これは、スクリプトを実行したためだと思いますがsession_destroy()、フロントエンド セッションを含むすべてのセッションが破棄されます。

と を使用してこれを検索しようZend FrameworkJoomlaしましたPHP

4

2 に答える 2

0

これは、次のようにログインしている場合のセッションだと思います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! */
于 2013-04-11T05:52:55.850 に答える
0

セッションごとに異なる変数を作成する必要があります..

場合に役立ついくつかの例を次に示します。

<?php 
 // you have to open the session to be able to modify or remove it 
 session_start(); 

 // to change a variable, just overwrite it 
 $_SESSION['size']='large'; 

 //you can remove a single variable in the session 
 unset($_SESSION['shape']); 

 // or this would remove all the variables in the session, but not the session itself 
 session_unset(); 

 // this would destroy the session variables 
 session_destroy(); 
 ?> 

それが役に立てば幸い..

于 2013-04-11T05:22:10.750 に答える