gpt4 book ai didi

未存储 PHP session 数据

转载 作者:可可西里 更新时间:2023-10-31 22:53:53 24 4
gpt4 key购买 nike

我正在制作一个登录系统,但是当用户登录时,它实际上并没有存储我希望它存储在 session 中的任何数据。我什至检查了 session 的文件,它是空的。我有 session_start();在所有页面上。我还能做错什么。这是两个主要页面的代码。

登录密码:

<?
if ($DEBUG == true) {
error_reporting(E_ALL);
}
require "header.php";

require_once "dbinterface.php";
require_once "user.class.php";
require_once "config.inc.php";

$db = new db($DB['host'], $DB['user'], $DB['pass'], $DB['database']);

$u_result = $db->run("select user_id from users where user_name = '" . $db->escape($_POST['user_name']) . "'");

if ($u_result == false) {
$url = 'Location: error.php?id=8';
header($url);
}

if (count($u_result) < 1) {
$url = 'Location: error.php?id=3';
header($url);
}

$user = new user($u_result[0]['user_id']);

if ($user->match_password($_POST['pass']) == true) {
$_SESSION['authenticated'] = true;
$_SESSION['user_id'] = $u_result[0]['user_id'];
$_SESSION['user'] = $user;
} else {
$url = 'Location: error.php?id=4';
header($url);
}
session_write_close();
header('Location: index.php');

?>

包含在每个页面中的页眉:

<?php
if (!session_start()) {
$url = "Location: error.php?id=13";
header($url);
}
?>

一点背景:

  • windows 7(也在 windows 上试过
  • 服务器 2008,但目前使用 7) PHP
  • 存在 5 个本地托管问题
  • 对每个人来说问题都存在
  • 浏览器

最佳答案

这里有一些建议(我真的不知道发生了什么和/或为什么;所以它们只是建议;也许有人会解决问题^^)

首先,有几个问题:
(至少如果这些建议都不起作用,它们很重要)

  • 您使用的是哪个版本的 PHP/Apache?
  • 您使用的是 Windows 吗? Linux ?
  • 如果您在“生产”服务器上,您使用的是什么托管服务?也许它有什么特别之处?
  • 每个人都存在这个问题吗?
    • 您在浏览网站时是否总是遇到问题?
    • 当您从其他浏览器访问网站时它是否仍然存在?
    • 从另一台计算机呢?
  • 如果你使用类似var_dump($_SESSION); die; 在 session 中设置数据的脚本末尾,它给出了什么?


第一个想法:如果您设置一些 header 以禁用浏览器缓存会怎么样?
像这样的东西,例如:

session_start();
header("Cache-control: private");


第二个想法(至少如果你在 Windows 上):你有没有尝试禁用你的防病毒/防火墙?
客户端浏览器中是否正确创建了 session cookie?
如果您使用(或不使用)子域:cookie 的域是否可以?它的到期日期呢?


第三个想法:

  • 你说 error_reporting 设置为 E_ALL,这很好
  • display_errors 怎么样?是否设置为开以便显示错误?
  • PHP/Apache 的error_log 中有什么有趣的东西吗?


另一个:您确定在 session_start 之前绝对没有任何内容到达输出吗?甚至没有空格?


还有一个:您确定目录/文件的权限吗?

  • 在目录中写入权限意味着您可以创建新文件和/或删除旧文件。
    • 但是,如果我没记错的话,并不是说你可以修改它们
  • 要修改文件,您还需要对文件的写权限
    • 实际上,您的网络服务器需要对这些文件的写入权限^^

session 目录和创建的(空)文件的权限是什么?


我的想法开始用尽了……运气好的话,也许其中之一就是正确的……或者帮助您找出正确的想法!

祝你好运!

关于未存储 PHP session 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1185448/

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