【问题标题】:PHP Session variable not accessiblePHP 会话变量不可访问
【发布时间】:2012-02-16 09:13:07
【问题描述】:

我在访问会话变量时遇到问题。我有一页可以说 test.php,当我在这里使用 print_r($_SESSION) 时,它会打印所有会话数据。但是当我使用 <a href="test2.php">Redirect</a> 时,我无法访问 test2.php 上的会话数据,即 print_r 打印空数组,即使我的脚本顶部有 session_start()

然后我尝试了header("Location: test2.php"),现在可以访问会话数据。 但我希望页面在按钮的 onClick 上被重定向。

请帮忙..

【问题讨论】:

  • 您的 PHP 会话 ID 是在 cookie 中还是应该在 url 变量中?能贴出两个页面的代码吗?
  • 请在$_SESSIONprint_r 旁边添加一个var_dump($_COOKIES);。比较差异。
  • @hakre var_dump($_COOKIES); print NULL
  • @claude 请阅读下面我的评论以获取代码......
  • 请在没有 S 的情况下重试,$_COOKIE,我的错。它应该显示会话 id cookie。如果没有,会话丢失,session_start 将创建一个新会话。

标签: php session


【解决方案1】:

确保你有 session_start();在两个文件的头部,并且您没有在隐私浏览模式下浏览。

【讨论】:

  • 您的浏览器是否启用了cookies?
  • 您能提供这两个文件的样本吗? session_start();应该位于 test1 和 test2(以及您希望在其中进行活动会话的任何其他文件)的顶部。
  • TEST1.phpsession_start();$order_id = $_GET['order_id'];<a href="orders.php?order_id=<?php echo $enc->encrypt($order_id);?>">Purchase</a>
  • orders.php session_start(); print_r($_SESSION);
  • $_SESSION['user_id'] 最初设置在哪里?看起来你正在使用一个框架。它可能会以不同的方式存储会话。
【解决方案2】:

我在 href 中使用路径 http://localhost/project/orders.php 然后我将其更改为 orders.php 并且它有效

干杯

【讨论】:

    【解决方案3】:

    有时,使用 http 或 https 或 http://www 访问会影响会话中的变量是否被访问。请浏览所有内容以确定,因为有时保存的 url 使用 www,而会话是使用简单的 http 创建的。这对会话可访问性很重要。

    【讨论】:

    • 请在您的答案中添加一些解释,以便其他人可以从中学习。我认为会话与正在使用的协议无关
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多