几天前,我在 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.php
和 index.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/