2011-10-31 57 views
2

使用GET和POST同時靠近我頁面的頂部,我有這樣的:我不能在PHP

<?php $id = $_GET['id']; ?> 

然後,我有從POST讀某種形式的檢查條件語句:

if (isset($_POST['completeSubmit'])) { 
     //code 
} 

最後,我有一個HTML表單,它看起來像這樣:

<form action="<?php echo $_SERVER['PHP_SELF']."?id=$id"; ?>" name="complete" method="post"> 
<input type="submit" id="textButton" name="completeSubmit" value="[mark as complete]"> 
</form> 

該頁面最初通過訪問與像日的id變量GET是:

http://website.com/page.php?id=1 

所有後續表單提交(重定向到同一頁)失敗。我知道你不能在同一個請求中同時發送GET和POST,但是看到我的表單使用POST提交到$_SERVER['PHP_SELF']."?id=$id"不應該有效嗎?這是我第一次嘗試這個,所以很可能我忽略了一些微不足道的東西。

+8

這應該固有的工作 - 你可能想調查其他地區的可能的錯誤.. – jlb

+0

是的,這應該工作。 GET和POST同時確實是可能的。您可以嘗試檢查表單的HTML以查看action屬性是否正確。傾銷$ _GET和$ _POST變量。在您的目標頁面中也可能會有所幫助。 – jeanreis

+0

通常ID和NAME屬性應該是相等的...... – Fosco

回答

6

可以使用get和post在同一時間,但你不應該。如果你想繼續發送ID這個很簡單,只要:

<form ... 
    <input type="submit" ... 
    <input type="hidden" name="id" 
     value="<?php echo htmlspecialchars($_GET['id'], ENT_QUOTES); ?>" /> 
</form> 
+0

對於此解決方案,只需發送$ _GET ['id']的初始值以及您的發佈請求。這是最乾淨的方式。 – Oldskool

+0

我也試過了,它似乎沒有工作。我會繼續調查,謝謝你的提示。 – n0pe

+0

得到它的工作,原來有一個隱藏的小bug。我選擇了這種方法,因爲它更乾淨。 – n0pe

0

當然你不能使用GET和POST方法同時

但是,您可以在使用POST方法發送表單時使用查詢字符串,POST方法用於填充$ _GET數組。

要找到某個錯誤,您必須提供更多信息。至少有兩兩件事:

  • 如何HTML形式看
  • 什麼喲看到查詢字符串發佈後的形式。

和errr ...

  • 你使用任何頭中的表單處理重定向?