Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Problem z captcha i nie tylko
Forum PHP.pl > Forum > Przedszkole
sada
Witam!

Były podobne wątki ale żadna z recept nie działa:

Problem wygląda tak :
obrazek z kodem jest generowany przez skrypt PHP, używając bibliotek GD.
Na jednym serwerze identyczny skrypt działa , na drugim nie,
plik z czcionką jest w katalogu głównym zapisany małymi literami,
Na obu serwerach jest ta sama wersja PHP 5.2.17,
Są zainstalowane biblioteki GD
phpinfo() daje różne wyniki :
na serwerze na którym nie działa w tabeli GD brakuje linijek:

"
FreeType Linkage with freetype
FreeType Version 2.3.7
T1Lib Support enabled
"

Mają one jak sądzę wpływ na akceptowanie adresowania, ale z adresem do czcionki względnym , bezwzględnym, z ./ i bez, z realpath i bez nie działa;

Błąd jest zawsze ten sam obrazek nie może zostać wyświetlony, ponieważ zawiera błędy.

Na tym też serwerze był podobny problem z czcionką o adresie :

  1. <link rel="stylesheet" href="http://fonts.googleapis.com/css?family=Droid+Sans:regular,bold" type="text/css" />


Kod captcha.php:

  1. header('Content-Type: image/jpeg');
  2. ini_set('display_errors', '1');
  3.  
  4.  
  5. ini_set('default_charset', 'UTF-8');
  6. /* Config variables */
  7. $font = realpath('arial.ttf');
  8.  
  9. $width = 112;
  10. $height = 24;
  11. $characters = 6;
  12.  
  13. /* Create random string */
  14. $possible = '23456789bcdfghjkmnpqrstvwxyz';
  15. $code = '';
  16. for ($i = 0; $i < $characters; $i++) $code .= substr($possible, mt_rand(0, strlen($possible)-1), 1);
  17.  
  18. /* Create image */
  19. $font_size = $height * 0.65;
  20. $image = imagecreatetruecolor($width, $height) or die('Error: Cannot create image using GD');
  21. $background_colour = imagecolorallocate($image, 10, 40, 20);
  22. $text_colour = imagecolorallocate($image, 130, 150,180);
  23. $noise_colour = imagecolorallocate($image, 60, 120, 80);
  24. for( $i=0; $i<($width*$height)/3; $i++ ) imagefilledellipse($image, mt_rand(0,$width), mt_rand(0,$height), 1, 1, $noise_colour);
  25. for( $i=0; $i<($width*$height)/150; $i++ ) imageline($image, mt_rand(0,$width), mt_rand(0,$height), mt_rand(0,$width), mt_rand(0,$height), $noise_colour);
  26. $textbox = imagettfbbox($font_size, 0, $font, $code) or die('Error: imagettfbbox function failure');
  27. $x = ($width - $textbox[4])/2;
  28. $y = ($height - $textbox[5])/2;
  29. imagettftext($image, $font_size, 0, $x, $y, $text_colour, $font , $code) or die('Error: imagettftext function failure');
  30.  
  31. /* Save code in session */
  32. $_SESSION['security_code'] = $code;
  33.  
  34. /* Output image */
  35.  
  36. imagejpeg($image);
  37. imagedestroy($image);



proszę o sugestie
nospor
Skopiuj adres obrazka, wklej do oddzielnej zakładki w przeglądarce i zobacz jakie to błędy...
sada
Nie wiem czy dobrze cię zrozumiałem.

Na stronie gdzie ma się wyświetlać obrazek , prawy przycisk na obrazku, kopiuję adres i wklejam na nową zakładkę:

wyświetla się tylko:
obrazek nie może zostać wyświetlony, ponieważ zawiera błędy.
nospor
Normalna przeglądarka by pokazała treśc obrazka, czyli błędy. Odpal to na FF, Operze.
sada
odpalam na FF 11.0

tylko tak jak piszę ciemne tło i napis powyższy
nospor
Mi FF jak są błędy obrazka to wyświetla tresc obrazka, czyli błędy.
Podejrzyj może źródło strony co pisze ze ma bledy, albo jakoś wymuś na FF by pokazał zawartosc.
sada
Całe żródło strony z firebuga

  1. <img src="http://butterflysa.pl/captcha_image.php" alt="Obrazek „http://butterflysa.pl/captcha_image.php” nie może zostać wyświetlony, ponieważ zawiera błędy.">
  2. </body>
  3. </html>
nospor
500 Internal Server Error
sada
Sorry, że nie od razu ale nic się nie działo w międzyczasie, nie mój serwer.

Gdyby ktoś miał podobny problem:

Błąd był w konfiguracji serwera u klienta.
Zabrakło pozycji:
  1. --with-freetype-dir=/usr/local

przez co nie czytał czcionek .ttf.

dzięki nospor

można zamykać
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.