2013-04-11 139 views
1

首先,我的英語不太好。不同/單獨的會話前端和後端

您好,我有問題,我的項目

我創建了一個網站,讓您登錄從前端(如成員)和管理。 我使用不同的用戶名和密碼登錄到(前端和後端),但是一旦我從後端註銷,前端也會註銷。

我認爲這是因爲我運行了session_destroy()腳本,它銷燬了包括前端會話在內的所有會話。

我試圖尋找此使用Zend FrameworkJoomlaPHP

+0

你創建這些會話變量?? – 2013-04-11 05:20:18

+0

使用不同的會話名稱應解決此問題。 – Gumbo 2013-04-11 05:21:26

+0

@Gumbo:或者在前端和支持的不同會話存儲路徑 – Victor 2013-04-11 05:52:53

回答

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(); 
?> 

希望它可以幫助..

+0

嗨,感謝您的回答, 是否可以只使用session_unset? – 2013-04-11 06:18:32

+0

你可以使用'session_unset',但只有當你使用多個會話變量時。這將取消設置所有的變量...... – 2013-04-11 06:20:19

+0

所以我可以更改註銷腳本 我的註銷腳本現在是 session_start(); session_destroy(); 我會將其更改爲 session_start(); 未設置($ _ SESSION ['username']); 未設置($ _ SESSION ['password']); 非常感謝你,Hiren,我現在會嘗試 – 2013-04-11 06:31:39

0

我想這是你的會話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! */ 
+0

嗨謝謝你的回答, 我做到了這一點,我分組的用戶(如管理員和用戶),但如果我從後端登出也登出, 我也嘗試有一個不同的表爲會員和管理員,和不同的會話名稱,但它仍然不工作:( – 2013-04-11 06:23:58

+0

@YongkiAgustinus檢查更新,這應該現在。 – Mahdi 2013-04-11 07:13:15

+0

嗨馬赫迪,非常感謝你的工作, – 2013-04-16 06:31:12