wp_signon() WP 2.5.0

Авторизує користувача, за вказаним логіном/email, паролем та параметром remember .

Функції потрібно передати масив, з ключами: user_login , user_password , remember . Якщо масив не вказано, то функція намагається отримати ці дані з глобальної змінної $_POST .

Час життя куків авторизації, встановлюється з урахуванням параметра ‘remember’ .

Функція не встановлює поточного користувача. Це означає, якщо функція викликана до події wp_set_current_user() .

Замінює застарілу функцію: wp_login() .

Функцію потрібно використовувати до виведення будь-якого контенту (тексту, HTML) на сторінку, тому що функція встановлює куки, які після виводу контенту не можуть бути…

Якщо потрібно де-авторизувати користувача, використовуйте wp_logout() .

Працює на основі:
wp_authenticate() ,
wp_set_auth_cookie()

Хуки з функції
wp_signon($credentials, $secure_cookie);
$credentials
(масив)

Дані про користувача, котрого потрібно авторизувати.

Якщо не вказано, намагається отримати з глобальної змінної $_POST

array(
	'user_login' => $_POST['log'],
	'user_password' => $_POST['pwd'],
	'remember' => $_POST['rememberme'],
)

За замовчуванням: array()$_POST )

$secure_cookie
(логічний)

Чи потрібно використовувати захисні куки?

Яке ім’я кукі використовувати? Береться з констант:

  • При true – SECURE_AUTH_COOKIE
  • При false – AUTH_COOKIE .

Типово: false – is_ssl()

Приклади

Приклад авторизації на основі даних, переданих у $_POST .

$user = wp_signon();

// авторизація не вдалася
if ( is_wp_error($user) ) {
	echo $user->get_error_message();
}
0

#1 Приклад авторизації користувача Leonid:

$creds = array();
$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();
}
0

#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();
}

нотатки

  • Global. Рядок. $auth_secure_cookie

список змін

З версії 2.5.0Введено.

Код wp_signon() WP 6.0.2

function wp_signon( $credentials = array(), $secure_cookie = '' ) {
	if ( empty( $credentials ) ) {
		$credentials = array(); // Back-compat for plugins passing an empty string.

		if ( ! empty( $_POST['log'] ) ) {
			$credentials['user_login'] = wp_unslash( $_POST['log'] );
		}
		if ( ! empty( $_POST['pwd'] ) ) {
			$credentials['user_password'] = $_POST['pwd'];
		}
		if ( ! empty( $_POST['rememberme'] ) ) {
			$credentials['remember'] = $_POST['rememberme'];
		}
	}

	if ( ! empty( $credentials['remember'] ) ) {
		$credentials['remember'] = true;
	} else {
		$credentials['remember'] = false;
	}

	/**
	 * Fires before the user is authenticated.
	 *
	 * variables passed to callbacks are passed by reference,
	 * and can be modified by callback функцій.
	 *
	 * @ Since 1.5.1
	 *
	 * @todo Decide whether to deprecate wp_authenticate action.
	 *
	 * @param string $user_login Username (passed by reference).
	 * @param string $user_password User password (passed by reference).
	 */
	do_action_ref_array( 'wp_authenticate', array( &$credentials['user_login'], &$credentials['user_password'] ) ));

	if ( '' === $secure_cookie ) {
		$secure_cookie = is_ssl();
	}

	/**
	 * Filters whether to use a secure sign-on cookie.
	 *
	 * @ Since 3.1.0
	 *
	 * @param bool $secure_cookie Whether use a secure sign-on cookie.
	 * @param array $credentials {
	 * Array of entered sign-on data.
	 *
	 * @type string $user_login Username.
	 * @type string $user_password Password entered.
	 * @type bool $remember Whether to 'remember' the user. Increases the time
	 * that the cookie will be kept. Default false.
	 * }
	 */
	$secure_cookie = apply_filters( 'secure_signon_cookie', $secure_cookie, $credentials);

	Global $auth_secure_cookie; // XXX ugly hack to pass this to wp_authenticate_cookie().
	$auth_secure_cookie = $secure_cookie;

	add_filter( 'authenticate', 'wp_authenticate_cookie', 30, 3);

	$user = wp_authenticate( $credentials['user_login'], $credentials['user_password'] );

	if ( is_wp_error( $user ) ) {
		return $user;
	}

	wp_set_auth_cookie( $user->ID, $credentials['remember'], $secure_cookie );
	/**
	 * Fires after the user has successfully logged in.
	 *
	 * @ Since 1.5.0
	 *
	 * @param string $user_login Username.
	 * @param WP_User $user WP_User object of the logged-in user.
	 */
	do_action( 'wp_login', $user->user_login, $user);
	return $user;
}

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *