检查ajax或php是否使用了包含的文件

时间:2013-09-09 17:19:24

标签: php javascript ajax

我创建了一个系统,其中HTML是由php或ajax构建的。因为HTML几乎一样,我决定为它创建一个包含文件,所以php和javascript可以使用该文件。问题是,是否有办法查看ajax函数或php当前是否使用了包含文件?

以下是一些示例代码,可以更好地理解我的意思:

$variable = "";

if (this include file is currently used in an ajax function) {
    $user = \'+variable[0]+\';
    $content = \'+variable[1]+\';
}

$variable .= '<div>';
$variable .=     '<a href="'.$user.'">'.$user.'</a>';
$variable .=        '<div><p>'.$content.'</p></div>';
$variable .= '</div>';

希望你理解我的意思:D

3 个答案:

答案 0 :(得分:1)

检查它是否包含在php中更可靠,因为它是服务器端控制的检查。假设该文件名为to_be_included.php

您使用的somefile.php文件中包含to_be_included.php

define("MY_APP");

然后在to_be_included.php。做一个检查:

if (!defined("MY_APP")) { 
  // accessed by ajax
} else {
  // accessed by php
}

答案 1 :(得分:0)

更多信息:http://davidwalsh.name/detect-ajax

if (strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
    $is_ajax = true;
}

取决于您使用AJAX的内容,但大多数现代库(例如jQuery)都会发送该标头。并非所有的Web服务器都提供此标头,因此它不是100%可靠。

答案 2 :(得分:0)

在你的php中,

    $ajax = 0;
    if (isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest')
    {
        $ajax = 1;
    } 
    elseif (isset($_POST['HTTP_X_REQUESTED_WITH']) && strtolower($_POST['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') //this is an optional method 
    {
         $ajax = 1;
    }

define('IS_AJAX', $ajax);

并在您的前端代码中

$.ajax({
  type: "POST",
  url: URL,
  data: {"HTTP_X_REQUESTED_WITH":"xmlhttprequest"}
}).done(function( data ) {
});

并在原始代码中

$variable = "";
if (IS_AJAX) {
    $user = \'+variable[0]+\';
    $content = \'+variable[1]+\';
}