2010-06-13 52 views
6

編輯:找到了答案!非常感謝大家,很多答案都有效,我選擇了隱藏字段的答案,因爲它是最簡單的:DGET和POST在同一頁上?

我正在創建評論腳本,並且遇到了問題。我不得不在同一頁面上使用$ _POST和$ _GET,我認爲這不合理。

我對PHP非常陌生,正在訓練自己。

我有一個名爲viewVerses.php的頁面 - 這有一個詩句列表。當有人跟隨回覆鏈接,

echo '<br /><a href="reply.php?verseid='.$verseid.'">Reply</a>'; 

我傳遞的verseid(評論經文)到reply.php,這樣的查詢可以與verseid進行。 (這樣用戶仍然可以看到他/她評論的詩句)。

現在reply.php具有發佈回覆的形式。形式去postReply.php

這是postReply.php

$title = $_POST['title']; 
$body = $_POST['body']; 
$verseid = $_GET[verseid]; 

我可以從URL中verseid和POST從同一個頁面的表單中的值?

如果不是,有沒有辦法可以做得更好?請記住,我是PHP新手,可能不會實現超級解決方案。我必須把它放在我的網站上。

我希望這是明確的

回答

7

我將一個隱藏的輸入添加到評論表單:

<input type="hidden" name="verseid" value=" 
<?php echo $_GET['verseid']; ?> 
" /> 

這樣一來,在postReply.php,您可以使用$_POST['verseid']訪問它。

+0

這一個可能是最簡單的解決方案!謝謝! – Phil 2010-06-13 19:57:57

1

當然,你可以,只要設置在表格中postReply.php行動?verseid = id_of_the_verse當用戶提交的答覆,接線柱陣列將是相關的回覆這樣數據並在GET中獲得經文的編號。

4

是的,你可以。表單的方法(在html頁面中)可以是POST,動作URL可以包含類似process.php?vid=1001的「GET」參數。因此,在process.php中,您將有vid作爲$ _GET,其餘數據從表格中作爲$ _POST。

0

是的,可以將GET和POST值與一個請求混合使用。您遇到的問題可能是您將GET值傳遞到reply.php,然後將POST值傳遞到postReply.php。因此,除非您告知reply.php發送該GET值,否則它將丟失。

您可以通過指定form標記的action參數中的GET值,或者甚至可以通過在表單中​​添加<input type="hidden" name="verseid" value="<?php echo $verseid; ?>" />來切換到POST值。

0

儘管看起來可能不符合直覺,但HTTP請求可以同時使用FormQueryString數據。像robertbasic說,你可以通過它們各自的數組訪問它們。

0

使用帶有隱藏輸入的表單(<input type="hidden" name="verseid" value="..." />)可能是最乾淨的做事方式。

$_GET$_POST之外,PHP還定義了$_REQUEST全局數組。一般來說,您應該使用或者$_GET$_POST,但在這種情況下verseid正在通過這兩種方法,使用$_REQUEST['verseid']可能會更方便。這樣你就不需要關心腳本中使用的HTTP方法。