gpt4 book ai didi

php - 使用 XAMPP 设置 $_SESSION 在本地主机上不起作用

转载 作者:可可西里 更新时间:2023-11-01 12:45:29 24 4
gpt4 key购买 nike

我在我的 PHP 代码中这样设置我的 session :$_SESSION['user_id'] = $login; 这似乎在上传到我的服务器并跨不同页面时工作正常,但是当我在我的本地机器上测试网站时, session 似乎在将脚本留在设置位置后立即取消设置。

我正在本地机器上使用 XAMPP 和完全相同的代码进行测试。

我不确定为什么会出现此问题,非常感谢任何有用的答案。

无效的例子:

$_SESSION['user_id'] = $login;
echo '<META HTTP-EQUIV="refresh" content="0;URL=../home.php">';

编辑 1:

这是我登录的整个功能(它是类(class)的一部分):

public function loggingIn(){
session_start();

$db = new Database('localhost','root','','userdata');
$userFunctions = new Users($db);

$username = $_POST['usernameInput'];
$password = $_POST['passwordInput'];

if(empty($username) || empty($password)){
$this->errors['u&p'] = 'Please Enter Your Username AND Password';
$this->printE();
} elseif($userFunctions->user_exists($username)===false){
$this->errors['nm'] = 'That Username/Password Combination Is Not Valid';
$this->printE();
} else {
$login = $userFunctions->login($username, $password);

if($login === false){
$this->errors['nm'] = 'That Username/Password Combination Is Not Valid';
echo 'Login Failed!';
} else {
if(!$userFunctions->economyTableExistsForUser($login)){
$userFunctions->createEconomyTableForUser($login);
}
if(!$userFunctions->schoolTableExistsForUser($login)) {
$userFunctions->createSchoolTableForUser($login);
}

$_SESSION['user_id'] = $login;

echo $_SESSION['user_id']; // working fine

header('Location: ../home.php');
}
}
}

最佳答案

假设您的家用机器没有:

session.autostart = On

在你的php.ini ,而您的另一台机器显然是。

确保您已在 PHP 代码中设置:

session_start();

PHP: session_start - Manual

如果你不这样做,那么你的 session 就不会开始,除非我的第一个猜想是正确的。

此外,您必须检查本地主机上的 PHP 版本和 php.ini 中的设置。确保存储 session 文件的目录是可写的,并且 session 文件确实存在。

编辑 1:

您最好使用 PHP 解决方案进行重定向:

header("Location: /");
exit();

编辑 2:

PHP 具有修改 HTTP header 的函数。其中一些:

编辑 3:

换行符和空格可能是个问题,但也有不可见的字符序列会导致警告:无法修改 header 信息,例如UTF-8 BOM (Byte-Order-Mark)。 .尝试重新保存您的文件,确保它保存为 UTF-8(无 BOM)

编辑 4:

要正确调试您的代码,请确保 PHP 显示所有警告和通知。在 session 开始之前运行它:

ini_set('display_errors', -1);

编辑 5:

您还必须检查 session.gc_maxlifetime 设置:

session.gc_maxlifetime
session.gc_maxlifetime specifies the number of seconds after which data will be seen as 'garbage' and cleaned up. Garbage collection occurs during session start.

编辑 6:

要在 Sublime Text 中查看空格,请编辑设置:

// Set to "none" to turn off drawing white space, "selection" to draw only the
// white space within the selection, and "all" to draw all white space
"draw_white_space": "selection",

你可以在Preferences->Settings Default中设置它。如果您编辑用户设置 Preferences->Settings - User 并按以下方式添加行:

{
"font_size": 10,
"draw_white_space": "all"
}

还要确保它显示所有其他特殊字符以正确调试您的代码!

编辑 7:

最后尝试在重定向之前添加 session_write_close();

编辑 8:

在您的 PHP 文件中,在 session_start(); 之前设置 session.save_path = "/home/username/tmp"; 指令。在 public_html 之外创建 tmp 目录。确保 tmp 目录具有 chmod 770 并使用相同的用户/组权限创建。在您的主目录中运行 ls -lsa 以检查新目录是否具有与其他目录相同的用户/组,例如 public_html。如果不是,请确保通过运行 chown username:groupname/home/username/tmp 以 root 身份更改 tmp 的权限。

关于php - 使用 XAMPP 设置 $_SESSION 在本地主机上不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19644624/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com