изображение не отображается в браузере

я хочу закодировать капчу, но по какой-то причине созданное мной изображение не отображается (просто отображается символ ошибки img)
Можете ли вы сказать мне, где моя ошибка?
другие люди сказали мне, что они используют почти тот же код, и он хорошо работает для них, я просто не вижу свою ошибку .. также это мой первый раз, чтобы попробовать использовать капчу

<?php
session_start();

function generateCaptcha($_SESSIONNAME) {

// Überprüfen ob der Sessionname leer ist
if(trim($_SESSIONNAME) == '')
die('Sessionname ist leer!');

//schrift fuer captcha
$font = './captcha.ttf';

//bild erstellen auf den der captcha erscheint
$image = imagecreate(125, 30);
//weiß faerben des bildes
imagecolorallocate($image, 255, 255, 255);

//links 5 px Initialwert
$left = 5;
//alle zulaessigen Buchstaben (aehnliche rausgenommen)
$allowed = 'aAbBcCdDeEfFgGhHijJkKLmMnNpPqrRsStTuUvVwWxXyYzZ1234578';

//string fuer zufall code
$string = '';

for($i = 1;$i <= 6;$i++) // 6 Zeichen
{
//random nummer mit str laenge -1
$code = $allowed{rand(0, strlen($allowed) - 1)};

//das
$string .= $code; // Das Zeichen an den gesamten Code anhängen
imagettftext($image, 20, rand(-10, 10), $left + (($i == 1?5:15) * $i), 25, imagecolorallocate($image, 200, 200, 200), $font, $code);
// Das gerade herausgesuchte Zeichen dem Bild hinzufügen
imagettftext($image, 16, rand(-15, 15), $left + (($i == 1?5:15) * $i), 25, imagecolorallocate($image, 69, 103, 137), $font, $code);
// Das Zeichen noch einmal hinzufügen, damit es für einen Bot nicht zu leicht lesbar ist
}

$_SESSION[$_SESSIONNAME] = $string; // Den Code in die Session mit dem Sessionname speichern für die Überprüfung

header("Content-type: image/png"); // Header für ein PNG Bild setzen
imagepng($image); // Ausgaben des Bildes
imagedestroy($image); // Bild zerstören

}

$sessionName = 'captchacode'; // Sessionname

if(isset($_GET['captcha']))
{
//aufruf der funltion(parameter = sessionname)
generateCaptcha($sessionName);
//beenden
exit();
}

//pruefen ob form gesendet wurde
if(isset($_POST['check']))
{
// Vergleich eingabe und code
if($_SESSION[$sessionName] == trim($_POST['captcha']))
echo "Richtig";
else
echo "Falsch";
}
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<fieldset>
<label for="captcha">
Captcha
</label>
<input type="text" name="captcha" id="captcha" />
<img src="<?php echo $_SERVER['PHP_SELF']; ?>?captcha" alt="" />
<button type="submit" name="check">Überprüfen</button>
</fieldset>
</form>

1

Решение

Что вы получаете, когда вы просто идете в imageurl? Возможно, вы увидите ошибку (то, что я вижу в коде, это то, что, возможно, у вас нет расширения GD php в среде, когда вы пытаетесь запустить этот код).
Вы также можете попробовать изменить URL изображения на $_SERVER['PHP_SELF'] . '?captcha=1'

0

Другие решения

Чтобы устранить ошибку:

  • добавлять error_reporting(E_ALL); ini_set('display_errors', 'On'); вверху вашего сценария выше session_start();
  • Временно закомментируйте header("Content-type: image/png"); поэтому браузер не будет использовать его как изображение и не будет работать с источником просмотра
  • Перейдите непосредственно к script.php? Captcha = 1 и увидите сообщение об ошибке.

Скорее всего, вам не хватает GD или FreeType, или конфигурация сеанса выполняется на сервере.

0

Твой $font = './captcha.ttf'; в нужном месте?

-1
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector