Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Problem z captcha i nie tylko
sada
post
Post #1





Grupa: Zarejestrowani
Postów: 302
Pomógł: 24
Dołączył: 6.12.2008

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 19:06