WP_SIGNON(): функция авторизации пользователей в WordPress

WP_SIGNON() │ WP 2.5.0

Функция wp_signon() используется для проверки подлинности пользователя и его авторизации с возможностью выбора запоминания. Давайте разберемся, как она работает и как ее использовать.

Общая информация

Функция принимает массив с данными для авторизации, который включает следующие параметры:

  • user_login — имя пользователя.
  • user_password — пароль пользователя.
  • remember — нужно ли запоминать пользователя. Если true, куки сохранятся на более длительный срок.

Если данные для авторизации не предоставлены, функция будет использовать значения из формы входа, если такая форма настроена.

Важно!

Функция wp_signon() не устанавливает текущего пользователя. Это означает, что если вызвать эту функцию до срабатывания хука init, функция is_user_logged_in() будет возвращать false. Если требуется использовать is_user_logged_in() вместе с wp_signon(), необходимо явно вызвать wp_set_current_user().

Используемые функции

  • wp_authenticate(): проверяет учетные данные пользователя.
  • wp_set_auth_cookie(): устанавливает аутентификационные куки.

Хуки функции

  • wp_authenticate: срабатывает перед аутентификацией пользователя.
  • secure_signon_cookie: фильтрует, нужно ли использовать безопасные куки для входа.
  • wp_login: срабатывает после успешного входа пользователя.

Возвращаемое значение

Функция возвращает объект WP_User при успешном входе и объект WP_Error в случае неудачи.

Как использовать

Функция wp_signon() имеет следующий синтаксис:

$user = wp_signon( $credentials, $secure_cookie );

Параметры:

  • $credentials (массив)

    • user_login (строка): имя пользователя.
    • user_password (строка): пароль пользователя.
    • remember (true|false): нужно ли запоминать пользователя. По умолчанию false.
  • $secure_cookie (строка|true|false): использовать ли безопасные куки. По умолчанию пустая строка.

Примеры использования

Пример 1: Авторизация пользователя "Леонида"

$creds = [];
$creds['user_login'] = 'Leonid';
$creds['user_password'] = 'password';
$creds['remember'] = true;

$user = wp_signon( $creds, false );

if ( is_wp_error( $user ) ) {
   echo $user->get_error_message();
}

Примечание: Этот код должен быть выполнен до отправки заголовков и куки.

Пример 2: Авторизация с помощью данных из $_POST

Для этого необходимо передать данные в $_POST: "log", "pwd" и "rememberme".

// Предположим, что у нас уже есть определенные переменные: 
// $_POST['log'], $_POST['pwd'], $_POST['rememberme']

$user = wp_signon();

if ( is_wp_error( $user ) ) {
   echo $user->get_error_message();
}

Пример 3: Использование WP_SIGNON для SSL-сайтов

Для сайтов, требующих безопасных куков, используйте следующее:

$autologin_user = wp_signon( $creds, is_ssl() );

Если вы не указываете использование безопасных куков явно, второй аргумент по умолчанию будет установлен с учетом метода is_ssl().

Примечания

  • Глобальная переменная: $auth_secure_cookie.
  • Глобальная переменная: $wpdb (объект абстракции базы данных WordPress).

Изменения

  • С версии 2.5.0 добавлена функция wp_signon().

Таким образом, wp_signon() — это мощная функция для реализации систем авторизации на вашем сайте WordPress. Правильное ее использование позволяет эффективно управлять пользователями и их сессиями.

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *