【问题标题】:every php page creates own session每个 php 页面创建自己的会话
【发布时间】:2012-01-09 20:52:34
【问题描述】:

检查了整个网络并尝试了所有关于会话问题的可能解决方案。

我有 3 页:第一页从重定向表单中读取一些数据并在会话中存储 4 个变量。这是生成的第一个会话 ID,如果我检查 print_r($_SESSION) 一切正常。

提交时此页面的表单转到第二页,其中数据存储在 mysql 数据库中(此处没有会话操作),然后“元”重定向到第三页。

这里我尝试从会话中读取变量,但生成了一个新会话。 如果我查看我的服务器 tmp 目录,两个会话都在这里。

为什么生成新会话而不是从第一个会话读取?

  • 尝试过的页面编码:ANSI、UTF-8 w BOM、UTF-8 w BOM
  • 尝试了php.net会话手册中编写的脚本

还有其他想法吗?


代码是这样的简单会话:

第一个 php

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

已尝试第二页

session_start();
print_r($_SESSION); 

输出是Array{ id -> } 所以只有空变量

第三页

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

输出是''

【问题讨论】:

  • 发布您的代码。我们不能帮助盲目!
  • 检查会话 cookie 是否正确传播,并在每个页面请求之间保持不变。如果 cookie 中的会话 ID 发生变化,您每次都会获得一个新会话。同样,确保您的所有页面都在执行 session_start()。
  • 如果第 2 页上的“无会话操作”意味着您没有调用 session_start() - 这就是您的问题。
  • Tnx 全部回复。多项式:代码是这样的简单会话:第一个 php: session_start(); $_SESSION['id'] = $id;第二页尝试了 session_start(); print_r($_SESSION) -> 输出是 Array{ id -> } 所以只有空变量,第 3 页 session_start(); $id = $_SESSION['id'];回声 $id;和输出是''
  • 我将您评论中的(格式化)代码添加到帖子中。请记住,最好编辑您的帖子,尤其是在添加重要细节(例如代码 sn-ps)时。

标签: php session


【解决方案1】:

看起来您使用

将 $_SESSION['id'] 设置为空
$_SESSION['id'] = $id; 

因为您的脚本中的 $id 为空。删除此行。

【讨论】:

  • 不是这样的。在我的真实代码中,我放入了会话 14 变量,所有变量都是空的,id 不是会话 id,而是从用户读取的一些产品 id。在其他服务器上尝试了这个确切的代码,一切正常。此服务器不报告任何错误,jst 不起作用。在这里测试了一些只有 2 页的其他代码,并且该代码有效。
【解决方案2】:

我有一段时间遇到同样的问题,很难弄清楚。我的问题是我的网站在会话正常工作的情况下工作了一段时间,然后突然间一切都崩溃了。

显然,您的 session_save_path(),对我来说是 /var/lib/php5/,需要 777 chmod 权限。我不小心更改了它,完全中断了会话。

要修复,只需在 linux 上执行 sudo chmod -R 777 /var/lib/php5/(或任何你的 session_save_path() )。

但是会话问题非常奇怪,可能由多种原因引起...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-15
    • 2012-01-27
    • 2019-11-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多