2013-05-09 43 views
0

遇到了我已經構建的窗體的問題。用戶在地址字段中輸入散列(#)作爲他們的地址。當提交表單後將他們的地址放入查詢字符串中時,所有的GET變量都會在具有#的字段之後中斷。任何人都知道爲什麼會發生?我是否需要將#轉換爲不同的字符或使用其他類型的編碼?這是我從查詢字符串抓住值頁面上的代碼..#查詢字符串中斷php GET

<?php echo $_GET["address"]; ?><br/> // if this field has a # in the value, the GET variables below do not work.. 
<?php echo $_GET["city"]; ?><br/> 
<?php echo $_GET["state"]; ?> 
+0

[有點相關](http://stackoverflow.com/questions/8528925/get-variable-with-messed-up-encoding) – George 2013-05-09 17:32:47

回答

0

A #是URL中的有效錨符號,僅對客戶端瀏覽器有意義。

很可能你應該使用POST來表示這個表單而不是GET,在這一點上這個問題就會消失。

通常,一個好的經驗法則是在任何用戶希望URL可以導航的情況下使用URL參數(GET),並且這種導航不會更改服務器上的任何數據(或者執行觸發電子郵件等)。一個很好的例子可能是在電子商務目錄應用程序的URL中使用產品ID來確定在頁面上顯示的產品。

對於要更改服務器上的數據或觸發某個頁面的基本導航不應觸發的某些操作,通常應使用POST。基於前面的電子商務應用程序示例,您通常可以使用POST將項目添加到用戶購物車。

-1
打造您的查詢字符串

URL中的哈希是文檔片段,並由瀏覽器讀取。因此,在哈希登錄URL之後的任何內容都不會作爲查詢傳送到服務器。你需要URL編碼散列(通過JavaScript我假設)。請參閱:http://www.w3schools.com/tags/ref_urlencode.asp