0

我能够成功地设置会话并将其传递给其他页面,但只能通过硬编码值或通过 POST、GET。

我正在与将 xml 数据发送到我的页面的第 3 方供应商合作,但在我的一生中,无法将我在第 1 页设置的会话值传递到下一页。

这是我在第一页上的代码示例:

session_start();

$data = $_POST['name'];
$decode = urldecode ($data);
$xml = simplexml_load_string($decode);

$username=$xml->PERSON[0]->USERID;
$email=$xml->PERSON[0]->EMAIL;

$_SESSION['username'] = $username;

echo $_SESSION['username']; (correctly displays username)

header("Location: ./next-page.php");

第二页

session_start();

echo $_SESSION['username']; 

第二页回显不显示用户名。如果 $username 值在第 1 页上被硬编码,或者如果从使用 POST 的登录页面传递到第 1 页,它确实会正确显示。

4

1 回答 1

0

我发现这个链接解决了我的问题。

http://www.ossramblings.com/simple_xml_breaks_sessions

事实证明,您不能从 SimpleXML 对象中获取响应并将其存储在会话中。您可能会认为,如果您可以键入“echo $myxml->thisnode”并获得一个字符串,那么它实际上是一个字符串,但是 PHP 会根据需要自动进行类型转换和转换 - 除非存储在会话变量中。

有一个简单的解决方案。尝试将 XML 结果字符串存储在 $_SESSION[] 变量中时使用显式类型转换:

$_SESSION['myinteger'] = (int)$myxml->myinteger;
$_SESSION['mystring'] = (string)$myxml->mystring;

所以就我而言,在第 1 页:

session_start();

$data = $_POST['name'];
$decode = urldecode ($data);
$xml = simplexml_load_string($decode);

$username=$xml->PERSON[0]->USERID;
$email=$xml->PERSON[0]->EMAIL;

$_SESSION['username'] = ($string)$username;

header("Location: ./next-page.php");
于 2013-10-08T22:32:00.097 回答