2012-10-21 100 views
0

可能重複:
Clean URLs for search query?刪除查詢字符串形式的URL與htaccess的

我犯了一個PHP網頁,用於檢查的顏色代碼,這裏是第4行

if(isset($_GET['c'])) 
$hex = $_GET['c']; 
elseif(!isset($_GET['c'])) 
$hex = $_POST['c']; 

和我的htaccess有:

RewriteEngine On 
RewriteRule ^([a-zA-Z0-9]{6})$ index.php?c=$1 [L] 

如果我鍵入site.com/ffcdee它成功地顯示顏色#ffcdee 但如果我使用的輸入框:

<form action=""> 
<input type="text" name="c" > 
<input type="submit" value="Search" id="search-submit"> 
</form> 

它表明site.com/?c=ffcdee, 我試着將輸入名稱更改爲其他單詞,但腳本不再工作了。 如何從url中刪除?c =?

+0

重定向或更新每個Javascript的請求URL。 – mario

+0

還有一個問題:如果我使用輸入框輸入三位數字的顏色十六進制代碼,它可以顯示顏色(/?c = F00),但是如果我在url(/ F00)中輸入三位數字的十六進制代碼,它不起作用。 – user1727651

回答

1

只需使用HTTP POST方法代替HTTP GET:

<form action="" method="post"> 
<input type="text" name="c" > 
<input type="submit" value="Search" id="search-submit"> 
</form> 

當使用HTTP POST請求的查詢參數都沒有通過編碼的網址內,相反,他們被移交作爲一個獨立的「身體」請求。這個正文的內容就是你最終在php中作爲$ _POST超全局變量呈現的內容。

如果您想了解該作品如何使用網絡嗅探器(如wireshark)來轉儲http流量。你會看到並理解get和post之間的區別。