如何解决php:会话可在本地主机上运行,但服务器上
发布之前,我已阅读:
但是,我没有找到解决问题的方法。
好的,我正在编写一个使用jQuery AJAX作为用户登录页面的应用程序,以检查他们是否受到管理,然后将SESSION变量传递设置到admin.php
页面中。如果未设置SESSION,则显示403禁止页面。
我的代码已经在我的机器上工作了,但是,当我将所有内容部署到服务器后,它总是弹出禁止的403。我检查了SESSION,发现它只是Array()
,长度为0;
现在我正在尝试通过以下方式做到这一点:
ini_set('session.save_path',$sessdir);
session_start();
但是我无法在本地计算机上运行它,这是两个示例:
- 第一个php文件
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<?php
// abs path of this file
function inve(){return "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";}
// remove n items from end of a path in string format
function rewind_url($dire,$ind){
$pieces = explode('/',$dire);
for($i=0; $i<$ind; $i++){
array_pop($pieces);
}
$pieces = implode('/',$pieces);
return $pieces;
}
function put($str){
print_r("<h2>" . $str . "</h2>");
}
$sessdir = rewind_url(inve(),1);
ini_set('session.save_path',$sessdir);
session_start();
$_SESSION['name'] = 'joseph';
put($sessdir);
put(count($_SESSION));
?>
<a href='another.php'>here</a>
</body>
</html>
- 第二个php文件
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<?php
// abs path of this file
function inve(){return "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";}
// remove n items from end of a path in string format
function rewind_url($dire,$sessdir);
session_start();
put(count($_SESSION));
?>
</body>
</html>
简而言之,我想在点击链接后看到数字1。 感谢您的帮助。
解决方法
很难说,我们不知道是否启用了phpsession,我应该检出phpinfo();
在此之后,我还要检查两件事:
所有session_starts();
位于每个页面的顶部。
此外,the ini_set('session.save_path',$sessdir);
并不具有https的完整路径,而是您提供的第一个链接中说明的相对目录路径。
使用:$sessdir = dirname(dirname(__FILE__)).'/session_dir'
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。