Intereting Posts
Как получить доступ к шрифтам темы с помощью пользовательского стиля CSS? Проверьте, существует ли проблема на странице используя часть темы в другой теме Как добавить Wp_error с помощью hookpass_post при проверке настраиваемого поля? Тип пользовательского сообщения WordPress – Атрибут публикации: Шаблон. Шаблон отображается и сохраняется на задней панели, но файл темы по умолчанию отображается Узнайте, какой пользователь создал категорию или тег? Разрешить публике публиковать сообщения в блоге в чем разница между uri и path? Отключить процесс сохранения сообщения полностью Colorbox не работает в собственной галерее WordPress, когда галерея загружается через AJAX Вызовите ajax на интерфейсе Дополнительно подано в профиле пользователя «О пользователе» Как изменить атрибут title "Просмотреть все сообщения в категории" Плагины mu-plugins все еще развернуты через wordpress.org/plugins? Измените внешний вид страниц администратора

Могу ли я настроить сеанс в пользовательской странице WordPress?

Я пытаюсь настроить систему входа и форму контакта для конечных пользователей Fornt моей пользовательской темы WP. Мне нужно создать какой-то метод Ajax Post и отправить входные значения на сервер, такие как значения Captcha и User Inputs, такие как captcha, имя, телефон, электронная почта … Теперь я задаю вопрос: нужно ли мне создавать сеанс PHP для обеспечения нежелательной отправки формы или передать значение captcha между двумя страницами?

если это так, это правильный шаблон страницы для контактной страницы и captcha page

<?php session_start(); /* Template Name: Contact Page */ 

captchaa.php

 <?php session_start(); 

благодаря

Solutions Collecting From Web of "Могу ли я настроить сеанс в пользовательской странице WordPress?"

Да, вы можете, но вы получите ошибки в том, что уже отправлен заголовок, если вы не подключаетесь к init или admin_init (или в другом месте до отправки заголовков). Я не тестировал его, но вы можете подключить свою сессионную функцию к действию send_headers 1, которое кажется наиболее подходящим местом, поскольку сеанс в конечном итоге отправляет заголовки.

На странице шаблона я думаю, что он будет работать, если вы запустите сеанс перед вызовом get_header() .

Вот пример из ранее созданного плагина.

Настройка сеанса:

 // Must run session_start() during admin_init to use $_SESSION variables later add_action('admin_init','register_session'); function register_session() { if( !session_id() && current_user_can( 'manage_options' ) && current_user_can( 'client_tools' ) ) session_start(); session_unset(); } 

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

 // Update notifications add_action( 'admin_post_mmc_update_notification', 'mmc_update_notification' ); function mmc_update_notification() { //Check the nonce check_admin_referer( 'mmc_notification_nonce' ); // Set a session variable if ( isset( $_POST[ 'client-manager-lname' ] ) ) $_SESSION['client-manager-lname'] = $_POST['client-manager-lname']; } 

Это позволило мне использовать эти переменные сеанса на странице подменю для этого плагина следующим образом:

 //Define variables to be used in search results. Make sure each is set first. if( isset($_SESSION['client-manager-lname']) && $_SESSION['client-manager-lname'] != '' ) { $last_name = $_SESSION['client-manager-lname']; } 

Вы можете отключить переменные сеанса в конце скрипта, когда он больше не нужен с unset ($_SESSION['varname']); , Все сеансовые переменные могут быть отменены с помощью session_unset(); что неплохо запустить сразу после запуска сеанса, если вам нужно убедиться, что вы устанавливаете новые переменные для каждого сеанса без остатков предыдущих сеансов.

Уничтожьте сеанс session_destroy(); ,

Я рекомендую читать PHP: session_unset – Manual .


Обновление: я немного поинтересовался, почему вы рассматриваете использование сеансов PHP и видите ответ Hybrid Web Dev. Существует возможность запоминать учетные данные, когда ваш пользователь зарегистрирован (аутентифицирован) через wp_signon() 2 .

Как указано, всегда используйте wp_nonce_field() 3 в своих формах и проверяйте его с помощью wp_verify_nonce() 4 в скрипте обработки формы.

Я только что столкнулся с хорошей статьей о Cookies и сессиях PHP в WordPress с обзором некоторых проблем с кешем и безопасностью, опираясь на переменные $ _SESSION. Другие материалы Архив – WP Engine

В целом, лучше всего избегать сеансов PHP в WordPress, где это возможно. В некоторых случаях может быть идеальным хранить временные данные через Transient API 5 .

Сессии в основном полезны для сохранения данных между страницами.

Если вы используете вызовы ajax, вам вообще не нужны сеансы, поскольку вы можете легко передавать данные синтаксического анализа / передачи данных «на лету», в том числе другие шаблоны / файлы. В этой записке WP имеет встроенную систему обработки ajax. Если вы не знакомы с ним, я бы предложил проверить WP-код.

Что касается обеспечения нежелательных представлений, вы должны ВСЕГДА использовать nonces в ADDITION для проверки и дезинфекции / проверки КАЖДОЙ отдельной части пользовательского ввода. Использование подхода whitelist vs blacklisting для проверки поможет вам сэкономить много головных болей и упростить жизнь.