Captcha работает нормально на локальном хосте, но не в сети

Я использую скрипт simple-phpcaptcha ( https://github.com/claviska/simple-php-captcha ) в форме ajax в моей теме wordpress, он отлично работает, когда он находится на локальном хосте, но когда я загружаю его на онлайн-хост, коды подписи не совпадают, все отлично работает, загружаются изображения изображений captcha, создаются сеансы, но код отслеживания, отображаемый на изображении, отличается от того, как при отправке формы.

functions.php

require_once( get_template_directory() . '/libs/captcha/simple-php-captcha.php' ); require_once( get_template_directory() . '/inc/ajax/testimonial.php' ); 

header.php

 session_start(); $_SESSION['captcha'] = simple_php_captcha(); 

Форма html

 <form action="<?php echo admin_url("admin-ajax.php"); ?>" class="dw-ajax-form dw-form" method="post" id="send_testimonial"> <input type="text" name="name" placeholder="name"> <input type="text" name="job" placeholder="company / job"> <input type="text" name="email" placeholder="Email address"> <textarea type="textarea" name="comment" placeholder="your opinion about us"></textarea> <div class="block captcha-image"> <img src="<?php echo $_SESSION['captcha']["image_src"]; ?>" alt="<?php echo $_SESSION['captcha']["code"]; ?>"> </div> <input type="text" name="captcha" placeholder="enter the code above" autocomplete="off"> <input type="hidden" name="action" value="send_testimonial"> <?php wp_nonce_field( 'send_testimonial', 'send_testimonial_nonce' ); ?> <input type="submit" value="send"> <span class="msg" style="margin-right:15px;"></span> </form> 

Функция ajax (/inc/ajax/testimonial.php)

 <?php /** * Testimonial Form Ajax Callbacks * * @package WordPress * @subpackage Learnfiles-shop Theme * @author Dornaweb.com */ add_action( 'wp_ajax_send_testimonial', 'dw_send_testimonial' ); add_action( 'wp_ajax_nopriv_send_testimonial', 'dw_send_testimonial' ); function dw_send_testimonial() { global $wpdb; $message = ''; $name = strip_tags( htmlspecialchars( $_POST["name"] ) ); $job = strip_tags( htmlspecialchars( $_POST["job"] ) ); $email = strip_tags( htmlspecialchars( $_POST["email"] ) ); $comment = strip_tags( htmlspecialchars( $_POST["comment"] ) ); /* captcha */ $captcha_input = strtolower( strip_tags( htmlspecialchars( $_POST["captcha"] ) ) ); $captcha_code = strtolower( $_SESSION['captcha']['code'] ); /** Validation **/ if( !$_SESSION['captcha'] || !is_array( $_SESSION['captcha'] ) ) die( '<span class="error">Somethings wrong</span>' ); /******************************* IT ALWAYS GIVES ME THIS ERROR WHEN ONLINE , BUT IT WORKS ON LOCALHOST( i also tried it with "!=" operator ) **************/ if( $captcha_code !== $captcha_input ) die( '<span class="error">The entered code doesnt match</span>' ); /**********************************************************************************************************************************************************/ if ( !isset( $_POST['send_testimonial_nonce'] ) || ! wp_verify_nonce( $_POST['send_testimonial_nonce'], 'send_testimonial' ) ) die('<span class="error">Somethings wrong</span>'); if( empty( $comment ) ) die('<span class="error">Please enter your comment</span>'); if( empty( $name ) ) die('<span class="error">please enter your name</span>'); if( !empty( $email ) && !filter_var($email, FILTER_VALIDATE_EMAIL) ) die('<span class="error">the entered email doesnt look like an email address</span>'); if( empty( $name ) && empty( $comment ) ) die('<span class="error">please fill the form</span>'); /* send testimonial */ $testimonial = array( 'post_title' => $name, 'post_status' => 'pending', 'post_type' => 'testimonials', 'post_author' => 1 ); $post_id = wp_insert_post( $testimonial ); update_field( 'job', $job, $post_id ); update_field( 'email', $email, $post_id ); update_field( 'comment', $comment, $post_id ); // form is valid if( empty( $message ) ) $message = '<span class="success">Your comment submitted! thank you.</span>'; echo $message; wp_die(); } 

отредактировано: Я запустил здесь тест (извините, что страница находится в фарси): http://test.dornaweb.ir/ , в середине страницы есть форма, которая, когда вы нажимаете на нее, показывает вам var_dump() из $_SESSION['captcha'] , как вы можете видеть, код, показанный на изображении, отличается от кода в данных var_dump , это похоже на то, что форма отправляет $ _SESSION на один шаг вперед или что-то в этом роде, странно, когда я использую ту же самую тему на localhost, ничего не получается!

Похоже, что есть дубликат запроса (также, судя по предоставленному access.log). Это может быть вызвано отсутствием / недоступным файлом на сервере (который есть / доступен на локальном хосте, что не создает проблем там). Если это требуется, некоторый код перезаписи (внутри WP или mod_rewrite в .htaccess) перезаписывает запрос «сбой» и отправляет его в основной скрипт. Затем в главном скрипте данные сеанса переписываются с новой записью …

Эти проблемы иногда трудно обнаружить. Начните с:

  • поиск различий между локальным хостом и сервером

  • ищет запросы, следуя каждой ссылке в сгенерированном html-коде и проверяя, дают ли они ожидаемый ответ

Возможно, вы также могли бы написать несколько отладочных сообщений либо в файле error.log, либо в каком-либо другом режиме ведения журнала. Это также поможет найти это.

Извините, если это не поможет вам дальше …