4

所以......我有以下非常简单的代码:

<?php echo $_GET["base_grant_url"] ?>

目前,这仅用于测试。我遇到了问题...当以下 URL 测试时:

http://localhost/?base_grant_url=htt%3A%2F%2Fn00.test.com
http://localhost/?base_grant_url=http%3A%2F%2Fn00

参数打印正确。请注意第一个中缺少“p”而没有“。” 第二个参数中的字符。当以下 2 个 URL 被传递时:

http://localhost/?base_grant_url=http%3A%2F%2Fn00.test.com
http://localhost/?base_grant_url=http%3A%2F%2Fn00.

这两个地址都没有打印出来……我花了很长时间才把我的问题缩小到这个范围,因为这是更大场景的一小部分,但这是我目前正在尝试纠正的。为什么当参数不正确但有 HTTP 和“.”时我无法获取参数 其中的字符... $_GET 函数失败?是否有一些我遗漏的通用约定或对此问题的一些简单解决方法?

编辑:所以在本地测试服务器上测试后它工作正常。我将联系我的托管服务提供商以尝试找出问题所在。

至于 print_r 的输出...这里是代码和输出:

代码:

echo "Base Grant URL = ";
echo $_GET["base_grant_url"];
echo " -=- GET = ";
print_r($_GET); 

测试 1(如果 http 不在参数中,则参数中没有“.”也有效):

URL: http://testserver.com/?base_grant_url=https%3A%2F%2Fexamplecom%2Fsplash%2Flogin%2F%3Fmauth%3DABCDEFG123456
OUTPUT: Base Grant URL = https://examplecom/splash/login/?mauth=ABCDEFG123456 -=- GET = Array ( [base_grant_url] => https://examplecom/splash/login/?mauth=ABCDEFG123456 )

测试 2(使用正确的 URL):

URL: http://testserver.com/?base_grant_url=https%3A%2F%2Fexample.com%2Fsplash%2Flogin%2F%3Fmauth%3DABCDEFG123456
OUTPUT: Base Grant URL = -=- GET = Array ( )
4

1 回答 1

1

我遇到了同样的问题,我的网站托管公司在服务器上启用了一些 mod 安全规则,以防止他们所谓的“通用 PHP 代码注入”。不确定我是否同意存在风险,但他们禁用了它并且我的脚本开始工作。

于 2013-02-18T10:36:06.993 回答