我创建了一个会话变量来保存我的最后一页。如果用户登录/注销,则将其返回到同一页面。它运作良好。但是现在我通过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']);
答案 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调用,这与上述解决方案相比会更好