0

可能重复:
清除搜索查询的 URL?

我做了一个用于检查颜色代码的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,我尝试将输入名称更改为其他单词,但脚本不再起作用.. 如何从 url 中删除 ?c=?

4

1 回答 1

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 之间的区别。

于 2012-10-21T16:30:52.987 回答