Определить, если соединение от фактического пользователя

Я написал плагин, который будет запускаться каждый раз, когда пользователь получает доступ к средству отслеживания ошибок богомола (стороннее программное обеспечение). По сути, пользователь должен перейти на целевую страницу и согласиться с моими условиями, прежде чем он сможет получить доступ к любым приложениям, включая богомола. Проблема в том, что я также использую их API (mantis connect) для добавления проблем / вложений в систему. Мой плагин вызывает проблему, когда mantis connect не может завершить соединение (выполняет функцию перенаправления).

Есть ли способ, которым я могу сделать исключение из своего кода, чтобы mantis connect игнорировался?

    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. Соединение богомола - это вызов API. Поэтому, возможно, можно было бы определить, использует ли пользователь браузер, а не вызов из скрипта, и выполнить перенаправление только в этом случае. Также приведенный выше код написан на PHP.

В качестве альтернативы, если кто-то знает об альтернативном обработчике событий, который я могу использовать, он будет выполняться только при загрузке страницы богомола, что также может решить мою проблему.

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();
      }
   }
}
Другие вопросы по тегам