PHP会话值未传递

时间:2013-10-07 23:18:31

标签: php xml session

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

我正在与向我的页面发送xml数据的第三方供应商合作,但就我而言,无法将我在第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页,它会正确显示。

1 个答案:

答案 0 :(得分: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");