Jump to content

Запрос данных

Invision Community имеет класс для работы с данными запроса, включая данные GET, POST, и REQUEST, куками и обнаружение определенной информации о запросе (например, были ли они отправлены через AJAX или нет). Вам нужно будет использовать этот класс для выполнения некоторых общих действий, работающих с программным обеспечением. Класс доступен с помощью \IPS\Requst::i() и реализует паттерн Одиночка (Singleton).

Данные GET, POST и REQUEST

Чтобы получить доступ к переменным запроса, вы просто вызываете их как свойства класса. Например, вы можете проверить, установлена ли переменная запроса и вывести её таким образом:

if( isset( \IPS\Request::i()->someVariable ) )
{
    print \IPS\Request::i()->someVariable;
}

Данные запроса в основном не изменены из первоначально представленных данных, за исключением того, что нулевые байты и символы управления RTL удаляются из ввода, и удалены слэши, если включены магические кавычки. Это означает, что все данные запроса считаются потенциально зараженными, и вам нужно будет принять меры предосторожности, чтобы не создать проблемы в безопасности, полагаясь на 'чистые' данные запроса этого класса.

Если запрос выполняется с использованием метода PUT (например в REST API в некоторых случаях), эти данные запроса также доступны через этот класс.

 

Работа с cookie

Значения Cookie доступны в свойстве cookie класса \IPS\Request.

print \IPS\Request::i()->cookie['member_id'];

Если ваш сайт использует префикс cookie, обратите внимание, что здесь он будет автоматически удалён.

Чтобы установить cookie, вы можете использовать метод setCookie. Как и при извлечении cookie, вы не должны включать префикс cookie, который используется. 

/**
     * Set a cookie
     *
     * @param    string                $name        Name
     * @param    mixed                $value        Value
     * @param    \IPS\DateTime|null    $expire        Expiration date, or NULL for on session end
     * @param    bool                $httpOnly    When TRUE the cookie will be made accessible only through the HTTP protocol
     * @param    string|null            $domain        Domain to set to. If NULL, will be detected automatically.
     * @param    string|null            $path        Path to set to. If NULL, will be detected automatically.
     * @return    bool
     */
    public function setCookie( $name, $value, $expire=NULL, $httpOnly=TRUE, $domain=NULL, $path=NULL )

Обычно вы должны оставить $domain и $path как NULL, однако при необходимости они могут быть переопределены, например, если вы работаете над интеграцией с сторонним сервисом.

Вы можете очистить все cookies авторизации с помощью метода \IPS\Request::i()->clearLoginCookies(), если необходимо, включая member_id и pass_hash, а также любые cookies пароля (где пользователь может иметь введённый пароль для доступа к форуму).

Другие вспомогательные методы

В классе \IPS\Request есть несколько вспомогательных методов, которые можно использовать при необходимости для проверки различных свойств запроса:

  • \IPS\Request::i()->isAjax() - Возвращает логическое значение true или false, указывающее, был ли запрос выполнен через AJAX.
  • \IPS\Request::i()->isSecure() - Возвращает логическое значение true или false, указывающее, был ли запрос выполнен через SSL (https).
  • \IPS\Request::i()->url() - Возвращает объект \IPS\Http\Url, представляющий запрошенный URL-адрес. Обратите внимание, что фрагменты (значения после символа хеша в URL-адресе) не отправляются на сервер и не будут доступны для проверки на уровне сервера.
  • \IPS\Request::i()->ipAddress() - Возвращает IP-адрес, используемый при выполнении текущего запроса, с учетом с учетом прокси-серверов и перенаправления, если администратор решил сделать это в админцентре.
  • \IPS\Request::i()->ipAddressIsBanned() - Возвращает логическое значение true или false, указывающее, забанен ли текущий IP-адрес запроса в бан-фильтре IP-адресов в админцентре.
  • \IPS\Request::i()->requestMethod() - Возвращает текущий метод запроса, в верхнем регистре.
  • \IPS\Request::i()->isCgi() - Возвращает логическое значение true или false, указывающее, обрабатывается ли текущий запрос CGI-оболочкой в PHP.
  • \IPS\Request::i()->floodCheck() - Проверяет настройку поискового флуда пользователя , чтобы определить, искал ли что-то пользователь в последнее время и что пользователь снова ищет через короткий промежуток времени. Если пользователь недавно выполнил поиск и этот метод вызывается до того, как завершился период времени контроля флуда, пользователю будет показана ошибка, в противном случае его время последнего поиска обновляется до текущего времени для последующих проверок.
  • \IPS\Request::i()->confirmedDelete( $title, $message, $submit ) - Когда пользователь удаляет данные, разумно утверждать, что действие было предпринято осознано, а не случайно. Чтобы облегчить это, вы можете вызвать метод confirmedDelete(), который проверит подтвердил ли пользователь удаление контента, и если нет, покажет сначала скрин подтверждения.



Messenger

    ×
    ×
    • Create New...

    Important Information

    By using our site you agree to our Privacy Policy