PHP检测传入的jquery $ .get()请求

时间:2014-04-09 11:45:00

标签: javascript php jquery ajax wordpress

我在Wordpress header.php文件中有以下代码,如果他们未登录,则会将用户重定向到我的主页:

<?php if (!is_user_logged_in()) {
   wp_redirect( 'http://mydomain.com/');
   exit; 
} ?>

但是,这也会阻止来自其他脚本的任何$.get()调用来加载内容。所以我的问题是,有什么东西可以添加到上面的代码中来实现以下目的:

if user is not logged in but request is not $.get()
    redirect them to home page

这样我可以重定向未登录的用户,但仍然允许$ .get()ajax调用这些页面。

由于

2 个答案:

答案 0 :(得分:0)

尝试以下功能

if (!function_exists('isAjax')) {

    function isAjax()
    {
        return (bool)(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strcasecmp($_SERVER['HTTP_X_REQUESTED_WITH'], 'XMLHttpRequest') === 0);
    }
}

答案 1 :(得分:0)

如果您将$.get换成$.ajax,则可以向您的脚本发送请求标头并对其进行测试。

$.ajax({
    url: "index.php",
    headers: {"X-Origin-Header": "xhr"}
});

然后在你的PHP中

$headers = apache_request_headers();
if ($headers["X-Origin-Header"] != "xhr" && !is_user_logged_in()) {
   wp_redirect( 'http://mydomain.com/');
   exit; 
}