Всю голову сломал! Session-переменная сбрасывается после Ajax-запроса и все тут!

151
17 января 2020, 18:40

Задача: сделать так, чтобы определенный input менял атрибуты name и id на рандомные после каждого захода на сайт. Вот, собственно переменная:

session_start();
$code = rand(10000,99999);
$_SESSION["field_name"] = $code;

Но есть одно но! Когда я нажимаю кнопку submit, сессия сбрасывается и соответственно переменная меняется. Форма выдает ошибку о том что input не заполнен.

Для удобства на странице я сделал вот что: прямо под нужным мне input'ом я вывел его имя. Оно каждый раз меняется. Когда мы отправляем форму, в сообщение ошибки отправки (появляется вверху страницы) я тоже вывел ту же самую переменную. Она меняется после нажатия на submit.

Вот страница: https://elmersklei.ru/checkout/

для вашего удобства, я добавил дефолтный товар в корзину.

Самый последний input - это оно.

Вот код который я вставляю в functions.php:

add_filter( 'woocommerce_checkout_get_value' , 'clear_checkout_fields' );
/**
* Add the field to the checkout
*/
add_action( 'woocommerce_after_order_notes', 'my_custom_checkout_field' );
session_start();
$code = rand(10000,99999);
$_SESSION["field_name"] = $code;
function my_custom_checkout_field( $checkout ) {
session_start();


echo '<div id="my_custom_checkout_field"><h2>' . __('My Field') . '</h2>';
woocommerce_form_field( $_SESSION["field_name"], array(
    'type'          => 'text',
    'class'         => array('my-field-class form-row-wide'),
    'label'         => __('Fill in this field'),
    'placeholder'   => __('Enter something'),
    ), $checkout->get_value( 'my_field_name' ));
echo '</div>';
 print $_SESSION["field_name"];
}
/**
* Process the checkout
*/
add_action('woocommerce_checkout_process',             
'my_custom_checkout_field_process');
function my_custom_checkout_field_process() {
session_start();

// Check if set, if its not set add an error.
if ( ! $_POST[$_SESSION["field_name"]] )
    wc_add_notice( __( $_SESSION["field_name"] ), 'error' );
}

Вы спросите зачем? Я - отвечу. Дело в том что сайт атакуют конкуренты. Происходит накрутка ПФ с помощью бота. Если Input будет каждый раз иметь разные имена это должно его остановить.

READ ALSO
сложить два массива

сложить два массива

В цикле собираю массива такого формата:

168
Поиск url в тексте и превращение его в &lt;a&gt;

Поиск url в тексте и превращение его в <a>

Есть вот такой код, он работает, но если есть <br />, то к url прибавляются частички от <br />

158
Скрыть class после успешной заявки для всех пользователей на сайте

Скрыть class после успешной заявки для всех пользователей на сайте

Помогите решить такой вопросНа сайте будет очень простой конкурс, на одной из страниц сайта будет расположена кнопка с классом (

178
Запрос Eloquent

Запрос Eloquent

Есть вот такая структура:

168