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

时间:2012-10-16 10:43:12

标签: php ajax

我希望有一个使用AJAX访问./ajax/file.ajax.php

中的PHP文件的网页

麻烦的是,我不希望人们能够在浏览器中输入地址直接访问该PHP文件。

我有没有办法让它只有AJAX请求才能访问该文件?

我可以在PHP文件中检查一下是否可以实现此目的?

2 个答案:

答案 0 :(得分:4)

如果您使用jQuery创建XHR,它将设置自定义标头X-Requested-With。您可以检查并确定如何提供回复。

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

然而,欺骗这是微不足道的。在过去,我使用它来决定是渲染整个页面(如果没有设置)还是页面片段(如果设置,要注入当前页面)。

答案 1 :(得分:1)

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

<?php

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

?>

它并不稳固,因为你可以通过提供手工制作的数据来欺骗它,但是如果你的问题不是那么重要,那就更好了。