- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
所以,一段时间以来,我一直在使用以下方法检查我的帖子数据是否已设置。
if( ! empty( $_POST ) ) { }
但最近我看到很多帖子说上面是“hack”而下面是正确的“更好”方式。
if( $_SERVER[ 'REQUEST_METHOD' ] === 'POST' ) { }
最近我的意思是我最近才发现它。所有讨论后一种方法的帖子都来自 2009'ish。编码标准有点陈旧,所以我认为就此主题获得新的意见是可以的。
我开始明白这两种方法是不同的。第一个被认为是“hack”,它只检查是否设置了 post 数组,如果发出 post 请求就会发生这种情况。第二个实际上检查服务器以查看是否发出了发布请求。我想第二个可能更安全一些,但如果信息无论如何都被清理了,我看不出它有什么不同。
我还看到帖子说后者只在 PHP 版本 <= 4 中使用,因为此时 PHP 仍在使用 $_REQUEST
全局,这是 PHP 编码人员用来确定的方式某些请求参数的来源。我不确定最后一个陈述有多准确,因为旧帖子中提出的问题与我的相同。他们使用全局而不是请求。然而,这是一篇比其他任何一篇博文(2011 年)都更新的博文,而且来 self 信任的来源。所以我不确定该怎么做。
检查get时要做什么?我看到有几个地方说服务器请求方法在这种情况下似乎不起作用,我只能假设这是因为 post 取代了 get 并且请求方法只能包含一个参数。那么,如果您同时拥有发布数据和获取数据,您会怎么做?其中一篇帖子的评论建议使用全局请求而不是发布和获取,但我一直觉得这是个坏主意。
This是我能找到的最新来源,我是通过在提交前浏览旁边的类似问题来做到这一点的。它特别询问使用提交值来检查表单是否已通过,但它也提到了请求方法。很多似乎表明后者仍在普遍使用。那么这个建议仍然有效吗?检查请求方法仍然是最好的选择吗?
最佳答案
是的,它仍然存在,而且仍然 100% 可靠。 $_SERVER["REQUEST_METHOD"]
变量由 PHP 自己设置,基于用户连接使用的实际请求方法。除了更改请求类型之外,用户不能发送查询参数或以其他方式影响该 var 的值。
您的 if(!$_POST)
不可靠,因为它是可能执行一个帖子但不发送任何数据,例如:
<form method="post">
<input type="submit" />
</form>
将生成这样一个空的 $_POST 数组 - 表单中没有命名的表单元素,因此不会发送任何数据,但仍会执行 POST。
我不会担心 PHP4 没有这个超全局。 PHP 4 是一个石器时代的版本,支持 v4 但基于 v5 构建的代码必须包含如此多的丑陋/令人作呕的 hack 才能实现向后兼容性,以至于任何必须处理该代码的人都会遭受噩梦。 PHP 4 应该被认为已经死了。
关于php - $_SERVER ['REQUEST_METHOD' ] 是否仍然可行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10999293/
对于我的一个项目,我终于需要使用我的第一个多态类(std::cout 除外)。 我正在研究如何确保至少在某些情况下我有 100% 的去虚拟化调用。 这段代码是否合法可行? dynamic_cast 有
最近有一个编译问题,用这个片段说明: struct Base { }; template struct A : Base { A(){} A(Base&&) {} }; A foo()
注意:这是一个冗长的问题,需要对 MVVM“设计模式”、JSON 和 jQuery 有很好的理解.... 所以我有一个理论/主张 DHTML 中的 MVVM 是可能的 和可行的 并且想知道您是否同意/
我有一台 Mac 服务器,我正在构建 PHP 代码以允许用户上传图像、文档甚至视频文件。研究这个肯定让我很紧张,我希望上传的内容没有病毒。 自己构建一些东西会是一个巨大的挑战吗?您会这样做,还是会
根据文档,ASP.NET 项目(尚)不支持新的 PackageReference https://learn.microsoft.com/en-us/nuget/consume-packages/pa
我是一名优秀的程序员,十分优秀!