Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Problem z captcha i nie tylko
sada
post 27.04.2012, 12:03:16
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 27.04.2012, 12:22:52
Post #2





Grupa: Moderatorzy
Postów: 36 557
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...


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
sada
post 27.04.2012, 12:37:40
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 27.04.2012, 12:40:38
Post #4





Grupa: Moderatorzy
Postów: 36 557
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.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
sada
post 27.04.2012, 12:44:03
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 27.04.2012, 12:46:51
Post #6





Grupa: Moderatorzy
Postów: 36 557
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.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
sada
post 27.04.2012, 12:52:26
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 27.04.2012, 13:11:23
Post #8





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




500 Internal Server Error


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
sada
post 30.04.2012, 15:18:48
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
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 19.07.2025 - 14:53