如何解决PHP会话突然停止某些页面的工作
我碰到了一个奇怪的小故障。我以前没有任何问题,但是现在突然PHP会话仅对某些页面有效,而对其他页面无效。
这是我使用会话的方式:
ini_set('session.save_path',realpath(dirname($_SERVER['DOCUMENT_ROOT']) . '/../session'));
session_start();
if(!isset($_SESSION["account"])) {
// session does not exist
echo "<h1>session does not exist</h1>";
} else {
echo "<h1>session exists</h1>";
}
相同的代码在某些页面上不再起作用。例如,我能够很好地登录并使用大多数工具进行登录。但是,当我创建一个新文件testSession.php
时,其内容与上面显示的相同。由于某种原因,它失去了会话。
我专门使用ini_set('session.save_path',realpath(dirname($_SERVER['DOCUMENT_ROOT']) . '/../session'));
解决了类似的问题,但现在问题又回来了……为什么?
所有这一切的奇怪之处在于,我想要触发的一个php脚本之前一直没有问题。这可能是什么问题?就我所知我从未接触过代码的那部分,为什么它突然不适用于某些页面/脚本,所以我什至没有做任何改动。
解决方法
我建议制作一个session.php文件,以便您在访问以下会话所需的每个页面中调用该文件:
session.php
ini_set('session.use_only_cookies',1); // secure cookie
session_set_cookie_params(0,'/','localhost',true,true); // duration,path,domain,secure connection,httponly (secure js access)
session_start(); // start session
session_regenerate_id(); // regenerating for security issues
,然后将其添加到您的页面中:
include 'session.php';
if(!isset($_SESSION["account"])) {
echo "<h1>session does not exist</h1>";
} else {
echo "<h1>session exists</h1>";
}
,
确保您在每个页面上启动会话。如果您动态拥有它,请确保您要求输入“ xxx”;是对的。然后尝试在chrome的网络开发工具中删除phpsessionid。最后,重新启动本地服务器-wamp,xampp等。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。