最近在学习php,用了细说php这本书,学习session的时候发现一个很奇怪的问题。
用下面的pdo对mysql 查询,然后把获得的id 和username信息存入$_session中
一、源码特点企业费用管理系统,有权限分配,登陆验证,新增角色,发布公告等二、功能介绍1、js的兼容性有个地方不行(比如模块排序,那个时候也是雏鸟一只,写了一小撮,现在用jq应该好处理的吧,ie里面没问题,大家发挥吧)2、里面的菜单和对应菜单下面的目录项可以根据需求自己添加的,有对应模块3、可以根据自己设定的角色添加对应的访问页面4、有些操作涉及到按钮权限,对于这种思路,我粗粗的写了2个自定义控件,
$statement = $pdo->prepare("SELECT id,username FROM user WHERE username = ? and userpwd = ?");
$statement->execute(array($_POST["username"],md5($_POST["password"])));
$_SESSION = $statement->fetch(PDO::FETCH_ASSOC);
在另一个页面用下面这个语句 根据session里的id 取出需要的信息
$statement = $pdo->prepare("SELECT id,mailtitle,maildt FROM mail WHERE uid = ?");
$statement->execute(array($_SESSION["id"]));
list(id,$mailtitle,$maildt) = $statement->fetch(PDO::FETCH_NUM)
但是问题出现了。第2个页面执行完毕后在服务器里的session文件里保存的id信息会变成页面里id这个变量的值。
也就是说第2个页面执行后变量$id 会回传进session文件里更新掉里面的值。。。
立即学习“PHP免费学习笔记(深入)”;
有这种机制?
回复内容:
最近在学习php,用了细说php这本书,学习session的时候发现一个很奇怪的问题。
用下面的pdo对mysql 查询,然后把获得的id 和username信息存入$_session中
$statement = $pdo->prepare("SELECT id,username FROM user WHERE username = ? and userpwd = ?");
$statement->execute(array($_POST["username"],md5($_POST["password"])));
$_SESSION = $statement->fetch(PDO::FETCH_ASSOC);
在另一个页面用下面这个语句 根据session里的id 取出需要的信息
$statement = $pdo->prepare("SELECT id,mailtitle,maildt FROM mail WHERE uid = ?");
$statement->execute(array($_SESSION["id"]));
list(id,$mailtitle,$maildt) = $statement->fetch(PDO::FETCH_NUM)
但是问题出现了。第2个页面执行完毕后在服务器里的session文件里保存的id信息会变成页面里id这个变量的值。
也就是说第2个页面执行后变量$id 会回传进session文件里更新掉里面的值。。。
立即学习“PHP免费学习笔记(深入)”;
有这种机制?
你可以在第二个页面开头打印一下session,在结尾在打印一下,看看是什么原因导致的变化。
我感觉是你session的key值重复了。直接用第二个把第一个替换了
Arrar的key值,在php内存中也是一种变量,变量名重复了
已经找到问题了。
PHP 选项 register_globals里问题。
http://blog.sina.com.cn/s/blog_6e27a45f010161sj.html
php6已经禁用这个选项了。










