如何检测文件是否被访问或请求?

Bru*_*oLM 0 php ajax jquery

AI有一个PHP文件,如果用户直接访问它,他应该被重定向到另一个位置,但如果我的脚本通过ajax调用它,它应该没有什么特别的.

例如,如果用户访问

/site/page.php
Run Code Online (Sandbox Code Playgroud)

他应该被重定向到

/index.php?view=page
Run Code Online (Sandbox Code Playgroud)

但如果他index.php?view=page在文件上应该加载没有重定向.

我怎样才能做到这一点?

Art*_*cto 5

编辑:如果你想确定是否通过Javascript请求脚本,你必须以某种方式发出信号.

几个工具包定义了标题X-Requested-With.在这种情况下,您可以使用以下命令检查Javascript调用:

if (isset($_SERVER['HTTP_X_REQUESTED_WITH']) &&
        strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
    //requested with Javascript
}
Run Code Online (Sandbox Code Playgroud)

您可以检查给定结果的大小debug_backtrace.

或者(更好),您可以检查$_SERVER['SCRIPT_FILENAME']:

if (realpath(__FILE__) == realpath($_SERVER['SCRIPT_FILENAME'])) {
    //this one was requested; not in include
}
Run Code Online (Sandbox Code Playgroud)