代码之家  ›  专栏  ›  技术社区  ›  Wayne

允许ajax调用时不允许直接访问[duplicate]

  •  0
  • Wayne  · 技术社区  · 7 年前

    我使用这段代码来禁止直接访问php文件

    if (__FILE__ == $_SERVER['DOCUMENT_ROOT'].$_SERVER['PHP_SELF']){
      die("Direct access forbidden");
    }
    

    我的问题是我需要这样调用php

    xmlhttp.open("GET","getverse.php",true);
    

    Direct access forbidden

    谢谢

    2 回复  |  直到 7 年前
        1
  •  0
  •   Mangesh Sathe    7 年前

    但你可以试试,

    if (__FILE__ == $_SERVER['DOCUMENT_ROOT'].$_SERVER['PHP_SELF'] && !isset($_GET['ajax'])){
      die("Direct access forbidden");
    }  
    

    使用调用此文件

    xmlhttp.open("GET","getverse.php?ajax=1",true);
    
        2
  •  0
  •   Piotr Lewandowski    7 年前

    你可以这样做:

    if(isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {...}

    但请记住,无论如何,您都可以使用cURL欺骗任何标题:

    curl_setopt($ch,CURLOPT_HTTPHEADER,array("X-Requested-With : XMLHttpRequest"));