我创建了一个系统,其中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
答案 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]+\';
}