2012-02-29 150 views
6

我有一个PHP项目本质上是一个公司的订单处理网站。公司中的每个用户都可以访问该网站,并获得应用程序的特定凭证,以控制整个页面和功能的访问。PHP访客访问网站

现在我有一个允许访客访问单个页面的请求。这个请求的复杂性在于,每次访客都会有所不同,并且页面也会有所不同。基本上,它是一个门户网站,允许客户没有系统中的账户,因为这个网站没有实时订购,因此无法访问和验证订单和货运信息。

我的想法来完成,这是有一个数据库表设置为将被用于存储的UID,MD5哈希键和记录指的是目标页面访客关系表。还包括一个访问计数器和到期日期。当用户收到一封电子邮件时,他们会在电子邮件中提供链接,如http://website.com/verify/?HASH-KEY

当用户点击这个链接我期望验证的index.php页面需要在HASH,验证它在数据库中,并显示该位置而不是重定向到应用程序内的数据库中的页面引用。这将允许访客访问单个页面,而不需要公开网站的结构或已经设置的用户授权的返工。

  1. 我是否正确接近这个解决方案?
  2. 如何获取一页的内容并将其显示在另一页中?
+1

让我直截了当地说,你需要某种门口系统,允许一个非常具体的客人访问一个非常特定的页面,客人独自一人到页面,正确? – 2012-02-29 19:48:54

+0

你的总结听起来是正确的。 – Jeff 2012-02-29 19:53:07

+0

页面参考,究竟是什么?我会说你的方法是我能说的很好的方法。 – Anton 2012-02-29 19:55:29

回答

7

1。我是否以正确的方式接近这个解决方案?

是的,或多或少。

一些指针:

  • 确保您随机种子哈希生成。例如,不要简单地将MD5作为客户ID或其他小型/连续编号,因为这样会使恶意用户很容易追捕其他页面。
  • 在设定的超时后终止哈希链接。

2。我如何获取一个页面的内容并将其显示在另一个页面中?

如果你希望人们“访问和验证订单和运输信息”你应该专门创建一个页面它,而不是试图通过正常的安全网页不安全的客人。也就是说,一个'送货确认页面'根据提供的散列键入的数据填充详细信息。

+0

这是有道理的...所以,而不是将它们传递给实际页面有一个页面,可以呈现多种类型的数据,并在数据库中的记录存储信息或呈现视图的类型。你说我的朋友逻辑。 – Jeff 2012-02-29 20:00:44

+0

比我的回答更好。做得好。 – 2012-02-29 20:03:44

+0

除此之外,需要'HTTPS',并让用户手动过期散列链接,以防万一它无意中到达狂野。 – 2012-02-29 20:13:39

0

如果我正确地理解了你(而且我认为我是这么做的),那么我认为你正确地接近了这一点。

要包含另一页的内容,通常使用include

include "/path/to/page.php"; 
+0

这是一个沮丧和肮脏的解决方案......我会考虑Hamish的回应。您确实回答了这个问题,但是Hamish提供了一个可能更适合我需求的替代视图。 – Jeff 2012-02-29 20:01:39

2

我想一个遵循这个问题,以及我可以。

它似乎是你应该使用你的哈希方法,并有一个独立的页面,将生成你想要的内容,完全独立于系统的其余部分。只需将足够的数据放入哈希URL即可确定需要什么。

还有一件事要做的是在你的哈希字符串URL中使用一个时间戳,并将该时间戳的一部分随机位生成在你的哈希上。这将允许您在某个点之后使URL实质上“过期”。

例子:url.com/in/123456789865/hash-here

您可以在这个例子比较“123456789865”到当前服务器的时间,如果它过期确定。当然,你需要让你的散列加密的“123456789865”部分仍然有效