我编写了一个插件,每次用户访问螳螂bug跟踪器(第三方软件)时都会执行该插件。从本质上讲,用户必须先访问目标网页并同意我的条款才能访问任何应用程序,包括mantis。问题是我也在使用他们的api(mantis connect)向系统添加问题/附件。我的插件导致mantis connect无法完成连接的问题(它正在执行重定向功能)。
有没有办法可以对我的代码进行例外处理,以便忽略mantis连接?
function hooks() {
return array(
'EVENT_PLUGIN_INIT' => 'runCheck',
);
}
//Main function which
function runCheck($p_event){
if (!$this->validSession())
$this->redirectUser();
}
例如,我想做类似的事情:
if (!$this->validSession() && !mantisConnect())
我只需要知道如何确定连接是否来自mantis connect语句。 mantis connect是一个API调用。因此,可能的选择是检测用户是使用浏览器还是来自脚本的调用,并且仅在该情况下执行重定向。上面的代码也是用PHP编写的。
或者,如果有人知道我可以使用的替代事件挂钩只会在加载螳螂页面时执行,这也可以解决我的问题。
答案 0 :(得分:1)
如果有人想知道。这是我最终使用的代码来完成这项工作。
function runCheck($p_event){
if (strpos($_SERVER['HTTP_USER_AGENT'], 'PHP-SOAP') !== false){ //check for mantis connect
if (!$this->validSession()){ //check if session is valid
$this->redirectUser();
}
}
}