php $_SESSION 未通过 login.php 文件发送

标签 php session windows-xp xampp

几天前,我在 windows xp32 上创建了我的网站。然后重新安装同类型的windows(professional xp 32bit)。

现在我的网站无法正常运行。 $_SESSIONS 未发送,我想知道 Windows 是否与此有关(因为我在 msconfig->services 中关闭了一些启动服务)。 我怀疑的另一件事是 XAMPP。发现问题后,我在 Apache 中编辑了 php.ini 1000 次,但没有解决问题。 在谷歌,很多人提示常见问题。他们说他们更改了服务器,现在不发送 session 。

我是 php 新手,不知道到底发生了什么。

有人可以帮我提示问题出在哪里吗?我还想知道使用 session 替代方案是否是一个好习惯,例如,如果用户是 logged_in()->send 数据到 mysql-> SET logged_in = 1; 如果 logout() -> SET logged_in = 0。 或其他任何东西。 关于此事的每个信息都会有所帮助。谢谢!

这里是具体的代码情况: 项目链接:http://dox.bg/files/dw?a=e2f056d0f2 我有这个登录表单:

        <form action="login.php" method="post">
            <ul>
                <li>
                    <input type="text" name="username">
                </li>
                <li>
                    <input type="password" name="password">
                </li>
                <li>
                    <input type="submit" value="login">
                </li>
                <li>
                    <a href="register.php">register</a>
                </li>
            </ul>    
        </form>

在 login.php 我有这个:

...
    else 
                    {  
                    $_SESSION['user_id'] = $login;
                    //... $_SESSION['user_id'] works here and outputs the correct data - user_id
                    header('Location: index.php');
                    exit();
...

在 int.php 中(它包含在 index.php 中)我有这个:

session_start();

print_r(session_get_cookie_params()); echo '<br>'; // outputs: Array ( [lifetime] => 0 [path] => / [domain] => [secure] => [httponly] => ) 
print_r(session_status());  echo '<br>'; // output: 2

var_dump($_SESSION); // output: array(0) { } 
print_r($_SESSION);
print_r($_SESSION['user_id']); // outputs: "Notice: Undefined index: user_id in C:\xampp\htdocs\orderfood\Core\int.php on line 10"

require 'database/connect.php';
require 'functions/general.php';
require 'functions/users.php';
require 'functions/options.php';

if(logged_in() === true)//this is ok.
{

$session_user_id = $_SESSION['user_id'];  // <-------- not working...

...脚本继续

已修复。我无法准确解释问题所在,但我从 core/int.php 中删除了 session_start()(顺便说一下,路径没有写 'core/'),我在我的 index.php 和需要登录用户的文件中添加了 session_start()

这解决了我的问题。实际上,这似乎是一个愚蠢的错误。我的网站在以前的窗口中运行,但我不小心删除了它,我在墨水中提供的文件来自一个旧的备份,我相信它一直在工作,但事实并非如此。对于菜鸟的帖子很抱歉,谢谢供您注意。

最佳答案

您需要在所有文件中包含 session_start()。此外,不要使用 session_close()session_destroy(),因为它会清除所有 session 变量。

重定向时会出现问题。因此,检查 login.phpindex.php 是否在开头有 session_start()

如果您提供 PHP 文件的完整源代码,调试起来会很容易。


看到文件后:

你已经添加了这一行:

include '/core/int.php';

在所有文件中,这应该替换为:

include 'core/int.php';

这是因为,这不是 linux 机器,而且,您在这里给出了相对路径或来自 C:\XAMPP\ 的绝对路径等。希望这能解决问题。

关于php $_SESSION 未通过 login.php 文件发送,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13582650/

相关文章:

python - tf.reset_default_graph 内存泄漏

PHP session 在 CentOS 上无法使用 phpMyAdmin

php - 在 symfony4 中为 redis 设置无键前缀

php - 获取 Laravel 异常的模型

java - servlet 上的全局变量。对所有 session 是全局的,还是仅对当前 session ?

php - 如何在 Windows 上安装 cURL?

c++ - 连接两个程序,一个使用 main(),一个使用 WinMain()

php - 每个订单项的 WooCommerce 优惠券代码

php - Firebase Auth -> 使用 signInWithCustomToken 创建的用户没有电子邮件地址

c++ - QApplication::setWindowIcon 适用于 Windows XP,但不适用于 Windows 7