【问题标题】:How to auto-redirect to another PHP script passing along some data?如何自动重定向到另一个传递一些数据的 PHP 脚本?
【发布时间】:2011-06-19 18:17:36
【问题描述】:

我有一个脚本,它处理一些数据,不呈现任何文本,然后将用户重定向到最后一页。 在最后一页,用户应该能够看到一些数据。 我使用 SESSION 变量传递它,但不知何故它丢失了。 看起来像这样

$_SESSION['ses']['field1'] = $var1;
header("Location: http://page.com/another.php");
exit;

(我将 session_start() 放在两个文件的开头)。 该标头重定向是否“丢失”了会话ID? 如果这是错误的,并且不起作用,那么另一种方法是什么? 我只能想象使用 $_GET 或 cookie,但两者都不太安全且易于操作。

【问题讨论】:

  • 您是否检查过您在会话中设置的内容实际上是否具有有效值?我的意思是 $var1 设置了吗??

标签: php session redirect


【解决方案1】:

在新页面上显式发送会话 ID,如下所示:

session_start();
$_SESSION['ses']['field1'] = $var1;
header("Location: http://page.com/another.php?phpSESSID=".session­_id());

然后在新页面中,获取会话 ID 并像这样使用它

<?php
session_id($_GET['phpSESSID']);
session_start();

...

这会奏效。如果您使用的是古老的 PHP 版本,则它是 known PHP bug。此外,有时会话在重定向时确实丢失了,因此您需要获取会话 ID,通过该 ID 可以恢复会话。有些浏览器可以很好地进行重定向,但有些则不能,比如 IE6。

【讨论】:

  • @Gunner,有时会话在重定向时确实丢失了,因此您需要获取会话 ID,以便恢复会话。
  • 谢谢!这是在 Opera 11 和 PHP 5.2 上测试的。不知道为什么会这样。您的解决方案很有帮助且易于实施,因此它可能是我现在可以使用的最佳解决方案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-08-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多