我制作了一个用于检查颜色代码的php网页,这里是前四行
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, 我尝试将输入名称更改为其他单词,但脚本不再起作用.. 如何从网址中删除?c =?
答案 0 :(得分: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请求时,查询参数不会在url内部传递编码,而是作为请求的单独“正文”移交。该主体的内容是你最终在php中作为$ _POST超全局变量呈现的内容。
如果您想了解其工作原理,请使用wireshark
之类的网络嗅探器来转储http流量。您将看到并理解get和post之间的区别。