2016-11-04 91 views
0

就像問題所說的那樣,我該如何向URL添加一個參數?如何添加一個參數到像'?= website-name'這樣的URL

例子:

當你點擊一個鏈接,以獲得產品亨特特色產品,在URL後附加?ref=producthunt

我可以只是手動添加一個像這樣的參數到我在我的網站上的幾個鏈接?有沒有這種情況可能不是最理想的?

回答

0

URL中的參數對應於超全局$ _GET數組。 這意味着如果您的網址格式爲 www.domain.com?key1=val1 & key2 = val2, 則$ _GET [key1]包含val1,依此類推。

在鏈接中手動添加這些參數是非常合理的(典型的用例是一個登錄按鈕,它將您重定向到當前URL並附加& todo = login。然後您可以添加一些PHP代碼當$ _GET在關鍵字'todo'包含'login'值時觸發登錄過程)。

添加這些參數的另一種方式是窗體。在HTML表單中,您可以指定一個'方法',它可以是'get'或'post'。 如果您選擇「獲取」,當表單被提交時,URL將自動附加表單答案。

注意:從$ _GET直接讀取值通常是不安全的,因爲用戶可以使用任何值填充它(只需更改URL),所以最好使用可確保輸入安全的過濾器。檢查http://www.w3schools.com/php/php_filter.asp更多關於過濾器

+0

表單的另一種選擇是'post'方法,它將表單響應添加到隱藏的超全局$ _POST數組中。例如,如果表單包含密碼,則通過POST發送它們比通過URL發送它們要好(使用GET)。 – Anog

0

添加到URL的參數被稱爲查詢字符串,他們有一個格式

  • 它必須啓動意志?
  • 每paraper將&

例子來分隔:http://www.yoururl.com?name=myname&age=34&ect=somethingelse

你做的錯誤是通過把其中=不被您的Web服務器轉換? 可以考績像「?websitename = websitename」

0

查詢字符串參數是從URL中的域名和路徑與?分離並相互分離與&鍵值對,即?key=value&key2=value2

可以通過網絡服務器或服務器端語言(PHP,ASP.NET,Java)訪問客戶端(在Javascript中)和服務器端的值。

某些值應該使用函數編碼,例如encodeURIComponent以確保它們是有效的。

風險

你必須要小心的是,查詢字符串不包含任何敏感信息,如順序號,我。e ?order=5,因爲某人可以手動更改值以查看其他用戶的訂單(如果沒有其他身份驗證,則爲?order=6)。訂單值應該被加密,所以不能被猜出。此外,不要執行eval()傳遞給查詢字符串的任何代碼,因爲惡意用戶可能會更改內容以對另一個用戶執行crosssite腳本(XSS)攻擊並竊取其cookie或登錄憑據。

相關問題