有两个页面,a.html 和 b.php
a.html中使用ajax访问b.php,后者也是公开在WEB上,终端用户可以访问的WEB目录中。
a.html中访问b.php可能是在点了某个按钮后才发生的。
现在我希望b.php能判断是用户直接访问,还是通过a.html来访问的,以便确定访问权限。我一开始想了个办法,但后来觉得不行:
在访问a.html时增加session值,到b.php时注销相关变量。
这样的话,只要用户在访问b.php之前先访问a.html,就可以不通过a.html来访问b.php了。

解决方案 »

  1.   

    在你的b.php加个来路判断,$_SERVER['HTTP_REFERER']
      

  2.   

    在b.php页面中判断$_SERVER['HTTP_REFERER']
    如果为空,证明为直接打开b.php
    如果不为空则
        如果包含a.html,则证明从a.html调用的
        如果不包含a.html,则证明从别的页面过来的,从这些结果你可以做任何操作
      

  3.   

    这个方法好像就是常用的图片防盗链的方法,不过PHP manual中:
    'HTTP_REFERER' 
    The address of the page (if any) which referred the user agent to the current page. This is set by the user agent. Not all user agents will set this, and some provide the ability to modify HTTP_REFERER as a feature. In short, it cannot really be trusted. 有没有更可靠一点的方法?
      

  4.   

    只要熟悉http协议,客户端的请求都是可以用程序模拟的。