2012-10-21 69 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之间的区别。