在发布之前,我已经阅读了:
- 会话在服务器中不工作
- 会话_启动
但是,我没有找到解决这个问题的方法。
好吧,我正在编写一个应用程序,该应用程序使用jQueryAJAX作为用户登录页面,以检查他们是否是管理员,然后将SESSION变量传递到admin.php
页面。如果未设置SESSION,则显示403 Forbidden页面。
我已经在我的机器上运行了代码,然而,在我将所有东西部署到服务器后,它总是会显示403禁止。我检查了SESSION,发现它只是长度为0的Array()
;
现在我正试图通过来做到这一点
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, $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。我非常感谢你的帮助。
很难说,我们不知道是否启用了phpsession,我应该签出phpinfo((;
此外,我应该检查两件事后:
使所有的session_starts();
位于每页的顶部。
此外,the ini_set('session.save_path', $sessdir);
没有https的完整路径,而是在您提供的第一个链接中解释的相对目录路径。
使用:$sessdir = dirname(dirname(__FILE__)).'/session_dir'