быстрая авторизация
-
Решил организовать на сайте быструю регистрацию, т.е., пользователь вводит email, а ему на почту приходит письмо типа https://site/account?token=WKtwIZ8Hw…glHK_itZM-VPsF
пользователь переходит по ссылке и попадает в свой аккакунт,
Как организовать подобную идею?поможет ли мне в этом wp_set_auth_cookie()?
делаю так
файл function.php
add_shortcode( 'fast_custom_login', 'fast_login' ); function fast_login() { $return = '<hr> <h3>Быстрый вход</h3><form method="post" action="http://localhost:8888/wp-content/themes/twentynineteen-parts/templates/php/signon.php " ><div id="gridForm" class="justify-content-center"> <div class="text-center text-muted mb-4"> <input type="text" name="fastlogin" id="fasrlogin" class="form-control" placeholder="Email" size="20"> </div> <input type="submit" id="resetpass-button" class="btn btn-primary " value="Войти"></form>'; if ( isset( $_REQUEST['errno'] ) ) { $error_codes = explode( ',', $_REQUEST['errno'] ); foreach ( $error_codes as $error_code ) { switch ( $error_code ) { case 'empty_email': $return .= '<span class="badge badge-pill badge-danger">Вы не забыли указать свой email/имя пользователя ?</span>'; break; case 'invalid_email': $return .= '<span class="badge badge-pill badge-danger">На сайте не найдено указанного пользователя.</span>'; break; } } } return $return; }
файл signon.php
<?php require_once ($_SERVER['DOCUMENT_ROOT'] . '/wp-load.php'); require_once ($_SERVER['DOCUMENT_ROOT'] . '/wp-admin/includes/upgrade.php'); global $wpdb; if ( $_SERVER['REQUEST_METHOD'] === 'POST' ) { if ( $_POST['fastlogin'] ) { $resul = $wpdb->get_results(" SELECT ID FROM <code>wp_users</code> WHERE <code>user_email</code> = '" .$_POST['fastlogin'] . "'"); foreach ($resul as $resul) { nocache_headers(); wp_clear_auth_cookie(); $set_auth = wp_set_auth_cookie($resul->ID); } $login_url = home_url( '/login/' ); $login_url = add_query_arg( 'errno', $set_auth , $login_url ); $to = $_POST['fastlogin']; $subject = 'Быстрый вход'; $message = $login_url; wp_mail( $to, $subject, $message);
после того как нажимаю кнопку,приходит письмо на почту, но без token ,так как
wp_set_auth_cookie
действует только после перезагрузки страницы, потом заново отправляю,уже приходит с токеном, но смысла от этого письма уже нет, так как пользователь и так уже авторизован, так вот ,как сделать что бы приходило сразу письмо с токеном, при этом пока пользователь не перейдет по ссылке,он не авторизуется?
Спасибо!
- Тема «быстрая авторизация» закрыта для новых ответов.