所以......我有以下非常简单的代码:
<?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 ( )