发布之前,我已阅读:
但是,我没有找到解决问题的方法。
好的,我正在编写一个使用jQuery AJAX作为用户登录页面的应用程序,以检查他们是否受到管理,然后将SESSION变量传递设置到admin.php
页面中。如果未设置SESSION,则显示403禁止页面。
我的代码已经在我的机器上工作了,但是,当我将所有内容部署到服务器后,它总是弹出禁止的403。我检查了SESSION,发现它只是Array()
,长度为0;
现在我正在尝试通过以下方式做到这一点:
ini_set('session.save_path', $sessdir);
session_start();
但是我无法在本地计算机上运行它,这是两个示例:
<!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>
<!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();
put(count($_SESSION));
?>
</body>
</html>
简而言之,我想在点击链接后看到数字1。 感谢您的帮助。
答案 0 :(得分:2)
很难说,我们不知道是否启用了phpsession,我应该检出phpinfo();
在此之后,我还要检查两件事:
所有session_starts();
位于每个页面的顶部。
此外,the ini_set('session.save_path', $sessdir);
并不具有https的完整路径,而是您提供的第一个链接中说明的相对目录路径。
使用:$sessdir = dirname(dirname(__FILE__)).'/session_dir'