不允许直接访问,同时允许ajax调用

时间:2018-10-10 13:09:51

标签: javascript php ajax

我使用此代码禁止直接访问php文件

EditTextReference

我的问题是我需要以这种方式调用php

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

它还会返回xmlhttp.open("GET","getverse.php",true); 错误。

在不允许从浏览器直接访问php文件的同时,如何允许它调用php文件?

谢谢

2 个答案:

答案 0 :(得分:0)

我不确定只是一个PHP文件,还是使用任何Framework或CMS。

但是您可以尝试

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

使用

调用此文件
xmlhttp.open("GET","getverse.php?ajax=1",true);

答案 1 :(得分:0)

您可以执行以下操作:

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"));

(但至少应该注意直接在浏览器中访问PHP文件)。