我在PHP中使用simplexml_load_file和session vars时遇到了问题。
所以,我有2个PHP文件,一个生成一些XML,另一个读取它。 生成XML的文件应该读取一些已在另一个中设置的$ _SESSION变量,但它不会...
例如,假设第一个文件是:
FILE 1(读取XML)
<?
session_start();
$_SESSION['test'] = 'test!!!';
echo '<b>In file 1</b><br />';
echo 'var = '.$_SESSION['test'].'<br />'; // This correctly outputs "test!!!"
echo '<b>Reading file 2</b><br />';
$xml = simplexml_load_file("http://www.someurl.com/2.php");
echo 'var = '.$xml['var']; // This does <b>NOT</b> output "test!!!"... why?
?>
FILE 2(生成XML)
<?
header('Content-type:application/xml');
session_start();
echo '<?xml version="1.0" encoding="utf-8"?>';
echo '<test>';
echo '<var>'.$_SESSION['test'].'</var>';
echo '</test>';
?>
奇怪的是,如果我直接打开文件2,它会读取$ _SESSION [“test”]
我已经尝试过的事情(并没有奏效)
不在第二个文件中调用session_start()
在第一个文件中的simplexml_load_file之前调用session_write_close()
使用fsockopen而不是simplexml_load_file访问文件。这也会返回一个空标记...所以这不是simplexml_load_file的问题......
我有点想法......有人可以帮忙吗?
由于 尼科
答案 0 :(得分:2)
从用户/浏览器的角度来看,会话通过包含会话标识符的cookie从一个页面传递到另一个页面。
有点像这样:
这里有两个页面,但是会话标识符没有从文件1传递到文件2 - 这意味着文件2甚至不知道现有的会话。
事实上,你有两个客户,在这里: