Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 04.09.2013, 16:42
Новичок на форуме
Отправить личное сообщение для mstlive Посмотреть профиль Найти все сообщения от mstlive
 
Регистрация: 04.09.2013
Сообщений: 3

Проверка кода капчи на 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]
Ответить с цитированием
  #2 (permalink)  
Старый 05.09.2013, 11:02
Профессор
Отправить личное сообщение для Яростный Меч Посмотреть профиль Найти все сообщения от Яростный Меч
 
Регистрация: 12.04.2010
Сообщений: 557

mstlive,

ты передаешь значение капчи на страницу?
Это забавно )

Капча должна быть только на сервере, и там же она сравнивается с кодом, который ввел юзер. И все прочие проверки дублируются на сервере.
Ответить с цитированием
  #3 (permalink)  
Старый 05.09.2013, 18:46
Интересующийся
Отправить личное сообщение для Solonik Посмотреть профиль Найти все сообщения от Solonik
 
Регистрация: 14.06.2013
Сообщений: 29

А ошибка не вылетает случайно ?
<?php
session_start();
$code=$_SESSION['code'];
<script>var ccode="<? echo $code; ?>"</script>
}
?>


Или Вы просто всё вкучу выложили)
Ответить с цитированием
  #4 (permalink)  
Старый 06.09.2013, 05:25
Новичок на форуме
Отправить личное сообщение для mstlive Посмотреть профиль Найти все сообщения от mstlive
 
Регистрация: 04.09.2013
Сообщений: 3

Сообщение от Яростный Меч Посмотреть сообщение
mstlive,

ты передаешь значение капчи на страницу?
Это забавно )

Капча должна быть только на сервере, и там же она сравнивается с кодом, который ввел юзер. И все прочие проверки дублируются на сервере.
Значение записывается в куки, так написано в документации к этому скрипту. Сейчас у меня не получается передать переменную для сравнения, мне нужна эта маленькая победа. Если потом, останутся силы и желание, то, кому я вру - оставляю все так.
Ответить с цитированием
  #5 (permalink)  
Старый 06.09.2013, 05:31
Новичок на форуме
Отправить личное сообщение для mstlive Посмотреть профиль Найти все сообщения от mstlive
 
Регистрация: 04.09.2013
Сообщений: 3

Сообщение от Solonik Посмотреть сообщение
А ошибка не вылетает случайно ?
<?php
session_start();
$code=$_SESSION['code'];
<script>var ccode="<? echo $code; ?>"</script>
}
?>


Или Вы просто всё вкучу выложили)
Все в кучу сложил, ошибка не вылетает, но и код не работает.

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

<script>var ccode="<? echo $code; ?>"</script>


затем этот код попадет в браузер и браузер дергает картинку. В сессию заносится новый код

$_SESSION['code']=$cod;


Но теперь, я решительно не понимаю где передавать переменную, если передать ее в коде, где генерируется капча, то как ее сможет использовать скрипт проверки на основной странице?
Ответить с цитированием
  #6 (permalink)  
Старый 06.09.2013, 13:02
Профессор
Отправить личное сообщение для Яростный Меч Посмотреть профиль Найти все сообщения от Яростный Меч
 
Регистрация: 12.04.2010
Сообщений: 557

Сообщение от mstlive
Сейчас у меня не получается передать переменную для сравнения
это сделать нетрудно, примерно так:
<?php
session_start();
$code = $_SESSION['code'];
echo "<script>var ccode='" . $code . "';</script>";
?>



в js:
if (inputCaptcha.val() != ccode)



но, повторяю, толку от такой "капчи" нет. робот легко возьмет значение со страницы и подставит в запрос.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
скрыть из исходного кода часть javascript кода. javasc Javascript под браузер 10 12.03.2014 09:32
Интерпретатор Java на JS kobezzza Оффтопик 24 11.10.2012 18:32
Последние книги по JavaScript! monolithed Учебные материалы 7 26.10.2010 19:40
Выдвет ошибку JavaScript Ромио Opera, Safari и др. 4 21.10.2010 20:34
php + javascript, проверка капчи zhuzha Общие вопросы Javascript 10 02.06.2010 13:30