【问题标题】:Do not Access Superglobal $_SERVER Array Directly [duplicate]不要直接访问超全局 $_SERVER 数组 [重复]
【发布时间】:2019-01-01 22:37:17
【问题描述】:

我知道,而不是

$_POST['var_name']

我需要使用

filter_input(INPUT_POST, 'var_name')

但是如果服务器有 POST 请求,那么第一次检查呢:

if($_SERVER['REQUEST_METHOD'] == 'POST')

它有等价物吗?因为 Netbeans 给出了警告

不要直接访问超全局 $_SERVER 数组

【问题讨论】:

  • “而不是......我需要使用......” - 谁这么说的?
  • 服务器超全局数组由网络服务器填充。但超全局也包含不安全的 http 标头。这可能就是显示警告的原因。但提到的元素是安全的。
  • 从重复的帖子中,查看this answer了解具体细节,包括指向this Netbeans article的链接
  • @Jeff Netbeans 这么说(显然)。
  • @Jeff,哈哈,是的,Netbeans 就是这么说的。关于重复的帖子,我已经看到了,但它是$_POST 而不是$_SERVER

标签: php netbeans


【解决方案1】:

尝试使用这个:

$var_name = filter_input(INPUT_POST, $_POST["var_name"]);

我们有很多方法可以得到REQUEST_METHOD like:

getenv('REQUEST_METHOD');

如果我回答错了,那是因为我没有在问题中找到任何代码:)

【讨论】:

  • 您可以进一步提炼您的答案:您可以使用getenv('REQUEST_METHOD') 作为访问超级全局$_SERVER 的替代方法。 (在这种情况下,netbeans 是否仍会产生相同的警告?有什么区别?第一种方法的后果是什么?)
  • 我没有找到包含的代码,我只回答了我知道的内容:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-15
  • 2023-04-10
  • 2015-12-13
  • 1970-01-01
  • 2013-01-11
相关资源
最近更新 更多