PHP将POST和GET请求混合到一个页面

PHP将POST和GET请求混合到一个页面,php,forms,post,get,Php,Forms,Post,Get,阅读后: 我理解,GET用于检索页面而不更改服务器,POST用于更改服务器的内容(插入、更新、删除) 现在我已经编写了一个页面,该页面使用参数StationNrset的GET请求进行调用。用户可以使用参数Filterset填写表单并向同一页面发出POST请求。但是我不想错过参数StationNr,因此我认为我把它放在了一个隐藏的输入字段中。但是参数StationNr要么在$\u GET变量(第一次调用)中,要么在$\u POST变量(第二次调用)中。我可以这样做: if (isset($

阅读后:

我理解,GET用于检索页面而不更改服务器,POST用于更改服务器的内容(插入、更新、删除)

现在我已经编写了一个页面,该页面使用参数
StationNr
set的GET请求进行调用。用户可以使用参数
Filter
set填写表单并向同一页面发出POST请求。但是我不想错过参数
StationNr
,因此我认为我把它放在了一个隐藏的输入字段中。但是参数
StationNr
要么在
$\u GET
变量(第一次调用)中,要么在
$\u POST
变量(第二次调用)中。我可以这样做:

if (isset($_GET['StationNr']))
    $snr = $_GET['StationNr'];
else if (isset($_POST['StationNr']))
    $nr = $_POST['StationNr'];
但我不喜欢这样。另外,我不想使用
$\u请求['StationNr']
,因为:

我认为这是一个常见的问题,但我还没有面对它,因为我是编写php页面的初学者。你是如何解决这个问题的

谢谢

只要使用

<form method="post" action="script.php?get=variables">
 <input name="your_inputs" />
</form>

只需使用

<form method="post" action="script.php?get=variables">
 <input name="your_inputs" />
</form>


正确的语法应该是:

if (isset($_GET['StationNr'])) {   
$snr = $_GET['StationNr'];
}else if (isset($_POST['StationNr']))    
$nr = $_POST['StationNr']; 
}

正确的语法应该是:

if (isset($_GET['StationNr'])) {   
$snr = $_GET['StationNr'];
}else if (isset($_POST['StationNr']))    
$nr = $_POST['StationNr']; 
}

虽然可以使用?foo=bar在POST请求中推送GET值,但我建议改为检查请求方法:

if($_SERVER['REQUEST_METHOD'] == 'POST') { ... }

虽然可以使用?foo=bar在POST请求中推送GET值,但我建议改为检查请求方法:

if($_SERVER['REQUEST_METHOD'] == 'POST') { ... }

这可能不是最干净的设计,如果您确实可以向一个地址发出POST请求,并在该地址上附加一个GET和POST的
。对于较旧的设置,它受到cookie固定的影响,这通常是一个可用性问题,但不是一个安全问题。尽管如此,它还是作为一种快捷方式(将GET/POST输入参数作为别名)。它可能不是最干净的设计,如果您可以向一个地址发出POST请求,并在该地址上附加一个
?param=value&…
字符串,使GET和POST同时存在。
$\u请求
的诽谤是没有根据的。对于较旧的设置,它受到cookie固定的影响,这通常是一个可用性问题,但不是一个安全问题。尽管如此,它的目的正是作为快捷方式(获取/发布输入参数作为别名)。啊,我明白了,我在我的问题中用一个链接给了我这个答案:-)因此,该页面是由帖子请求的,但我也可以查询$\u GET变量?啊,我明白了,我给了我这个答案,在我的问题中有一个链接:-)因此,该页面被一篇文章请求,但我也可以查询$\u GET变量?