При добавлении капчи перестала работать форма обратной связи

R2
На сайте с 17.01.2014
Offline
0
714

Подскажите пожалуйста, появилась проблема в коде, - отправки формы обратной связи,

После добавления в нее капчи, причем капча работает как надо, и письма отправляются и получаются, но вводимые данные с сайта почему то не сохраняются в форме и не присылаются.

Присылаются пустые заголовки форм, без заполненных в них данных с сайта, хотя до добавления кода капчи, все работало как надо.

Чтобы запустить капчу добавил один файл на сайт + шрифт +фон и внес дополнения в двух файлах:

Добавил на сайт файл: ( capcha.php) вот код:

<?php

$letters = 'ABCDEFGKIJKLMNOPQRSTUVWXYZ'; // алфавит

$caplen = 6; //длина текста

$width = 120; $height = 40; //ширина и высота картинки

$font = 'comic.ttf';//шрифт текста

$fontsize = 14;// размер текста

header('Content-type: image/png'); //тип возвращаемого содержимого (картинка в формате PNG)

$im = imagecreatetruecolor($width, $height); //создаёт новое изображение

imagesavealpha($im, true); //устанавливает прозрачность изображения

$bg = imagecolorallocatealpha($im, 0, 0, 0, 127); //идентификатор цвета для изображения

imagefill($im, 0, 0, $bg); //выполняет заливку цветом

putenv( 'GDFONTPATH=' . realpath('.') ); //проверяет путь до файла со шрифтами

$captcha = '';//обнуляем текст

for ($i = 0; $i < $caplen; $i++)

{

$captcha .= $letters[ rand(0, strlen($letters)-1) ]; // дописываем случайный символ из алфавила

$x = ($width - 20) / $caplen * $i + 10;//растояние между символами

$x = rand($x, $x+4);//случайное смещение

$y = $height - ( ($height - $fontsize) / 2 ); // координата Y

$curcolor = imagecolorallocate( $im, rand(0, 100), rand(0, 100), rand(0, 100) );//цвет для текущей буквы

$angle = rand(-25, 25);//случайный угол наклона

imagettftext($im, $fontsize, $angle, $x, $y, $curcolor, $font, $captcha[$i]); //вывод текста

}

// открываем сессию для сохранения сгенерированного текста

session_start();

$_SESSION['capcha'] = $captcha;

imagepng($im); //выводим изображение

imagedestroy($im);//отчищаем память

?>

И внес изменения, добавил код (выделен красным цветом) в имеющиеся файлы на сайте

В файл (send1.php) вот код:

<?

$TO = "my@мой сайт.ru;

$SUBJECT = "Письмо с мой сайт";

$BODY = "ФИО: $t1\n"

. "Телефон: $t2\n"

. "Оборудование: $t3\n"

. "Дата посещения: $t4\n"

. "Адрес осмотра: $t5\n"

. "Желаемое время: $t6\n";

$header ="From: www.мойсайт.ru <www.мойсайт.ru>\n"

."Content-type: text/plain;"

." charset=\"windows-1251\""

." Content-Transfer-Encoding: 8bit";

session_start();
if($_POST['capcha'] != $_SESSION['capcha']) {
echo "Текст с картинки введен не верно! <br> <a href='javascript:history.go(-1);'>&laquo; Проверьте еще раз правильность ввода</a>";
unset($_SESSION['capcha']);

exit();
}

ini_set(sendmail_from, $TO);

if (mail($TO, $SUBJECT, $BODY, $header))

{

echo "<b>Спасибо.</b><br>Ваше сообщение очень важно для нас.<br>Если оно требует ответа и Вы оставили свои координаты, мы свяжемся с Вами максимально быстро.<br><a href='index.php'>Закрыть окно</a>";

} else {

echo " ОШИБКА ";

}

?>

и добавил код (выделен красным цветом)на страницу в форму отправки (мой сайт.html) вот код:

<form method="POST" action="send1.php" name="SEND" >

<table border="0" width="580" cellspacing="0" cellpadding="2">

<tr>

<td colspan="2">

</td>

</tr>

<tr>

<td align="right"> </td>

<td> </td>

</tr>

<tr>

<td align="right">Ваше имя: </td>

<td><input type="text" name="T1" size="40"></td>

</tr>

<tr>

<td align="right">Контактный телефон: </td>

<td><input type="text" name="T2" size="40"></td>

</tr>

<tr>

<td align="right">Консультация по:</td>

<td><select name="T3">

<option value="выберете">выберете</option>

<option value="Кондиционированию">Кондиционированию</option>

<option value="Вентиляции">Вентиляции</option>

<option value="Кондиционированию и вентиляции">Кондиционированию и вентиляции</option>

<option value="Сервисному обслуживанию ">Сервисному обслуживанию </option>

<option value="Ремонту и диагностики ">Ремонту и диагностики </option>

</select></td></tr>

<tr>

<td align="right">Дата посещения: </td>

<td><input type="text" name="T4" size="40"></td>

</tr>

<tr>

<td align="right">Адрес осмотра: </td>

<td><input type="text" name="T5" size="40"></td>

</tr>

<tr>

<td align="right">Желаемое время: </td>

<td><input type="text" name="T6" size="40"></td>

</tr>

<tr>
<td align="right"></td>
<td>
<img style=" background: url('bg_capcha.png');" src = "captcha.php" width="120" height="40">
</td>
</tr>
<tr>
<td align="right">Введите код с картинки: </td>
<td><input type="text" name="capcha"></td>
</tr>

<tr>

<td align="right"> </td>

<td> <input type="submit" value="Оставить заявку" onclick="chek_field()"> </td>

</tr>

</table>

</form>

<script>

function chek_field()

{

var currentForm = document.SEND;

var T1 = currentForm.T1.value;

var T2 = currentForm.T2.value;

var T3 = currentForm.T3.value;

var T4 = currentForm.T4.value;

var T5 = currentForm.T5.value;

var T6 = currentForm.T6.value;

var url

url='t1='+T1+'&t2='+T2+'&t3='+T3+'&t4='+T4+'&t5='+T5+'&t6='+T6;

}

</script>

Люди знающие помогите !!!

Не могу разобраться что не так в коде, почему не сохраняются и не присылаются на почту данные вводимые с сайта - ? до добавления капчи все ведь работало как надо

RomantikJo
На сайте с 19.01.2014
Offline
1
#1

Проверяйте название полей, в соответствии значением параметра name соответствующих полей формы.

дани мапов
На сайте с 06.09.2012
Offline
204
#2

Код неполный. Как значение из формы присваивается переменной, например в этой строке $BODY = "ФИО: $t1\n" ?

Написание и доработка скриптов (PHP, MySQL, JavaScript, jQuery) (/ru/forum/811046)
AR
На сайте с 23.01.2013
Offline
57
#3

Капча не очень хороший вариант, распознается ботами + для посетителей неудобно.

Посмотрите вариант CleanTalk.ru

Защита сайтов от спама CleanTalk. Без капчи, вопросов и т.д.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий