Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Помогите с капчей PHP. Не выводит саму капчу почему то, я так подозреваю что не видит шрифт. Использую OpenServer.

Саша Королёв Ученик (152), на голосовании 1 год назад
 
ФОРМА:





Document











САМА КАПЧА:
<?php

session_start();

$width = 100; //ширина картинки
$height = 60; //высота картинки
$count = 4; //кол-во символов капчи
$fon_let_amount = 40; //количество символов на фоне
$f_size = 16; //размер шрифта
$font = "/cour.ttf"; //путь к файлу шрифта

$letters = array("Z", "Q", "G", "L", "R", "W", "V", "5", "9", "7"); //Символы для капчи
$colors = array("90", "110", "130", "150", "170", "190", "210"); //Набор цветов для символов

$img = imagecreatetruecolor($width, $height);

$fon = imagecolorallocate($img, 250, 250, 250); //Функция созданияцвета фона
imagefill($img, 0, 0, $fon); //Функция заливки выбранного изображения



//Создание контента Капчи (Основные сиволы)
for($i = 0; $i < $count; $i++){
$color = imagecolorallocatealpha($img, $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($f_size*2-2, $f_size*2+2); //Случайный размер символа
$x = ($i + 1) * $f_size + rand(1, 5); //Случайный х
$y = $height/2 + $size/2; //Случайный у
$capcha[] = $letter; //Добавляем в массив символ
imagettftext($img, $size, rand(-10, 15), $x, $y , $color, $font, $letter); //Выводим символ
}

$capcha = implode("",$capcha);

header("Content-type: image/gif"); //Создание заголовка изображения
$_SESSION["capcha"] = strtolower($capcha); //Создание переменной сессии
imagegif($img); //Выводим на экран


?>
Голосование за лучший ответ
Лайт Ягами Искусственный Интеллект (309651) 1 год назад
 $font = "/cour.ttf"; 
Этот путь задан не от корня веб-сервера, а от корня файловой системы. 99.99% что файла этого у тебя в корне и не существует. Лучше указывай пути относительно текущего скрипта, например, если шрифт лежит в той же папке, что и captcha.php, то получится так:
 $font = __DIR__ . "/cour.ttf"; 
А вообще, об ошибках смотри в логах сервера.
Саша КоролёвУченик (152) 1 год назад
пробовал указывать так как Вы написали, не помогает. Вместо капчи показывает пустое место под изображение.Если убираю эту строку imagettftext($img, $size, rand(-10, 15), $x, $y , $color, $font, $letter); то капча показывается но без эффектов, просто белая картинка.
Лайт Ягами Искусственный Интеллект (309651) Саша Королёв, значит, какие-то ещё у вас ошибки, что в логе ошибок отображается?
Александра Ученик (144) 1 год назад
Пользуйтесь WDSP вместо open server. Скорее всего у вас выключено расширение gd
Похожие вопросы