> 백엔드 개발 > PHP 튜토리얼 > 学习php时候session这一章的一个问题。

学习php时候session这一章的一个问题。

WBOY
풀어 주다: 2016-06-06 20:42:20
원래의
1163명이 탐색했습니다.

最近在学习PHP,用了细说PHP这本书,学习session的时候发现一个很奇怪的问题。

用下面的pdo对mysql 查询,然后把获得的id 和username信息存入$_session中

<code>$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);
</code>
로그인 후 복사
로그인 후 복사

在另一个页面用下面这个语句 根据session里的id 取出需要的信息

<code>$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)
</code>
로그인 후 복사
로그인 후 복사

但是问题出现了。第2个页面执行完毕后在服务器里的session文件里保存的id信息会变成页面里id这个变量的值。

也就是说第2个页面执行后变量$id 会回传进session文件里更新掉里面的值。。。

有这种机制?

回复内容:

最近在学习PHP,用了细说PHP这本书,学习session的时候发现一个很奇怪的问题。

用下面的pdo对mysql 查询,然后把获得的id 和username信息存入$_session中

<code>$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);
</code>
로그인 후 복사
로그인 후 복사

在另一个页面用下面这个语句 根据session里的id 取出需要的信息

<code>$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)
</code>
로그인 후 복사
로그인 후 복사

但是问题出现了。第2个页面执行完毕后在服务器里的session文件里保存的id信息会变成页面里id这个变量的值。

也就是说第2个页面执行后变量$id 会回传进session文件里更新掉里面的值。。。

有这种机制?

你可以在第二个页面开头打印一下session,在结尾在打印一下,看看是什么原因导致的变化。
我感觉是你session的key值重复了。直接用第二个把第一个替换了

Arrar的key值,在php内存中也是一种变量,变量名重复了

已经找到问题了。
PHP 选项 register_globals里问题。
http://blog.sina.com.cn/s/blog_6e27a45f010161sj.html
php6已经禁用这个选项了。

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿