php只能通过特定的方式访问,仅允许从特定页面访问页面

简短的回答是-不,不可能,

严格地

讲话。

答案很长,是的,你可能会想出一个合理的

近似值

但你必须意识到这些局限性。

从根本上讲,HTTP是无状态的。无论发生什么特定操作,您的Web服务器都将看到

/other_page.html

还需要决定是否提供服务。为了有某种合理的限制,第一步是

你会

以某种方式维护服务器端状态

. 如果没有这个,您就无法将其他page.html的任何传入请求与以前的请求匹配起来。好消息是,PHP确实支持服务器端会话。

(如果没有服务器端会话,您可以尝试使用客户端会话cookie或检查referer头来实现这一点,但是对于客户机来说,这些只是他们发送给您的字符串,并且您接受了他们的承诺,因此很容易伪造)。

现在,您需要使用此会话来跟踪用户在访问另一页之前是否访问过第一页-您可以在请求第一页时在会话中设置一个变量,并在每次请求/other_page.html时,确保在服务前在会话中设置了此变量。这至少给了你一个合理的想法,他们已经访问了当前会话的第一页。

但是,您完全无法知道在浏览器中单击了什么链接来请求特定的URL,甚至无法知道是否涉及到浏览器。您的服务器只看到一个特定资源的请求和一些头。一种可能模拟这种情况的方法是在

/index.html

并将其作为查询参数添加到该页上的链接。然后将其存储在会话中,当请求其他页面检查请求是否包含具有相同随机字符串的查询参数时。

但现在是时候退后一步说-

为什么

你想这样做吗?我想不出任何好的理由来解释为什么要这样做。

这不是适当的安全措施

-你需要做好安全工作,如果这是你的动机,你应该提出要求。这也不是一个对访问者强制执行特定工作流的好方法——这是否是一个好主意是有争议的,但是不要考虑如何强制人们在B页之前访问A页,而是考虑

确切地

为什么你需要他们这样做,你的限制因素是什么,以及什么是最不具侵入性的实现它们的方式。

别忘了——

http://intranet/other_page.html

是一个统一的资源定位器,它对应于您从该页面提供的内容。如果有人有一天访问了那个地址,看到了一个有用的资源,为什么他们回来后就不能再看到它呢?我强烈建议你考虑一下为什么你想故意妨碍你的用户体验,并违背互联网对你的网站的一般运作方式。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值