我能够成功设置会话并将其传递给其他页面,但只能通过硬编码值或通过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页,它会正确显示。
答案 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");