Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [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
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




Skopiuj adres obrazka, wklej do oddzielnej zakładki w przeglądarce i zobacz jakie to błędy...
Go to the top of the page
+Quote Post
sada
post
Post #3





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

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


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.

Ten post edytował sada 27.04.2012, 12:38:46
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




Normalna przeglądarka by pokazała treśc obrazka, czyli błędy. Odpal to na FF, Operze.
Go to the top of the page
+Quote Post
sada
post
Post #5





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

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


odpalam na FF 11.0

tylko tak jak piszę ciemne tło i napis powyższy
Go to the top of the page
+Quote Post
nospor
post
Post #6





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




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





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

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


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





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




500 Internal Server Error
Go to the top of the page
+Quote Post
sada
post
Post #9





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

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


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ć


Ten post edytował sada 30.04.2012, 15:20:21
Go to the top of the page
+Quote Post

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: 9.10.2025 - 05:08