【发布时间】:2020-12-07 12:10:43
【问题描述】:
发帖前,我已阅读:
但是,我没有找到解决问题的方法。
好吧,我正在编写一个使用 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, $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。 非常感谢您的帮助。
【问题讨论】:
-
尝试将会话开始放在页面顶部
-
启用正确的 PHP 错误报告,我非常有信心它必须在这里告诉您与会话相关的内容。
-
对于访问者,使用会话时要注意路径,在重定向中始终使用相对路径。如果您使用绝对路径,会话将被垃圾收集。