Ребят помогите пожалуйста написать условие проверки капчи, не пойму как правильно написать. У меня данные с формы должны отправялтьсяя методом POST в файл insert.php , все нормально отправляется, файл captcha.php рисует защитный код, но когда я ввожу провверочные данные , хоть правильно хоть неправильно , все равно данныех с формы записываются в БД. Мне нужно чтоб выдавало ошибку КАПЧИ. и прерывало выполнение, до тех пор пока не будет введён правильный проверочный код. index.php Код (Text): <form action="/data/insert.php" method="POST" id="guest-form" name="reg"> <input id="username" type="text" name="name" placeholder="Username"> <input id="email" type="text" name="email" placeholder="E-mail"> <textarea id="message" type="text" name="text" placeholder="Your message"></textarea> <img src="data/captcha.php" alt="Картинка" /><br /> <input id ="captcha" type="text" name="captcha" placeholder="Verify code" /><br /> <input id="submit" class="btn btn-default" type="button" value="Submit"> </form> Ajax Код (Text): $(document).ready(function(){ $('#submit').click(function(){ var username = $('#username').val(); var email = $('#email').val(); var message = $('#message').val(); var captcha = $('#captcha').val(); if(username ===''){ alert('Please input data in all fields'); } else{ $.ajax({ type:"POST", cache:false, url:'/data/insert.php', data:{username: username, email: email, message: message, captcha: captcha}, success:function(data){ } }); } }); }); Insert.php обработчик Код (Text): require_once 'db.php'; session_start(); if(isset($_SESSION["captcha"])&& $_SESSION["captcha"]===$_POST["captcha"]){ dataInsert(); } else{ echo 'error captcha'; } unset($_SESSION["captcha"]); function dataInsert(){ if(isset($_POST['username'])&& isset($_POST['email'])&& isset($_POST['message'])){ $username = $_POST['username']; $email = $_POST['email']; $message = $_POST['message']; $db_host ="localhost"; $db_user ="alekspvn";// Логин БД $db_password ="123";// Пароль БД $db_table ="book";// Имя Таблицы БД $connect_db=mysql_connect(HOST, MYSQL_USER, MYSQL_PASS) ordie("No connection with SQL"); mysql_select_db("guests_db",$connect_db); mysql_query("SET NAMES 'utf8'",$connect_db); $result = mysql_query ("INSERT INTO ".$db_table." (username,email,message) VALUES ('$username','$email','$message')"); if($result ='true'){ echo "Информация занесена в базу данных"; }else{ echo "Информация не занесена в базу данных"; } } } print_r ($_SESSION["captcha"]); Переменная в которой формируется проверочный код $_SESSION["captcha"] и файл capcha.php у меня нигде не подключен в индексе указан путь для рисования изобрадения. Может стоит его в обработчике подключить? или эта переменная с проверочным кодом считается глобальной? если что, вот проэкт на репозитории https://bitbucket.org/alekspvn/guestbook/src/75c6a451988b5bb58237c9e254e27f37e26d81a5?at=bit_master
пример index.php PHP: <?php error_reporting ( E_ALL ); if ( version_compare ( PHP_VERSION, '7.1.0', '<' ) ) { die ( 'Error: Please, update module PHP ver ' . PHP_VERSION . ' ver < 7' ); } session_start (); if ( $_SERVER['REQUEST_METHOD'] === 'POST' ) { $args = [ 'name' => FILTER_SANITIZE_FULL_SPECIAL_CHARS, 'email' => FILTER_VALIDATE_EMAIL, 'text' => FILTER_DEFAULT, 'captcha' => FILTER_DEFAULT ]; $INPUTS = filter_input_array ( INPUT_POST, $args ); if ( in_array ( NULL, $INPUTS, TRUE ) ) { $E = 'Undefined inputs :('; } elseif ( in_array ( FALSE, $INPUTS, TRUE ) ) { $E = 'Данные введены некорректно или один из полей не заполнен'; } elseif ( $INPUTS['captcha'] !== ( $_SESSION['captcha'] ?? NULL ) ) { $E = 'Проверка капчи не пройдена'; } if ( isset ( $E ) ) { exit ( $E ); } exit ( 'insert... okay' ); } $_SESSION['captcha'] = password_hash ( mt_rand (), PASSWORD_DEFAULT ); require 'form.php'; form.php HTML: <!DOCTYPE html> <html> <head> <title>11111</title> <script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script> <script> $( function() { $( 'body' ).on( 'submit', 'form.AJAX', function( e ) { e.preventDefault(); var formData = new FormData( $( this ).get(0) ); $.ajax( { url: $( this ).attr( 'action' ), type: $( this ).attr( 'method' ), contentType: false, // важно - убираем форматирование данных по умолчанию processData: false, // важно - убираем преобразование строк по умолчанию data: formData, dataType: 'HTML', success: function( h ) { $( '#ERRMSG' ).html( h ); } }); }); }); </script> </head> <body> <div id="ERRMSG"></div> <form action="/" method="POST" class="AJAX"> <input id="username" type="text" name="name" placeholder="Username"> <br> <input id="email" type="text" name="email" placeholder="E-mail"> <br> <textarea id="message" type="text" name="text" placeholder="Your message"></textarea> <br> <input id ="captcha" type="hidden" name="captcha" value="<?= $_SESSION['captcha'] ?>"> <br> <input id="submit" class="btn btn-default" type="submit" value="Submit"> </form> </body> </html>