Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/270.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
阻止除AJAX请求之外的对PHP文件的直接访问?_Php_Ajax - Fatal编程技术网

阻止除AJAX请求之外的对PHP文件的直接访问?

阻止除AJAX请求之外的对PHP文件的直接访问?,php,ajax,Php,Ajax,我希望在/AJAX/file.AJAX.PHP 问题是,我不希望人们能够在浏览器中键入地址来直接访问该PHP文件 有没有一种方法可以让AJAX请求访问该文件 我可以在PHP文件中检查一些东西来实现这一点吗?如果使用jQuery生成XHR,它将设置一个自定义头X-request-With。您可以检查并确定如何为您的响应服务 $isXhr = isset($_SERVER["HTTP_X_REQUESTED_WITH"]) AND strotlower($_SERVER["HTTP

我希望在
/AJAX/file.AJAX.PHP

问题是,我不希望人们能够在浏览器中键入地址来直接访问该PHP文件

有没有一种方法可以让AJAX请求访问该文件


我可以在PHP文件中检查一些东西来实现这一点吗?

如果使用jQuery生成XHR,它将设置一个自定义头
X-request-With
。您可以检查并确定如何为您的响应服务

$isXhr = isset($_SERVER["HTTP_X_REQUESTED_WITH"])
         AND strotlower($_SERVER["HTTP_X_REQUESTED_WITH"]) == "xmlhttprequest";

然而,这对于欺骗来说是微不足道的。过去,我用它来决定是呈现整个页面(如果未设置)还是页面片段(如果已设置,则注入当前页面)。

如果您没有使用
jQuery
,或者您不感兴趣/您不能使用自定义标题(与
alex
提供的内容一致),您可以在Ajax请求中简单地
发布一些数据,并在特定文件中检查数据是否已发送。如果您通过
GET
发送,它将显示在地址栏上,这就是为什么我建议
POST

<?php

if (empty($_POST['valid_ajax']))
    header('Location: /');

?>


提供手工数据并不可靠,但如果问题不是那么严重,那总比没有好。

这很有效!!!我不知道为什么在我投票之前没有人投票支持这个答案。。