【问题标题】:PHP get function not grabbing parameterPHP获取函数不抓取参数
【发布时间】:2013-02-14 07:07:29
【问题描述】:

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

<?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 ( )

【问题讨论】:

  • 对我来说工作正常,可能是一些服务器问题
  • 完美运行...获取 base_grant_url 值没有问题...
  • 它工作正常。我希望您使用的是正确的 URL。例如,如果你在 test.php 中写了,你使用 http://localhost/test.php?base_grant_url=htt%3A%2F%2Fn00.test.com
  • 您是否有一个 RewriteRule 可能会删除可能危险的查询字符串或据称可以防止注入?
  • 这不是清空 $_GET 的解决方案,但为什么不使用 base64_encode/decode 之类的东西对 URL 进行编码?

标签: php url get


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-12-19
    • 2014-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-01
    • 2017-03-16
    相关资源
    最近更新 更多