【发布时间】:2012-04-05 09:38:08
【问题描述】:
我有一个奇怪的问题。我最近将我的应用程序从本地 xampp 安装迁移到 SUSE Enterprise Server 11,一切正常,但这件事让我抓狂,我找不到解决方案。
使用以下语法通过 GET 或 POST 传递数组时:
search_dggs.php?latmin[]=52.447529&latmin[]=22&lonmin=17.56&lonmax=22.16
我只得到 latmin 的第一个元素。请注意,这只是我在其他需要传递数组的地方发生错误后尝试的一个简单示例。
print_r($_SERVER["QUERY_STRING"]);
输出
latmin[]=52.447529&latmin[]=22&lonmin=17.56&lonmax=22.16
但是
print_r($_GET);
给予
Array
(
[latmin] => Array
(
[0] => 52.447529
)
[lonmin] => 17.56
[lonmax] => 22.16
)
所有 POST 请求的情况完全相同。
我使用的是 PHP 版本 5.3.8。 我想问题是一些服务器配置,但我找不到任何关于这个问题的信息。
对 cmets 的回应:
如果我提交任意数量的变量,也会发生同样的情况。
parse_str($_SERVER["QUERY_STRING"]);
print_r($latmin);
给了
Array
(
[0] => 52.447529
)
php.ini 可以找到here
您应该能够看到行为here
这个php文件的源文件是
<?php
$test="latmin[]=52.447529&latmin[]=22&lonmin=23&lonmax=22.16";
parse_str($test);
print_r($latmin);
phpinfo();
?>
【问题讨论】:
-
我在本地添加了同样的问题,但从未弄清楚是什么原因造成的(它是在 windows 7 上使用 Zend Server 5.5)
-
你能检查一下你的url是否没有&而不是 &
-
print_r(parse_str($_SERVER["QUERY_STRING"]));给你?
-
您的代码在我的服务器上运行良好。也许这是“register_globals”问题?你能在这里发布你的 php.ini 配置吗?
-
我编辑了原始帖子以解决 cmets