如何在提交此表单时隐藏用户的URL?

时间:2010-06-09 09:59:59

标签: php javascript html apache .htaccess

我有一个包含许多字段的表单......

提交这些字段时,我使用 POST 方法隐藏传递给 PHP 页面的实际变量。

然而,我无法摆脱完整的链接。

GET 更改为 POST 确实使所有表单字段在网址中不可见,但此部分仍然可见:

 mydomain.com/bin/query#

我希望它不可见,或者说:

 mydomain.com/search

我已启用mod_rewrite因此我可以使用mod_rewrite这样做,但我是mod_rewrite的新手,所以我需要你的帮助......

我该如何隐藏此网址?

如果您需要更多输入,请告诉我......

5 个答案:

答案 0 :(得分:3)

提交a时,您必须为表单指定操作属性。我假设您的操作是mydomain.com/bin/query#,但您希望它是mydomain.com/search。然后你应该使用mydomain.com/search来执行动作和以下重写:

RewriteEngine on 
RewriteRule ^/search$ /bin/query [QSA,NC]

这会在浏览器网址中显示mydomain.com/serach

编辑:使用QSA标记,您可以将GET参数传递给查询脚本。 NC使重写不区分大小写。

您的表单应如下所示:

<form action="/search" method="post">
...
</form>

答案 1 :(得分:2)

你不应该隐藏URL,这是浪费时间。

用户的浏览器(由用户控制)将数据发送到您的服务器。用户将始终能够将他们喜欢的任何数据发送到表单处理程序(因为您无法告诉浏览器将其发送到何处而不向用户提供该信息)。使用mod_rewrite只是更改URL(因此隐藏它没有安全性好处),搜索引擎也不会发出POST请求(因此没有SEO优势)。

如果您正在寻找美容益处,那么我真的不会担心它。注意到表单提交的URL的用户数量很少,关注的数量甚至更小。

答案 2 :(得分:2)

假设您是网络世界的新手,这里有两条规则供您学习:

  1. 根据HTTP标准,必须使用GET方法进行搜索,而不是POST
  2. 隐藏网址是胡说八道。虽然你可以使用mod_rewrite来美化URL,但不要“隐藏”它。
  3. 隐藏搜索变量是无稽之谈,没有任何借口。搜索必须使用GET方法完成,而不是POST

答案 3 :(得分:1)

尝试RewriteRule ^/search /bin/query,然后您可以将表单操作更改为/ search

答案 4 :(得分:1)

您可以执行的操作是在表单处理后发出重定向。

// process form vars e.g.,
save_values($_POST);
// redirect
header('Location: /some/other/page');
exit;

浏览器用户只能看到您最终重定向的页面。如果您知道自己在做什么,仍然可以检查HTTP请求/响应以确定表单处理的位置。