如何解决会话不起作用
| 因此,我开发了一个基本站点,使用$ _SESSION超全局变量进行登录。 所以基本上检查登录详细信息后的代码我将用户详细信息存储到会话中,如下所示: 注意在存储这些值之前,我正在启动会话。$_SESSION[\'myusername\'] = $myusername;
$_SESSION[\'myuserid\'] = $userid;
$_SESSION[\'logged_in\'] = true;
$_SESSION[\'mystatus\'] = $res[\'user_status\'];
在我制作网站和测试的整个过程中,一切工作正常。
现在突然之间,会话无法正常工作,因此很明显,用户登录后无法访问,因为站点正在检查会话中没有的数据。
在页面上,我可以使用以下命令立即存储上述数据:
echo \"username\".$_SESSION[\'myusername\'];
echo \"status\".$_SESSION[\'mystatus\'];
和那里。但是,当用户被定向到另一个页面,而我尝试:
<?php
session_start();
include (\'functions.php\');
echo \"username\".$_SESSION[\'myusername\'];
echo \"status\".$_SESSION[\'mystatus\']; ....
值不在会话中。我检查了会话ID是否相同。
这一直有效,所以我很困惑。
有人请帮忙。
编辑
Firebug的请求标头和响应标头(会话似乎为空的页面)
Response Headersview source
Date Sat,11 Jun 2011 15:18:48 GMT
Server Apache/2.2.3 (Red Hat)
X-Powered-By PHP/5.1.6
Expires Thu,19 Nov 1981 08:52:00 GMT
Cache-Control no-store,no-cache,must-revalidate,post-check=0,pre-check=0
Pragma no-cache
Content-Length 3772
Connection close
Content-Type text/html; charset=UTF-8
Request Headersview source
Host students.ee.port.ac.uk
User-Agent Mozilla/5.0 (Windows; U; Windows NT 6.1; en-GB; rv:1.9.2.10) Gecko/20100914 Firefox/3.6.10
Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language en-gb,en;q=0.5
Accept-Encoding gzip,deflate
Accept-Charset ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive 115
Connection keep-alive
Cookie PHPSESSID=1jqqa2oeivq76h2vhtk4uflkv1
Authorization Basic ZWNlNzAxNDE6cGllczRtZTIy
解决方法
鉴于您过去几周没有更改任何东西并且它曾经可以使用,您应该检查服务器的磁盘空间是否用尽。如果这样做的话,它可能会创建对会话的引用,但是一旦页面被渲染,就可能无法将数据序列化到磁盘上。
这可以解释为什么输出$ _SESSION [...]在同一页面上有效,以及为什么在响应中设置了cookie。
, 因此,在第二个请求上保持会话似乎有问题。
会话跟踪是通过Cookie完成的,您应该(通过Live HTTP标头或Firebug)检查服务器发送的真实Cookie内容。在此Cookie中,检查路径设置和给定的服务器名称,还检查时间有效性设置,如果出现问题,浏览器将不会发送回Cookie,并且您将在每个请求上获得一个新会话。
Web开发人员工具栏也包含一些不错的cookie工具,您可以在其中显示一个页面,其中包含给定页面的所有cookie详细信息。如果没有cookie cookie,则浏览器会假定此cookie与该页面无关。大多数情况下,php设置会将cookie.domain设置强制为使用的DNS以外的其他设置。
, 检查第二个请求的会话ID是否与第一个请求的会话ID相同。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。