javascript - PHP 函数仅在未直接访问时运行

标签 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
}

最佳答案

我认为没有真正可靠的方法来实现这一点,但是,您可以使用类似下面的方法来检测 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 在他们的评论中指出的那样,您可以使用随机数。

关于javascript - PHP 函数仅在未直接访问时运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21940781/

相关文章:

javascript - 函数超时 (jQuery)

javascript - 从 React fetch 调用组件方法

php - 将多维数组的路径表示为字符串(例如表单输入名称数组)

javascript - Medium-editor:如何应用多个标签包装器?

php - 获取可能的数组组合

php - 库存系统数据库设计

r - 如何修改和使用R包的功能?

javascript - 是否可以将类传递给 Javascript 函数?

javascript - 如何使用 Deck.gl 显示多个 PathLayer

javascript - 序列化多个重复项的数组