3

我在我的网站登录时将用户 ID 设置为会话。在设置后不久回显会话变量时,它会显示出来。但在那之后,我将其重定向到另一个页面,在该页面中设置会话,然后检查会话。但是它显示未定义索引 user_id 的错误消息。此代码在 localhost 中工作,也在服务器中工作。但现在它显示错误。由于设置会话的问题,无法登录网站。

$_SESSION['user_id'] = $user_id;
header('location:home.php');

在 home.php 中

include('session.php');

在 session.php 中

session_save_path('include/session_store');
session_start();
if(!(isset($_SESSION['user_id'])))
{
header('location:signin.php');
}

根据其他 stackoverflow 用户的建议,我尝试了这个。创建了一个 test.php 文件。

session_save_path('include/session_store');
session_start();
$_SESSION['yahoo'] = 'yahoo';
header('location:test2.php');

在 test2.php

session_save_path('include/session_store');
session_start();
echo $_SESSION['yahoo'];

现在在 localhost 中打印 yahoo。但在服务器中,显示空白屏幕。 session_store 文件夹也包含一些 0kb 文件。

4

3 回答 3

0

您对include/session_store有正确的权限吗?它必须是 777。您可以打印echo session_save_path()以确保已设置该选项。最后,在不更改 save_path 的情况下,会话可以正常工作吗?您的服务器可能有一些可能对您的会话产生影响的重定向规则 (mod_proxy)。

如果你有 php 5.4 你可以尝试打印session_status() http://www.php.net/manual/it/function.session-status.php

于 2013-04-04T06:45:58.443 回答
0

确保你session_save_path('include/session_store'); session_start();在 signin.php 上做,并确保它include/session_store是可写的

你说它在本地主机上工作,那么问题肯定是 include/session_store 不可写。

于 2013-04-04T04:55:35.050 回答
0

问题可能来自存储会话的路径在您的 Web 托管文件管理器上将会话路径设置为 /tmp/

如果没有名为 tmp 的文件夹,则创建它

于 2021-11-23T13:44:47.307 回答