$ _GET打破XML

时间:2010-11-15 22:51:50

标签: php xml flash image

我在网站上使用SimpleViewer flash图库,它使用XML文件获取有关其显示图像的信息。

对于该站点,我需要动态生成XML,因此我使用的是一个声明了text / xml Content-type的PHP文件。但是,出于某种原因,当我访问$ _GET数组中的一个GET变量时,SimpleViewer告诉我库中没有图像,即使我查看源它看起来完全相同并且格式正确。

以下是代码:

$photos = array(
 "1" => array("house1_1.JPG")
);
foreach($photos[$_GET["hid"]] as $p){
 echo '';
}

如果我用$_GET["hid"]替换"1",那么它可以正常工作,但是当我对$ _GET进行引用时,它会返回错误。

有什么理由说为什么访问GET变量会导致链接到XML(SimpleViewer flash)的脚本出现故障,还有办法解决这个问题吗?

*注意:“hid”GET变量100%肯定设置为“1”,并且没有PHP错误。 此外,当我使用$ _GET [“hid”]与“1”时,输出看起来完全相同,唯一的区别是SimpleViewer脚本拒绝看到图像在那里。 此外,空引号中的内容是一些XML,但我不知道如何让它出现在标签中......

$ photos和$ _GET的转储分别为:

array(1) {
  [1]=>
  array(1) {
    [0]=>
    string(12) "house1_1.JPG"
  }
}
array(1) {
  ["hid"]=>
  string(1) "1"
}

4 个答案:

答案 0 :(得分:0)

我首先检查并确保$ _GET [“hid”]返回“1”。如果它可能没有返回“1”那么它应该在访问$ photo的坏索引时抛出错误。

答案 1 :(得分:0)

您的请求中是否设置了$_GET hid变量?如果不是,这将触发PHP警告。

var_dump($_GET['hid']);查看$_GET变量的值并确保其符合预期。

另外,请确保将错误报告设置为至少E_ALL,并将显示错误设置为yes / true以使调试更容易。

答案 2 :(得分:0)

我认为你可能遇到了“1”和1之间存在差异的问题。当你使用像?hid = 1这样的get时,它不是作为字符串传递的,而是被转换为数字,而你的实际数组使用字符串“1”作为键。

将密钥更改为1而不是“1”或将hid强制转换为字符串。

答案 3 :(得分:-1)

问题从未得到解决 - 我最终不得不继续前进,寻求更长,更不优雅的解决方案。哦,好吧。