PHP函数仅在不直接访问时才运行

时间:2014-02-21 17:11:44

标签: javascript php function

目前,只有当GET请求被发送到包含它的文件时,我才会运行PHP函数。我通过JavaScript将这些请求发送到PHP文件。另外,如果get请求是通过JavaScript文件发送的,而不是直接访问,我希望它只运行该函数。

例如:

run.js

function runfun(what, data) {
    $.get("files/functions.php",{
                       run:'true', 
                       what:what, 
                       data:data
            }, 
            function(data) {
            }
    }

functions.php

if (isset($_GET['run']) && isset($_GET['what']) && isset($_GET['data'])) {
    runstuff($_GET['what'], $_GET['data']); // I do NOT want this to run if
                   // the functions.php file is accessed directly and if the GET 
                   // variables are set on the page itself
}

1 个答案:

答案 0 :(得分:2)

我认为没有真正的防弹方法来实现这一点,但是,您可以使用以下内容来检测AJAX请求:

if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
    /* special ajax here */
    die($content);
}

请注意,这可能是欺骗性的。

代码取自:http://davidwalsh.name/detect-ajax

此外,正如@FDL在评论中指出的那样,你可以使用一个随机数。