我正在审查一个系统(一个旧系统),在某些情况下,它们使用 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
不是错字,只是西班牙语中的“会话”一词)
发生的情况是“ ”参数同时通过 url 和输入字段发送,因此,然后在数组和数组sesion
中都接收到 'sesion' 变量。$_POST
$_GET
为什么这是必要的,我应该这样吗?还是我可以将其从 url 中删除并仅依赖$_POST
数据?
我已经在这个答案的评论中读到,从 GET 和 POST 发送数据是完全可能和有效的(尽管在这种情况下方法本身只是 GET 或 POST(或其他)是 POST,因为这就是方式形式定义)。现在在这种特定情况下,为什么有人要sesion
通过 get(通过 url)和 post 请求发送相同的变量(即具有相同的值)?
在我的 menu.php 脚本中,可以读取两者$_POST
,$_GET
并且每个都有其变量的“版本”,但它恰好是相同的。我也玩过,看到如果不是 $_POST 或者$_GET
我读取$_REQUEST
数组,我将所有变量放在一起,但在重复变量 ( sesion
) 的情况下,发布版本优先。
另一件事是他们依赖“Register Globals”选项,因此,他们不是显式使用$_GET["sesion"]
or $_POST["sesion"]
(甚至$_REQUEST[]
),而是在任何地方使用 '$sesion' 来使用该信息(对于请求中的任何其他变量也是如此)。再次,玩弄,我看到在这种情况下,变量的 POST 版本也优先。但我可以一直依赖它吗?
我应该只使用 post 方法并从 url 中删除参数吗?
他们为什么要这样做而不是通过邮寄方式发送所有内容?在我看来,没有理由同时使用两者,特别是因为两者都具有相同的值。如果他们不这样做,他们可以选择使用哪个版本,但事实并非如此,我想不出其他任何东西,这只是他们留在那里并且从未“修复”过的东西
有哪些“现实生活”示例,其中有人需要将这种场景与 POST 和 GET 请求一起使用,特别是在两者中使用相同的变量名?
谢谢。