想通过php获取完整网址但不想获取ajax调用脚本页面

时间:2016-09-09 07:01:41

标签: php ajax session

我创建了一个会话变量来保存我的最后一页。如果用户登录/注销,则将其返回到同一页面。它运作良好。但是现在我通过notify.php页面每5秒间隔进行一次ajax调用以发出新的评论通知。所以,如果我登录/注销,现在我的脚本将我返回到notify.php页面。出于某种原因,我无法避免ajax通话。

那么,有没有办法避免将所有后台脚本页面设置为会话变量?

这是我的会话变量代码:

if(isset($_SESSION['url'])){
     $this->refer = $_SESSION['url'];
  }else{
     $this->refer = "/";
  }

/* Set current url */
  $this->url = $_SESSION['url'] = basename($_SERVER['REQUEST_URI']);

1 个答案:

答案 0 :(得分:0)

您需要检查HTTP_X_REQUESTED_WITH标头值。如果它是xmlhttprequest那么它就是一个AJAX请求。

所以你的代码看起来像这样,

if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
       // It's an AJAX call.
}
else {
      // Save last visited URL here..
}
  

尽管可以轻松更改这些值,因为它们来自客户端,我们无法信任该数据。

如果您只有URL用于AJAX的单个或几个,您可以直接将URL与它们进行比较以过滤掉AJAX调用,这与上述解决方案相比会更好