Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/239.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP->;IE上的XML输出不同_Php_Xml_Flash_Internet Explorer - Fatal编程技术网

PHP->;IE上的XML输出不同

PHP->;IE上的XML输出不同,php,xml,flash,internet-explorer,Php,Xml,Flash,Internet Explorer,我一直试图用PHP输出XML,但在Internet Explorer中遇到了一个奇怪的(!)错误 预期的xml输出如下:(简化) 12 43 2. 453 我使用以下PHP代码生成此输出: echo "<?xml version='1.0' encoding='utf-8' ?> <root> <match_id>"; echo $match->getId(); echo "</match_id> <stadium_id>43

我一直试图用PHP输出XML,但在Internet Explorer中遇到了一个奇怪的(!)错误

预期的xml输出如下:(简化)


12
43
2.
453
我使用以下PHP代码生成此输出:

echo "<?xml version='1.0' encoding='utf-8' ?>
<root>
<match_id>"; echo $match->getId(); echo "</match_id>
<stadium_id>43</stadium_id>
<tribune_id>2</tribune_id>
<fan_id>".$_SESSION['user_id']."</fan_id>
</root>";
echo”
"; echo$match->getId();回声“
43
2.
“$\u会话['user\u id']
";
在Firefox中,输出与预期相同。然而,在IE中,输出如下:

<?xml version="1.0" encoding="utf-8" ?> 
<root>
  <match_id>0</match_id> 
  <stadium_id>43</stadium_id> 
  <tribune_id>2</tribune_id> 
  <fan_id /> 
</root>

0
43
2.
这真是一个令人讨厌的错误。我已经为XML输出设置了PHP头,并更改了许多其他内容,但无法使其正常工作

$match->getId()
部分仅返回一个整数,但IE始终将该值显示为0。如果我手动设置
,IE会正确显示值

顺便说一下,我在Flash(AS3)中使用了这个XML输出,这也显示了IE的相同结果


我做错了什么?

使用什么浏览器对PHP的执行方式没有影响(因为它是在服务器上执行的,而不是在浏览器中执行的)。注意,在第二个示例中,您的fan_id也是空的,这表明您的会话设置有问题。对此进行调查


已经说过了:您是否考虑使用SimeXML*()从PHP输出XML?使用它比回显标签有趣得多。

这似乎是由于会话差异造成的-IE会话没有存储用户id。类似地,
$match->getId()
实际上是
0
-我想在任何其他计算机上使用Chrome或Safari或web浏览器都会得到类似的结果

还有一件事:Flash可能不会根据请求向服务器发送PHP会话cookie,这将与IE行为/无有效会话相匹配

试试看:

  header( "content-type: application/xml; charset=ISO-8859-15" );   


我认为这不是一个XML问题。这听起来像是出了问题,可能是在会话处理中。如果将值硬编码到输出中会发生什么?我敢打赌它们一定有用。在哪一点设置了
user\u id
set?是的,通过考虑会话问题解决了这个问题。我从一开始就在使用firefox,在某些地方,会话是在firefox中设置的。但是,在IE中,不会设置会话值,因此依赖于会话值的变量显示为断开。由于长时间工作,有时其他人的眼睛很容易看到问题。谢谢你,pygorex1。
  header( "content-type: application/xml; charset=ISO-8859-15" );   
$doc = new DOMDocument;

$root = $doc->createElement('root');  
$doc->appendChild($root);

$match_id = $doc->createElement('match_id', $match->getId());
$root->appendChild($match_id);

$stadium_id = $doc->createElement('stadium_id', '43');
$root->appendChild($stadium_id);

$tribune_id = $doc->createElement('tribune_id', '2');
$root->appendChild($tribune_id, '2');

$fan_id = $doc->createElement('fan_id', $_SESSION['user_id']);
$root->appendChild($fan_id);

echo $doc->saveXML();

//$doc->save('file.xml'); // if you want to write to file