2014-07-01 208 views
-1

我有一個搜索表單,提交按鈕看起來是這樣的:如何處理表單提交按鈕時提交按鈕沒有名字

<input type="submit" name="search_submit" value="Go"/> 

我用下面的PHP處理這種形式:

if (isset($_GET['search_submit'])) { 
    do blah 
} 

工作正常。但是我的網址包含& search_submit = Go。我不想讓它出現。

我知道要解決這個問題,我需要從我的表單輸入行中刪除name屬性。

但是,然後我的PHP不再工作,我不知道如何改變它來處理窗體。我試圖將其更改爲:

if (isset($_GET['submit'])) 

if (isset($_GET['Go'])) 

但他們也不能工作。如果任何人都可以幫我解答,那就太棒了。

+1

你爲什麼不將窗體或使用而不是使用的URL來獲取數據 – Tasos

+0

@Darren輸入AJAX所提交的字段仍然顯示在網址中。 – Padarom

+0

這是個好主意。可以將隱藏字段與提交按鈕一起傳遞? Woops根本不知道,只是讀Padarom的回覆:) – jotty

回答

1

您不能刪除輸入元素的名稱,因爲PHP不知道要查找哪個值。如果你想完全隱藏URL字符串後,使用的request method POST代替GET

<form action='myscript.php' method='POST'> 
    <input type="submit" name="search_submit" value="Go"/> 
</form> 

你的PHP將使用以下命令:

$_POST['search_submit']; // Instead of $_GET['search_submit']; 

一個很好的答案時使用GET和POST可以發現here


編輯:如果你只是想沒有按鈕,在URL顯示出來,但一切還是應該在那裏(根據您的comment),你可以簡單地刪除這兩個值和名稱提交按鈕。

而不是尋找search_submit進行設置,你可以找其他值:

if (isset($_GET['username'], $_GET['password'])) { 
    // Do your stuff here 
} 
+0

這就是我所害怕的。不幸的是我需要使用GET,因爲除了提交按鈕,我的表單的每個部分都需要位於url中(用於瀏覽器後退按鈕/書籤功能)。所以我要麼堅持提交顯示在網址中,或者希望還有另一個訣竅? – jotty

+0

我編輯了我的文章,看一看;) – Padarom

+0

恩,感謝Padarom。我認爲這可能是我唯一的選擇,但我將不得不想出使用它的一個技巧...最初的GETs(表單其餘部分中的所有東西)默認情況下都會設置爲窗體加載..所以我無法檢查它們,因爲它們在我提交之前已經設置好了。唯一沒有被默認設置的是提交按鈕:)但我想我可以使用你的解決方案背後的想法來提出一些東西......感謝提示:) – jotty

0

如果提交按鈕沒有名稱,那麼它將不會是一個成功的控件,並且根本不會出現在提交的數據中。

測試是否存在來自表單中某個其他字段的數據。

+0

希望我可以upvote這至少和其他一些職位。儘管沒有足夠的代表,但:( – jotty

1

如果你不希望顯示字符串中的URL,你可以使用POST方法。 GETPOST之間的主要區別如下所列爲:

GET

  • 的參數保持在瀏覽器歷史記錄,因爲他們是URL 的部分可以添加書籤。
  • GET方法發送時不應使用
  • 密碼或其他敏感信息。
  • 7607個字符最大值 大小。
  • 網址呢?例如:new.php類別=體育

POST

  • 參數不保存在瀏覽器歷史記錄。
  • 不能加書籤。
  • POST方法用於發送密碼或其他 敏感信息。
  • POST方法的最大大小爲8 Mb。
  • URL例如:new.php

示例代碼:

if (isset($_POST["search_submit"])) { 
    do blah 
}