【发布时间】:2013-08-09 19:17:24
【问题描述】:
我正在审查一个系统(一个旧系统),在某些情况下,它们使用 POST 方法以表单形式发送数据,但它们也向 url 发送参数,就像使用 get 一样。
类似这样的:
echo "\n<FORM METHOD='POST' NAME='onegroup' ACTION='menu.php?sesion=".$sesion."' >
<INPUT TYPE='HIDDEN' NAME='sesion' VALUE='".$sesion."'>
<INPUT TYPE='HIDDEN' NAME='index_login' VALUE='1'>
[...]
</FORM>\n";
(注意,sesion 不是拼写错误,只是西班牙语中的“会话”一词)
发生的情况是“sesion”参数同时通过 url 和输入字段发送,因此,“sesion”变量随后在$_POST 数组和$_GET 数组中都被接收。
为什么这是必要的,我应该这样吗?还是我可以将其从 url 中删除并仅依赖 $_POST 数据?
我在 cmets 中阅读了 this 的答案,从 GET 和 POST 发送数据是完全可能和有效的(尽管在这种情况下方法本身只是 GET 或 POST(或其他)是 POST,因为这是表单定义的方式)。现在在这种特定情况下,为什么有人要通过 get(通过 url)和 post 请求发送相同的 sesionvariable(即具有相同的值)?
在我的 menu.php 脚本中,$_POST 和 $_GET 都可以读取,并且每个都有其变量的“版本”,但它恰好是相同的。
我也玩过,看到如果不是 $_POST 或 $_GET 我读取 $_REQUEST 数组,我将所有变量放在一起,但对于重复的变量 (sesion),post 版本获得优先权。
另一件事是他们依赖“注册全局”选项,因此,他们没有明确使用$_GET["sesion"] 或$_POST["sesion"](甚至$_REQUEST[]),而是在任何地方使用'$sesion'来使用该信息(对于请求中的任何其他变量也是如此)。再次,玩弄,我看到在这种情况下,变量的 POST 版本也优先。但是我可以一直依赖它吗?
我应该只使用post方法并从url中删除参数吗?
他们为什么要这样做而不是通过邮寄方式发送所有内容?正如我所看到的,没有理由同时使用两者,特别是因为两者都具有相同的值。如果他们不这样做,他们可以选择使用哪个版本,但事实并非如此,我想不出其他任何东西,这只是他们留在那里并且从未“修复”的东西
在哪些“现实生活”示例中,有人需要将这种场景用于 POST 和 GET 请求,特别是在两者中使用相同的变量名?
谢谢。
【问题讨论】:
标签: php request http-post httprequest http-get