2011-10-05 47 views
2

我有當這些用戶登錄分別存儲爲值1或0什麼是最好的?許多小會話值或一個大的? PHP

我想知道一個會話裝載約15-20權限設置,這將是最好有像$_SESSION['permissions']這樣的一個會話,其值爲:dothis:0,dothat:1,doanother:1等(一個大字符串),我可以用PHP分解並稍後分開,或者最好將所有這些作爲單獨的會話,只有1或0的值?

+0

有什麼不對它們存儲就像數組? – NullUserException

回答

5

,而不是一個字符串進行解析時,將它們存儲在$_SESSION數組。這使得修改單個權限而不必執行一堆字符串操作變得更容易。

session_start(); 
$_SESSION['permissions'] = array(); 
$_SESSION['permissions']['dothis'] = TRUE; 
$_SESSION['permissions']['dothat'] = FALSE; 
$_SESSION['permissions']['doanother'] = TRUE; 

附錄

您可能已經想通了這一點,但我想我想補充一點,它是最容易通過一些微小的功能,這些互動。這將節省大量的輸入(並輸入錯誤),並確保所有值都以布爾值結束。

function grant($permission) { 
    $_SESSION['permissions'][$permission] = TRUE; 
} 
function revoke($permission) { 
    $_SESSION['permissions'][$permission] = FALSE; 
} 
// Test if the user is allowed to do $permission 
// FALSE if the permission isn't set 
function user_can($permission) { 
    return isset($_SESSION['permissions'][$permission]) ? $_SESSION['permissions'][$permission] : FALSE; 
} 

的,你可以叫他們爲:

grant('dothis'); 
revoke('dothat'); 
if (user_can('doanother')) { 
    // congratulations you're allowed 
} 
+0

最終在會話數組中擁有20-30個不同的權限會是一件壞事嗎?多少是太多? – Oseer

+0

只要你對他們有明確的名字鍵,並且可以讓他們自己保持直線,20-30不會太多。爲了便於閱讀,您還應該考慮將值存儲爲布爾值TRUE/FALSE而不是1/0。 –

+0

@ user971230查看上面添加的功能。 –

4

我有一個持有的所有權限的關聯數組...

$_SESSION['permissions'] = array(
    ... 
); 
+0

我剛纔說的是:) +1 – vascowhite

+0

是的,我想到了,但忘了問這樣做。 :) 謝謝。 – Oseer

相關問題