我有一个处理某些数据的脚本,不会呈现任何文本,然后将用户重定向到最终页面。 在最后一页上,用户应该能够看到一些数据。 我使用SESSION变量来传递它但不知何故它正在丢失。 它看起来像这样
$_SESSION['ses']['field1'] = $var1;
header("Location: http://page.com/another.php");
exit;
(我把session_start()放在两个文件的开头)。 该标题重定向是否“丢失”会话ID? 如果这是错误的,并且不会起作用,那么另一种方式是什么? 我只能想象使用$ _GET或cookies,但两者都不太安全且易于操作。
答案 0 :(得分:3)
在新页面上明确发送会话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。有些浏览器可以正常使用重定向,但有些浏览器不能像IE6一样。