PHP:同时使用GET和POST请求的原因?

PHP:同时使用GET和POST请求的原因?,php,request,http-post,httprequest,http-get,Php,Request,Http Post,Httprequest,Http Get,我正在回顾一个系统(一个旧系统),在某些情况下,它们使用POST方法以表单形式发送数据,但它们也向url发送参数,就像使用get一样 大概是这样的: echo "\n<FORM METHOD='POST' NAME='onegroup' ACTION='menu.php?sesion=".$sesion."' > <INPUT TYPE='HIDDEN' NAME='sesion' VALUE='".$sesion."'> <INPUT T

我正在回顾一个系统(一个旧系统),在某些情况下,它们使用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";
echo”\n
[...]   
\n”;
(注意,
sesion
不是打字错误,只是西班牙语中的“会话”一词)

发生的情况是“
sesion
”参数通过url和输入字段发送,因此,
$\u POST
数组和
$\u GET
数组中都会接收到“sesion”变量

为什么有必要这样做?我应该这样做吗?或者我可以把它从url上取下来,仅仅依靠
$\u POST
数据吗

我在回答的注释中读到,从GET和POST发送数据是完全可能和有效的(尽管方法本身只是GET或POST(或其他方法),在本例中是POST,因为这是表单定义的方式)。现在在这个特定的例子中,为什么有人希望通过get(通过url)和post请求发送相同的
sesion
变量(即具有相同的值)

在my menu.php脚本中,可以读取
$\u POST
$\u GET
,并且每个脚本都有其变量的“版本”,但恰好是相同的。 我也试过了,如果我没有读$\u POST或$\u GET而是读了$\u请求数组,我会把所有变量放在一起,但是在重复的情况下(
sesion
),POST版本会优先

另一件事是,它们依赖于“Register Globals”选项,因此,它们不是显式地使用
$\u GET[“sesion”]
$\u POST[“sesion”]
(甚至
$\u REQUEST[]
),而是在任何地方使用“$sesion”来使用该信息(对于请求中的任何其他变量也是如此)。再次,在这种情况下,我看到变量的后版本也具有优先权。但我能一直相信吗

我应该使用post方法并从url中删除参数吗

他们为什么要这样做,而不是把所有的东西都邮寄出去?在我看来,没有理由使用两者,特别是因为两者具有相同的价值。如果他们没有这样做,他们可以选择使用哪个版本,但事实并非如此,我想不出还有什么其他原因,那只是他们留下的东西,从未“修复”

有哪些“现实生活”的例子,其中有人需要在POST和GET请求中使用这种场景,特别是在两者中使用相同的变量名


谢谢。

如果值相同,您应该删除其中一个(最好是GET)。但是,您还需要确保对表单处理逻辑进行相应的更改,以便代码获得预期的值。最好使用$\u POST或$\u GET代替$\u请求,因为这样可以明确地知道要传递的值以及代码期望的值。例如,如果您使用$\u请求,那么GET可能会覆盖您的POST值,这可能是一个安全问题。此外,依赖register globals也不是一个好主意,因为这可能会导致安全问题,而且register global on/off设置可能因服务器而异。至于为什么会有人这样做,这可能是一个错误或缺乏关于PHP GET/POST工作方式的知识

For a real life scenario:
对于我的许多应用程序,我使用sessions并将php session_id作为一个GET参数从一页传递到另一页。每个页面还需要一个“verify.php”,用于验证会话并检查用户是否登录。如果我正在处理表单,那么我只需创建表单并将动作部分指定为:

action="form_submit_page.php?SID=<?php echo Session_ID(); ?>"
action=“form\u submit\u page.php?SID=”

表单将值作为POST从一个页面传递到另一个页面,而操作部分作为GET传递会话。

如果值相同,则应删除其中一个(最好是GET)。但是,您还需要确保对表单处理逻辑进行相应的更改,以便代码获得预期的值。最好使用$\u POST或$\u GET代替$\u请求,因为这样可以明确地知道要传递的值以及代码期望的值。例如,如果您使用$\u请求,那么GET可能会覆盖您的POST值,这可能是一个安全问题。此外,依赖register globals也不是一个好主意,因为这可能会导致安全问题,而且register global on/off设置可能因服务器而异。至于为什么会有人这样做,这可能是一个错误或缺乏关于PHP GET/POST工作方式的知识

For a real life scenario:
对于我的许多应用程序,我使用sessions并将php session_id作为一个GET参数从一页传递到另一页。每个页面还需要一个“verify.php”,用于验证会话并检查用户是否登录。如果我正在处理表单,那么我只需创建表单并将动作部分指定为:

action="form_submit_page.php?SID=<?php echo Session_ID(); ?>"
action=“form\u submit\u page.php?SID=”

表单将值作为POST从一个页面传递到另一个页面,而操作部分作为GET传递会话。

我使用查询sting参数(GET)选择活动页面和POST值来携带表单数据。这是一个合法的用例


如果数据是重复的,则终止GET。

我使用query-sting-parameters(GET)来选择活动页面,并使用POST值来携带表单数据。这是一个合法的用例


如果数据是重复的,那么杀死GET。

我知道应该使用$\u POST或$\u GET,问题是它们依赖于register globals,所以它们都不使用,也不使用$\u请求。到目前为止,我们已经控制了服务器,并且可以控制标志始终处于打开状态(以及php版本,我们将其保持在5.3,因此我们可以完全依赖于此),我将删除该特定变量的GET版本