我有當這些用戶登錄分別存儲爲值1或0什麼是最好的?許多小會話值或一個大的? PHP
我想知道一個會話裝載約15-20權限設置,這將是最好有像$_SESSION['permissions']
這樣的一個會話,其值爲:dothis:0,dothat:1,doanother:1
等(一個大字符串),我可以用PHP分解並稍後分開,或者最好將所有這些作爲單獨的會話,只有1或0的值?
我有當這些用戶登錄分別存儲爲值1或0什麼是最好的?許多小會話值或一個大的? PHP
我想知道一個會話裝載約15-20權限設置,這將是最好有像$_SESSION['permissions']
這樣的一個會話,其值爲:dothis:0,dothat:1,doanother:1
等(一個大字符串),我可以用PHP分解並稍後分開,或者最好將所有這些作爲單獨的會話,只有1或0的值?
,而不是一個字符串進行解析時,將它們存儲在$_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
}
最終在會話數組中擁有20-30個不同的權限會是一件壞事嗎?多少是太多? – Oseer
只要你對他們有明確的名字鍵,並且可以讓他們自己保持直線,20-30不會太多。爲了便於閱讀,您還應該考慮將值存儲爲布爾值TRUE/FALSE而不是1/0。 –
@ user971230查看上面添加的功能。 –
我有一個持有的所有權限的關聯數組...
$_SESSION['permissions'] = array(
...
);
我剛纔說的是:) +1 – vascowhite
是的,我想到了,但忘了問這樣做。 :) 謝謝。 – Oseer
有什麼不對它們存儲就像數組? – NullUserException