有很多方法,说两个简单的吧。。一是用HTTP_REFERER判断页面的来路,如果不是连接进来的,就不做任何动作。二是第一个页面post一个变量,第二页只有接收到变量才可以。。

解决方案 »

  1.   

    在文件头部,加上:
    if(!$_SERVER['HTTP_REFERER'])
       die("<h1>Access Denied</h1>");
      

  2.   

    这个所有程序最基本的问题,非php也不例外检查变量 + 检查提交方法 + 检查提交来源
    最后一个需要一点技巧,一般前两个就足够了
      

  3.   

    在A中加个隐藏域,在B中判断是否A页提交
      

  4.   

    在a.php里加上
    @define( "ROOT", "abc" );  //具体写什么随便你然后在b.php开头部分加上
    if(!defined("ROOT")){die('System Halt.');}这样就可以了
      

  5.   

    我找了一遍,没找到好办法.楼上几位所说都有一定漏洞:
    1.用一个隐藏域来post,如果有人分析了A页的代码,他也可以随意post那个变量,不管A页是什么文件,php,html也好,最终总是解析为html,总是可以看到隐藏域.2.用$_SERVER["HTTP_REFERER"]并不总有效,php手册提到这个全局变量有时会失效.3.!浪子快刀! 所说在两个文件都是php时有效, 但是如果A页是html,就瞎了.找了一圈还真没找到什么好办法.再次说明,A为html,B为php.
      

  6.   

    --------------------------------------------------------
    A为html,B为php.
    ......
    比如:A页调用了B.php,然后B.php根据A提交的数据写文件.
    那如果有人直接在浏览器输入了B.php,那不是要写很多没用的信息吗?
    怎么做到B.php直接被调用时, 什么也不做呢?
    --------------------------------------------------------
    这个俺还真不会。
      

  7.   

    同 lzkd(浪子快刀) 的方法。一般PHP程序都这么处理,其实不仅限于PHP程序。
      

  8.   

    这个是没有任何办法解决的,要是对付菜鸟的,A设置cookie,B验证cookie是否正确。
    其实你自己都说了,但不管你A怎么设置,因为A是HTML,别人都可以分析A来调用你的B.PHP。
    把A做成PHP吧。