PHP 会话未保存

2022-08-30 23:53:11

我在我网站的每个页面上的第一行都写了这个。

include("restd.php");

和 restd.php 包含以下行:

@session_start();
if(isset($_SESSION['id']))
{
}
else
{
  header("location:index.php");
}

我面临的问题是,每当我在我的网站上点击或做某事时。它把我注销并带我索引.php。

我确定它与会话有关。我尝试了每一件事来避免这个问题,但我使用了休息.php因为我不希望任何人复制某人的网址并粘贴并进入网站。

任何仅登录的人都可以查看其他人的页面。如果他们没有登录,那么他们将被重定向到索引.php

编辑:伙计们一个令人困惑的事情是,所有这些都在我的测试服务器上工作正常,这是easyPHP-5.3.8.0,但是当我将所有文件上传到我的服务器时,这个问题就出现了。


答案 1

您的会话目录(可能是 /tmp/)不可写。

请与 session_save_path() 确认它是否可写。

if (!is_writable(session_save_path())) {
    echo 'Session path "'.session_save_path().'" is not writable for PHP!'; 
}

答案 2

你真的在页面上设置了$_SESSION['id']吗?

您在这里尝试执行的操作是:

  1. 启动会话并从会话处理程序加载 $_SESSION
  2. 检查 $_SESSION 是否包含密钥“id”
  3. 重定向到索引.php如果未设置 $_SESSION['id']

你真的在索引中这样做.php吗?

session_start();
$_SESSION['id'] = something;

推荐