所以...我有以下代码非常简单:
<?php echo $_GET["base_grant_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的输出...这里是代码和输出:
CODE:
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 ( )
答案 0 :(得分:1)
我遇到了同样的问题,我的网站托管公司在服务器上启用了一些mod安全规则,以防止他们所谓的“通用PHP代码注入”。不确定我是否同意存在风险,但他们禁用了它,我的脚本开始工作。