Php $\u会话变量的行为异常
最近,我在使用网站的管理区域时遇到了问题。似乎有会议的问题。为了查看Php $\u会话变量的行为异常,php,session-variables,Php,Session Variables,最近,我在使用网站的管理区域时遇到了问题。似乎有会议的问题。为了查看$\u会话,我创建了以下脚本: <? session_start(); mysql_connect("localhost", "USERNAME", "PASSWORD"); mysql_select_db("DATABASE_NAME"); if (isset($_SESSION)) { echo '<pre>session var:<br/>'; var_dump($_SESS
$\u会话
,我创建了以下脚本:
<?
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';
}
?>
按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)
再次刷新时,如下所示:
因此,它像$perm
一样被写入$\u会话['perm']
,这是不应该发生的
我做错了什么?你的PHP版本是什么?
它听起来好像被激活了,不应该被激活。通常不要使用mysql_*函数,认真使用mysqli_*数据库函数。其次,不要在同一行中调用
$perm=mysql\u fetch\u assoc(mysql\u query(..)
。将mysql\u查询的结果保存到它自己的变量中,然后使用while循环来获取mysql\u fetch\u assoc()
-另外,只需运行登录一次,在表单上添加一个触发器,因为使用isset($\u SESSION)
是非常不充分的。我以前没有遇到过这样的问题。是的,你是对的:session_start()创建了session变量,所以检查它没有用。我应该改用isset($\u SESSION['auth']),不是吗?它是5.2.17版,register\u globals
实际上设置为ON
。我无法访问php.ini
,但如果有必要,我可以向主机发送请求。但是几天前我没有遇到这些问题。
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)