1. Создадим файл captcha.php <?php $width = 100; //Ширина изображения $height = 60; //Высота изображения $font_size = 16; //Размер шрифта $let_amount = 4; //Количество символов, которые нужно набрать $fon_let_amount = 30; //Количество символов на фоне $font = "шрифт.ttf"; //Путь к шрифту $letters = array("a","1","c","2","e","3","g"); //Символы которые будут генерироваться на картинке, можно добавить $colors = array("90","110","130","150","170","190","210"); //Набор цветов, которые будут также генерироваться $src = imagecreatetruecolor($width,$height); //Создаем изображение $fon = imagecolorallocate($src,255,255,255); //Создаем фон imagefill($src,0,0,$fon); //Заливаем изображение фоном for($i=0;$i < $fon_let_amount;$i++) //Добавляем на фон символы { //случайный цвет $color = imagecolorallocatealpha($src,rand(0,255),rand(0,255),rand(0,255),100); //случайный символ $letter = $letters[rand(0,sizeof($letters)-1)]; //случайный размер $size = rand($font_size-2,$font_size+2); imagettftext($src,$size,rand(0,45), rand($width*0.1,$width-$width*0.1), rand($height*0.2,$height),$color,$font,$letter); } for($i=0;$i < $let_amount;$i++) //То же самое для основных букв { $color = imagecolorallocatealpha($src,$colors[rand(0,sizeof($colors)-1)], $colors[rand(0,sizeof($colors)-1)], $colors[rand(0,sizeof($colors)-1)],rand(20,40)); $letter = $letters[rand(0,sizeof($letters)-1)]; $size = rand($font_size*2-2,$font_size*2+2); $x = ($i+1)*$font_size + rand(1,5); //Даем каждому символу случайное смещение $y = (($height*2)/3) + rand(0,5); $cod[] = $letter; //Запоминаем код imagettftext($src,$size,rand(0,15),$x,$y,$color,$font,$letter); } $cod = implode("",$cod); //Переводим код в строку session_start(); $_SESSION['code']=$cod; header ("Content-type: image/gif"); //Выводим готовую картинку imagegif($src); ?> Code <?php $width = 100; //Ширина изображения $height = 60; //Высота изображения $font_size = 16; //Размер шрифта $let_amount = 4; //Количество символов, которые нужно набрать $fon_let_amount = 30; //Количество символов на фоне $font = "шрифт.ttf"; //Путь к шрифту $letters = array("a","1","c","2","e","3","g"); //Символы которые будут генерироваться на картинке, можно добавить $colors = array("90","110","130","150","170","190","210"); //Набор цветов, которые будут также генерироваться $src = imagecreatetruecolor($width,$height); //Создаем изображение $fon = imagecolorallocate($src,255,255,255); //Создаем фон imagefill($src,0,0,$fon); //Заливаем изображение фоном for($i=0;$i < $fon_let_amount;$i++) //Добавляем на фон символы { //случайный цвет $color = imagecolorallocatealpha($src,rand(0,255),rand(0,255),rand(0,255),100); //случайный символ $letter = $letters[rand(0,sizeof($letters)-1)]; //случайный размер $size = rand($font_size-2,$font_size+2); imagettftext($src,$size,rand(0,45), rand($width*0.1,$width-$width*0.1), rand($height*0.2,$height),$color,$font,$letter); } for($i=0;$i < $let_amount;$i++) //То же самое для основных букв { $color = imagecolorallocatealpha($src,$colors[rand(0,sizeof($colors)-1)], $colors[rand(0,sizeof($colors)-1)], $colors[rand(0,sizeof($colors)-1)],rand(20,40)); $letter = $letters[rand(0,sizeof($letters)-1)]; $size = rand($font_size*2-2,$font_size*2+2); $x = ($i+1)*$font_size + rand(1,5); //Даем каждому символу случайное смещение $y = (($height*2)/3) + rand(0,5); $cod[] = $letter; //Запоминаем код imagettftext($src,$size,rand(0,15),$x,$y,$color,$font,$letter); } $cod = implode("",$cod); //Переводим код в строку session_start(); $_SESSION['code']=$cod; header ("Content-type: image/gif"); //Выводим готовую картинку imagegif($src); ?> 2. Код вывода капчи: <html> <head> </head> <img src="captcha.php" /><a href="#" onclick="document.getElementById('cap').src = 'captcha.php?nocash='+Math.random(); return false;">Обновить</a> <form action="check.php" method="POST"> <input type="text" name="captcha_code"> <input type="submit" value="Отправить" name="req"> </form> </html> Code <html> <head> </head> <img src="captcha.php" /><a href="#" onclick="document.getElementById('cap').src = 'captcha.php?nocash='+Math.random(); return false;">Обновить</a> <form action="check.php" method="POST"> <input type="text" name="captcha_code"> <input type="submit" value="Отправить" name="req"> </form> </html> 3. Создаем файл check.php: <?php session_start(); $code=$_SESSION['code']; if($_POST['captcha_code']=="" || $_POST['captcha_code']==" ") { die("Введите символы!"); } else { $p_code=$_POST['captcha_code']; if($p_code!=$code) { die("Неверно введены символы!"); } else { //Тут делаем все что должно быть, //если капча введена верно //например, echo "Сообщение отправлено"; } } ?> Code <?php session_start(); $code=$_SESSION['code']; if($_POST['captcha_code']=="" || $_POST['captcha_code']==" ") { die("Введите символы!"); } else { $p_code=$_POST['captcha_code']; if($p_code!=$code) { die("Неверно введены символы!"); } else { //Тут делаем все что должно быть, //если капча введена верно //например, echo "Сообщение отправлено"; } } ?> Можно полностью менять количество символов, размер шрифта, сам шрифт, размер картинки и т.д. Пример вывода: