Проверка кода капчи на Javascript
Приветствую!
На странице контактов, установил генерацию капчи (PHP), он генерирует картинку и проверочный код. Форма обрабатывается яваскриптом. Но почемуто переменная не передается в яваскрипт, ее значение underfined. Код генерации капчи (отдельный фаил captcha.php): ... $cod = implode("",$cod); //переводим код в строку session_start(); $_SESSION['code']=$cod; header ("Content-type: image/gif"); //выводим готовую картинку imagegif($src); ?> ... Код на странице контактов: ... <?php if (isset($_POST['inputName'])) { $name = $_POST['inputName']; $headers = $_POST['inputEmail']; $text = $_POST['inputText']; $message = $text; $to = 'почта@почта.ru'; $subject = 'Сообщение с сайта'; /* Создаем новую переменную, присвоив ей значение */ $message_to_myemail = "Здравствуйте! Вашей контактной формой было отправлено сообщение! Имя отправителя: $name E-mail: $headers Текст сообщения: $message Конец"; wp_mail($to, $subject, $message_to_myemail); ?> <div class="fb_form_title"> <p>Спасибо за Ваше обращение.</p> <p>В самое ближайшее время мы свяжемся с Вами по указанному e-mail.</p> </div> <?php } else { ?> <div class="fb_form_title"> <p>Чтобы отправить нам сообщение, заполните эту форму.</p> <p>Для заполнения обязательны все поля.</p> </div> <form method="post" > <div> <label for="inputName">Ваше имя</label> <input type="text" id="inputName" name="inputName"> </div> <div> <label for="inputEmail">Электронная почта (используется нами только для обратной связи)</label> <input type="text" id="inputEmail" name="inputEmail"> </div> <div> <label for="inputText">Сообщение</label> <textarea id="inputText" name="inputText"></textarea> </div> <div> <label for="inputCaptcha">Введите код, подтвердите, что Вы не робот</label> <img class="inputCaptcha_img" src="/wp-content/themes/alexblogin/images/captcha.php" alt="" /> <input type="text" id="inputCaptcha" name="inputCaptcha"> </div> <button type="submit" onclick="return submit_form(this)">Отправить</button> </form> <?php session_start(); $code=$_SESSION['code']; <script>var ccode="<? echo $code; ?>"</script> } ?> </div> </div> [JS]<script> /* Валидация формы, пустые поля*/ function submit_form(value) { var tel = jQuery("#inputName"); var email = jQuery("#inputEmail"); var text = jQuery("#inputText"); var patt = /^.+@.+[.].{2,}$/i; var inputCaptcha = jQuery("#inputCaptcha"); if( ! tel.val() ) { alert("Укажите свое имя"); tel.focus(); return false; } else if( ! text.val() ) { alert("Введите текст сообщения"); text.focus(); return false; } else if(!patt.test(email.val())) { alert("Вы ввели неправильный email. Попробуйте еще раз"); email.focus(); return false; } else if(! inputCaptcha.val() ) { alert("Введите проверочный код!"); captcha.focus(); return false; } else if(inputCaptcha.val()!=ccode.val()) { alert("Неверно введены символы!"); captcha.focus(); return false; } else if(inputCaptcha.val()==ccode.val()) { return true; } else { return false; } } </script>[/JS] |
mstlive,
ты передаешь значение капчи на страницу? Это забавно ) Капча должна быть только на сервере, и там же она сравнивается с кодом, который ввел юзер. И все прочие проверки дублируются на сервере. |
А ошибка не вылетает случайно ?
<?php session_start(); $code=$_SESSION['code']; <script>var ccode="<? echo $code; ?>"</script> } ?> Или Вы просто всё вкучу выложили) |
Цитата:
|
Цитата:
Мне подсказали ошибку. Сперва грузится документ с формой и выводится <script>var ccode="<? echo $code; ?>"</script> затем этот код попадет в браузер и браузер дергает картинку. В сессию заносится новый код $_SESSION['code']=$cod; Но теперь, я решительно не понимаю где передавать переменную, если передать ее в коде, где генерируется капча, то как ее сможет использовать скрипт проверки на основной странице? |
Цитата:
<?php session_start(); $code = $_SESSION['code']; echo "<script>var ccode='" . $code . "';</script>"; ?> в js: if (inputCaptcha.val() != ccode) но, повторяю, толку от такой "капчи" нет. робот легко возьмет значение со страницы и подставит в запрос. |
Часовой пояс GMT +3, время: 09:17. |