2017-09-04 151 views
-2

我想隐藏特定页面的网址,以防止用户直接访问它。我可以隐藏特定页面的实际URL吗?

我有一个表格,用户必须在重定向到www。******。com/xyz.php之前完成。

当他们完成表单并被重定向后,是否有可能将网址显示为www。******.com?

期待任何意见!

+4

你为什么重定向他们?为什么不直接提供内容来响应表单中的POST请求? – Quentin

+1

永远不要考虑“隐藏URL”。用户看到的页面由URL确定。浏览器中显示的URL是用户看到的页面。您不能让用户访问页面A,但在地址栏中显示页面B.如果他们正在访问页面B,那么页面B将显示在他们的地址栏中,否则他们将不会访问页面B.您需要考虑的是HTTP的请求 - 响应思想,并且您的服务器始终处于完全控制它发送给什么*请求*的*响应*。网址只是其中的一小部分。 – deceze

回答

0

虽然它可能不是最佳实践,但您可以为Http Get操作提供一组html,并为Http Post操作提供另一组html。您的动作可以返回表单,对帖子动作的回复可能会返回您的第二页。

有许多的原因,这是一个坏主意,这其中就包括

  • HTTP POST指引起的状态变化,防不住访问 页面
  • 这是很容易与击败任何类型的代理或休息客户端
  • 在浏览器中的导航可能会出现意外
  • 用户将不得不填写表单为每次访问。

想出一个替代的解决方案,比如生成一个临时访问令牌或设置一个cookie来表示他们已经完成了表单,这样做会好得多。

最好的解决方案可能是待讨论,但一个简单的解决方案是有两个.PHP页面让我们称他们index.phpform.php。当GET请求www.example.com时,您的Web服务器配置为提供index.php。 (确切的做法取决于您的服务器软件)。

index.php检查cookie并重定向到form.php如果cookie未设置。 See this question/answer for more details

form.php响应由服务于HTML的形式,并通过设置cookie并且重新回到index.php一个POST请求GET请求。

+0

“轻松击败”...?它不完全应该是防御任何事情开始... – deceze

+0

@deceze“,以防止用户直接访问它” - 但也许防御还是有点过于强大 –

-2

在WWW的根目录**** COM创建一个名为.htaccess文件(如果它不存在),并添加以下行吧:。

DirectoryIndex xyz.php 

这将所有重定向请求www。****。com到www。***。com/xyz.php

因此,如果用户访问www。****。com,url(显示在浏览器中)会是一样的,但页面加载将是xyz.php

:)

+0

“在www。****。com的根目录创建一个名为.htaccess的文件“ - 您在这里对Web服务器技术进行了假设。 – Quentin

+1

“这会将所有请求重定向到www。****。com到www。***。com/xyz.php” - 问题中陈述的目标是**防止**直接访问'xyz.php '。这段代码可以直接访问两个不同的URL! – Quentin

相关问题