首先,我的英語不太好。不同/單獨的會話前端和後端
您好,我有問題,我的項目
我創建了一個網站,讓您登錄從前端(如成員)和管理。 我使用不同的用戶名和密碼登錄到(前端和後端),但是一旦我從後端註銷,前端也會註銷。
我認爲這是因爲我運行了session_destroy()
腳本,它銷燬了包括前端會話在內的所有會話。
我試圖尋找此使用Zend Framework
和Joomla
與PHP
首先,我的英語不太好。不同/單獨的會話前端和後端
您好,我有問題,我的項目
我創建了一個網站,讓您登錄從前端(如成員)和管理。 我使用不同的用戶名和密碼登錄到(前端和後端),但是一旦我從後端註銷,前端也會註銷。
我認爲這是因爲我運行了session_destroy()
腳本,它銷燬了包括前端會話在內的所有會話。
我試圖尋找此使用Zend Framework
和Joomla
與PHP
你應該針對不同的會議上創建不同的變量..
下面是一些可能的情況下,獲得便利的例子..
<?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();
?>
希望它可以幫助..
嗨,感謝您的回答, 是否可以只使用session_unset? – 2013-04-11 06:18:32
你可以使用'session_unset',但只有當你使用多個會話變量時。這將取消設置所有的變量...... – 2013-04-11 06:20:19
所以我可以更改註銷腳本 我的註銷腳本現在是 session_start(); session_destroy(); 我會將其更改爲 session_start(); 未設置($ _ SESSION ['username']); 未設置($ _ SESSION ['password']); 非常感謝你,Hiren,我現在會嘗試 – 2013-04-11 06:31:39
我想這是你的會話WH帶你登錄爲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-11 06:23:58
@YongkiAgustinus檢查更新,這應該現在。 – Mahdi 2013-04-11 07:13:15
嗨馬赫迪,非常感謝你的工作, – 2013-04-16 06:31:12
你創建這些會話變量?? – 2013-04-11 05:20:18
使用不同的會話名稱應解決此問題。 – Gumbo 2013-04-11 05:21:26
@Gumbo:或者在前端和支持的不同會話存儲路徑 – Victor 2013-04-11 05:52:53