2011-07-02 45 views
1

看完后:PHP混合POST和GET请求一个页面

我明白,GET用于检索的网页不改变服务器和POST是用于事物(插入,更新,删除),改变服务器。

现在我写了一个页面,该页面被一个带有参数StationNr集合的GET请求调用。用户可以填写表单并使用参数Filter集合向同一页面发出POST请求。但我不想错过参数StationNr,因此我认为我把它放到隐藏的输入字段中。但是,然后参数StationNr要么在$_GET变量(第一个呼叫)中,要么在$_POST变量(第二个呼叫)中。我可以这样做:

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

但我不喜欢这样。此外,我不想使用$_REQUEST['StationNr'],因为:When and why should $_REQUEST be used instead of $_GET/$_POST/$_COOKIE?

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

谢谢!

+0

它可能不是最干净的设计,放你肯定可以发送一个POST请求到你添加一个' m = value&...'字符串同时具有GET和POST。 –

+0

'$ _REQUEST'恶意攻击是没有根据的。随着较旧的设置,它受到cookie固定,这通常是可用性,但不是安全问题。尽管如此,它的目的是作为快捷方式(GET/POST输入参数作为别名)。 – mario

回答

2

虽然可以使用富=酒吧POST请求推GET值,我建议检查请求的方法相反:

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

只使用

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

啊,我看到了,我给了我这个答案,并在我的问题中提供了一个链接:-)因此页面被POST请求,但我也可以查询$ _GET变量? –

-2

正确的语法是:?

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