Я создаю собственную тему Wordpress с формой входа для посетителей моего веб-сайта. В форме есть поле для имени пользователя, пароля, скрытое поле nonce и скрытое поле действия. При отправке форма отправляется в wp-admin/admin-post.php, к которому я подключаю пользовательскую функцию для обработки отправки входа в систему.
Если я просто беру имя пользователя и пароль в пользовательской функции входа в систему и подключаю их к wp_signon(), все работает отлично, и пользователь может войти в систему in. Однако, если я попытаюсь проверить nonce с помощью wp_verify_nonce($nonce,$action), он вернет false. Я создал nonce, используя wp_create_nonce($action). Я проверил, что одноразовый номер, полученный функцией входа в переменную $_POST, совпадает с созданным мной одноразовым номером, а действие, которое я подключаю к функции проверки, также совпадает с действием, которое я подключаю к созданию. функция.
У меня также есть функция выхода из системы, доступ к которой осуществляется посредством запроса на mydomain/wp-admin/admin-post.php?action=action&nonce=nonce. В пользовательской функции выхода из системы, которая обрабатывает этот запрос, я проверяю nonce точно таким же образом, но здесь он работает нормально. Есть ли что-то, что мне нужно сделать по-другому, чтобы создать одноразовые номера, когда пользователь еще не вошел в систему? Я думал, что одноразовый номер основан на хеше идентификатора пользователя и некоторой информации о времени, но поскольку идентификатор пользователя равен 0 (не вошел в систему) как при создании, так и при проверке одноразового номера, я не понимаю, почему это не сработает.
для справки: пользовательская функция входа в мой файл function.php. Оператор echo возвращает правильный одноразовый номер, однако $nonceResult является ложным.
function handle_customer_login() {
$username = $_POST['username'];
$password = $_POST['password'];
$nonce = $_POST['_nonce'];
$nonceResult = wp_verify_nonce($nonce,'customer_login');
if (empty($_POST['_nonce'])) {
echo 'error: ';
var_dump($nonceResult);
die();
} else {
echo 'nonce: '.$_POST['_nonce'];
var_dump($nonceResult);
die();
}
}
add_action('admin_post_customer_login','handle_customer_login');
add_action('admin_post_nopriv_customer_login','handle_customer_login');
Я создаю nonce в строке кода ниже и добавляю $login_nonce в функцию wp_localize_script(), чтобы передать его на яваскрипт. Затем я визуализирую форму входа в систему с помощью javascript, в которой nonce отлично отображается внутри скрытого поля.
$login_nonce = wp_create_nonce('customer_login');
Подробнее здесь: https://stackoverflow.com/questions/554 ... -logged-in
WordPressverify_nonce не работает, когда вы не вошли в систему ⇐ Php
Кемеровские программисты php общаются здесь
-
Anonymous
1732650286
Anonymous
Я создаю собственную тему Wordpress с формой входа для посетителей моего веб-сайта. В форме есть поле для имени пользователя, пароля, скрытое поле nonce и скрытое поле действия. При отправке форма отправляется в wp-admin/admin-post.php, к которому я подключаю пользовательскую функцию для обработки отправки входа в систему.
Если я просто беру имя пользователя и пароль в пользовательской функции входа в систему и подключаю их к wp_signon(), все работает отлично, и пользователь может войти в систему in. Однако, если я попытаюсь проверить nonce с помощью wp_verify_nonce($nonce,$action), он вернет false. Я создал nonce, используя wp_create_nonce($action). Я проверил, что одноразовый номер, полученный функцией входа в переменную $_POST, совпадает с созданным мной одноразовым номером, а действие, которое я подключаю к функции проверки, также совпадает с действием, которое я подключаю к созданию. функция.
У меня также есть функция выхода из системы, доступ к которой осуществляется посредством запроса на mydomain/wp-admin/admin-post.php?action=action&nonce=nonce. В пользовательской функции выхода из системы, которая обрабатывает этот запрос, я проверяю nonce точно таким же образом, но здесь он работает нормально. Есть ли что-то, что мне нужно сделать по-другому, чтобы создать одноразовые номера, когда пользователь еще не вошел в систему? Я думал, что одноразовый номер основан на хеше идентификатора пользователя и некоторой информации о времени, но поскольку идентификатор пользователя равен 0 (не вошел в систему) как при создании, так и при проверке одноразового номера, я не понимаю, почему это не сработает.
для справки: пользовательская функция входа в мой файл function.php. Оператор echo возвращает правильный одноразовый номер, однако $nonceResult является ложным.
function handle_customer_login() {
$username = $_POST['username'];
$password = $_POST['password'];
$nonce = $_POST['_nonce'];
$nonceResult = wp_verify_nonce($nonce,'customer_login');
if (empty($_POST['_nonce'])) {
echo 'error: ';
var_dump($nonceResult);
die();
} else {
echo 'nonce: '.$_POST['_nonce'];
var_dump($nonceResult);
die();
}
}
add_action('admin_post_customer_login','handle_customer_login');
add_action('admin_post_nopriv_customer_login','handle_customer_login');
Я создаю nonce в строке кода ниже и добавляю $login_nonce в функцию wp_localize_script(), чтобы передать его на яваскрипт. Затем я визуализирую форму входа в систему с помощью javascript, в которой nonce отлично отображается внутри скрытого поля.
$login_nonce = wp_create_nonce('customer_login');
Подробнее здесь: [url]https://stackoverflow.com/questions/55441257/wordpress-verify-nonce-not-working-when-not-logged-in[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия