2011-07-02 49 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']; 
}