Автор Тема: PHP(капча)  (Прочитано 3543 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Астасья

  • Постоялец
  • ***
  • Сообщений: 173
    • Просмотр профиля
PHP(капча)
« : 20 Мая 2013, 16:26:34 »
В папке laba5 находятся 4 файла:
1.анкета.html
<html>
 <head>
<title>Анкета</title>
<script>

function checkForm(obj){
var return_value = true;
// для проверки почтового ящика
var reg_a = /[0-9a-z_]+@[0-9a-z_^.]+.[a-z]{2,3}/i;
// для проверки ФИО
var reg_b = /[а-я]+/i;
// регулярное вырожение для проверки з.пл
var reg_c = /[0-9]+/i;

// заносим значение поля фамилия в переменную f
var h = obj.fio.value;
// заносим значение поля имя в переменную n
var n = obj.name.value;
// заносим значение поля отчество в переменную o
var o = obj.ot.value;
// заносим значение поля почтовый ящик в переменную mail
var mail = obj.email.value;
// заносим значение поля дата рождения в переменную d
var d = obj.data.value;
// заносим значение поля о себе в переменную dop
var w = obj.dopinfo.value;
// заносим значение поля з.пл в переменную z
var q = obj.zp.value;

// объявляем переменную куда будет заносится текст сообщения
var error_msg = "Некорректно заполнены поля: ";

if(reg_b.exec(h) == null ){
error_msg += "Фамилия ";
return_value = false;
}
if(reg_b.exec(n) == null ){
error_msg += "Имя ";
return_value = false;
}
if(reg_b.exec(o) == null ){
error_msg += "Отчество ";
return_value = false;
}

if(reg_a.exec(mail) == null ){
error_msg += "Email ";
return_value = false;
}
if(reg_c.exec(d) == null ){
error_msg += "ДатаРождения ";
return_value = false;
}

if(w == "" ){
 error_msg += "О себе ";
 return_value = false;}

 if(reg_c.exec(q) == null ){
error_msg += "ТребуемаяЗ.ПЛ ";
return_value = false;
}
 
//проверка на наличие ошибок, если возникла ошибка ввыводим текст сообщения
if(!return_value)
alert(error_msg);
return return_value;
}
</script>
</head>

 <body>
<form  method="POST" action="action.php"  onSubmit="return checkForm(this);">

Фамилия:
<input type="TEXT" name="fio"><br>
Имя:
<input type="TEXT" name="name"><br>
Отчество:
<input type="TEXT" name="ot"><br><br>
E-mail:
<input type="TEXT"  name="email"><br><br>

Образование:
<select name="obrazovanie">
<option value="Высшее">Высшее</option>
<option value="Среднее">Среднее</option>
</select><br><br>

Дата Рождения
<input type="TEXT" name="data"><br><br>

О себе:<br><br>
<textarea cols="30" rows="3" wrap="hard" name="dopinfo" ></textarea><br><br>

Требуемая ЗП<input type="TEXT" name="zp"><br><br>

Знание Я.П<br><br>
SQL<input type="checkbox" NAME="language1" value="SQL">
PHP<label><input type="checkbox" NAME="language2"  value="PHP">
CSS<label><input type="checkbox" NAME="language3" value="CSS"><br><br>

Пол:<br>
М<INPUT TYPE="RADIO" NAME="pol" VALUE ="М" >
Ж<INPUT TYPE="RADIO" NAME="pol" VALUE ="Ж"><br><br>

Проверочный код:<br>
<img src = "captcha.php" /><br>
<input type = "text" name = "kaptcha" /><br>
<a href="анкета.html">Обновить изображение</a><br>

<input name="submit" type="submit" value="Отправить"><br>
<input name="reset" type="reset"" value="Очистить" >

</form>

</body>
</html>

2.captcha.php
<?php
$letters 
'ABCDEFGKIJKLMNOPQRSTUVWXYZ1234567890!@#$%^&*()_++-';
$caplen 8;//длина капчи.
$width 170
$height 70;
$font 'comic.ttf';//файл шрифта
$fontsize 14;//Размер шрифта.

header('Content-type: image/png');
$im imagecreatetruecolor($width$height);//изображение с заданными размерами
imagesavealpha($imtrue);//Выставляем флаг необходимости сохранения альфа-канала изображения
$bg imagecolorallocatealpha($im000127);//Создаем цвет фона. Это будет полностью прозрачный цвет
imagefill($im00$bg);//Заливаем этим цветом наше созданное изображение

//putenv( 'GDFONTPATH=' . realpath('.') );

$captcha '';//Инициализируем переменную, в которой будет содержаться текстовое значение капчи

for ($i 0$i $caplen$i++) {
$captcha .= $lettersrand(0strlen($letters)-1) ];
$x = ($width 20) / $caplen $i 10;//Вычисляем положение сгенерированного символа на изображении по оси x
$x rand($x$x+4);//смещение
$y $height - ( ($height $fontsize) / );
$curcolor imagecolorallocate$imrand(0100), rand(0100), rand(0100) );//случайный цвет для символа
$angle rand(-2525);//угол наклона в диапазоне -25..25 градусов, чтобы буквы на капче "плясали"
imagettftext($im$fontsize$angle$x$y$curcolor$font$captcha[$i]);// рисуем символ со всеми выше полученными характеристиками на изображении
}

//session_start();
$_SESSION['captcha'] = $captcha;
imagepng($im);
imagedestroy($im);
?>

3 action.php
<?PHP
session_start();
if($_POST['kaptcha'] = $_SESSION['captcha'])
{   echo "Фамилия: ".$_POST['fio']."<br>";

    echo "Имя: ".$_POST['name']."<br>";

    echo "Отчество: ".$_POST['ot']."<br>";

    echo "E-mail: ".$_POST['email']."<br>";

    echo "Образование: ".$_POST['obrazovanie']."<br>";

    echo "Дата Рождения: ".$_POST['data']."<br>";

    echo "О себе: ".$_POST['dopinfo']."<br>";

    echo "Требуемая З.П: ".$_POST['zp']."<br>";

    echo "Знание Я.П: ";
    echo $_POST['language1']." ";
    echo $_POST['language2']." ";
    echo $_POST['language3']." ";
   
echo "<br>Пол: ".$_POST['pol']."<br>";
}
else echo "Капча введена неверно<br>";
?>
4. comic.ttf //шрифт


Выводит разные ошибки,к примеру :
Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at Q:\home\localhost\www\laba5\action.php:2) in Q:\home\localhost\www\laba5\action.php on line 3

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at Q:\home\localhost\www\laba5\action.php:2) in Q:\home\localhost\www\laba5\action.php on line 3
Капча введена неверно

Не могу исправить....