最近我遇到了使用我的網站的管理區域的問題。似乎有會話問題。看到發生了什麼事情與$_SESSION
,我創建了以下腳本:
<?
session_start();
mysql_connect("localhost", "USERNAME", "PASSWORD");
mysql_select_db("DATABASE_NAME");
if (isset($_SESSION)) {
echo '<pre>session var:<br/>';
var_dump($_SESSION);
$perm = mysql_fetch_assoc(mysql_query("SELECT * FROM `perm_groups` WHERE `id` = '".$_SESSION['perm']."'"));
echo '<br/><br/>permission var:<br/>';
var_dump($perm);
echo '</pre>';
} else {
echo 'no session set';
}
?>
$ _SESSION [「燙髮」]應該包含一個數字字符串指的權限組我有(「1」的ID - >「管理」) 登錄後我手動調用腳本,並得到這樣的結果:
session var:
array(4) {
["user"]=>
&string(17) "sebastian.philipp"
["auth"]=>
&bool(true)
["perm"]=>
&string(1) "1"
["llog"]=>
&string(19) "2013-08-21 09:48:38"
}
permission var:
array(7) {
["id"]=>
string(1) "1"
["name"]=>
string(4) "admin"
["create_pages"]=>
string(1) "1"
["delete_pages"]=>
string(1) "1"
["edit_pages"]=>
string(1) "1"
["manage_users"]=>
string(1) "1"
["manage_img"]=>
string(1) "1"
}
當刷新按F5頁面時,它返回以下結果:
session var:
array(4) {
["user"]=>
&string(17) "sebastian.philipp"
["auth"]=>
&bool(true)
["perm"]=>
&array(7) {
["id"]=>
string(1) "1"
["name"]=>
string(4) "admin"
["create_pages"]=>
string(1) "1"
["delete_pages"]=>
string(1) "1"
["edit_pages"]=>
string(1) "1"
["manage_users"]=>
string(1) "1"
["manage_img"]=>
string(1) "1"
}
["llog"]=>
&string(19) "2013-08-21 09:48:38"
}
permission var:
bool(false)
再次刷新的時候,是這樣的:
session var:
array(4) {
["user"]=>
&string(17) "sebastian.philipp"
["auth"]=>
&bool(true)
["perm"]=>
&bool(false)
["llog"]=>
&string(19) "2013-08-21 09:48:38"
}
permission var:
bool(false)
所以semms像$perm
被寫入$_SESSION['perm']
,這是不應該的。
我在做什麼錯?
通常不使用mysql_ *函數,認真使用mysqli_ *數據庫函數。其次,不要在同一行中調用'$ perm = mysql_fetch_assoc(mysql_query(..))'。將mysql_query的結果保存到它自己的變量中,然後使用while循環來獲取'mysql_fetch_assoc()' - 此外,只需要運行Login一次,在窗體上添加一個觸發器,就像使用'isset($ _SESSION)是相當不足的。 – MackieeE
我以前沒有遇到過這個問題。是的,你是對的:session_start()創建會話變量,因此檢查它是沒有用的。我應該使用isset($ _ SESSION ['auth'])來代替,不是嗎? – s3lph