2011-04-20 54 views
5

在表單操作中放置url get參數可以嗎?將URL參數添加到表單PHP HTML

<form method='get' action='index.php?do=search'> 
    <input name='_search' type='text' value='What are you looking for?'> 
    <button type='submit'> Search </button> 
</form> 

當我提交表單的URL被改變:

​​

我寧願網址閱讀

index.php?do=search&_search=What are you looking for? 

難道是最好的隱藏字段添加到形式

<input type='hidden' name='do' value='search' /> 
+0

是這是你會怎麼做(隱藏字段)。它的最佳做法是在查詢時使用post並獲取(使用哪個),當你確切地知道請求的內容是什麼時,比如當使用變量進行導航時,那麼evil do'ers會發現它更難以操縱查詢的效果 – 2011-04-20 02:17:32

+0

@勞倫斯,絕對有從安全角度看,GET和POST沒有區別。它們都是同樣純文本的。 GET通常用於請求(例如,獲取本文檔的ID爲5),POST通常用於需要超過幾百字節數據的任何內容(有時會截斷GET),或者提交數據進行處理。 – Brad 2011-04-20 02:28:58

+0

是啊我不是說我發現任何區別,但我通常使用後jquery ajax方法。謝謝輸入的人 – goingsideways 2011-04-20 02:34:19

回答

14

在我看來你sh應該將它們添加爲隱藏字段。有沒有點試圖通過PARAMS如果你可以通過隱藏的表單字段做

使用的是:

<input type='hidden' name='do' value='search' /> 
3

一看不出有任何理由,你爲什麼不能或不應該這樣做那樣。我首選的但處理它的方法是:

<form method='get' action='index.php'> 
    <input name='_search' type='text' value='What are you looking for?' /> 
    <submit name='do' value='Search'> 
</form> 

名稱/值對DO /搜索通過按下按鈕過去了,如果你想在窗體上創建多個動作,你就可以有不同的價值觀對於每個提交按鈕,以多種方式處理表單。

if ($_GET['do'] == "Search") { 
... do Search ... 
} else if ($_GET['do'] == "Foo") { 
... do Foo ... 
} else if ($_GET['do'] == "Bar") { 
... do Bar ... 
} 

或者您可以使用的情況下,結構:

switch($_GET['do']) { 
    case "Search": 
     ... do Search ... 
    case "Foo": 
     ... do Foo ... 
     break; 
    case "Bar": 
     ... do Bar ... 
     break; 
} 

我通常使用post自己,但我肯定會get相同的方式工作。希望這能回答你的問題。

2

我想和Teodor一樣,應該沒有理由不把變量作爲隱藏字段發送。但是,如果你有一個很好的理由這樣做...您是否嘗試過在URL的末尾添加一個&:

<form method='get' action='index.php?do=search&'> 
+1

FWIW,在acion URL的末尾添加&並不能幫助保持action URL中的參數。 – 2013-02-18 01:27:08