Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Dlaczego captcha wyświetla się na jednym serwerze, a na innym nie ?
agnes
post
Post #1





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 13.12.2009

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


Cześć !

Mam problem ze skryptem obrazku captcha. Obrazek wraz z ciągiem znaków do przepisania nie wyświetla się na 2 serwerach – pojawiają się takie krzaki (fragment), kiedy kliknę pokaż obrazek:

˙Ř˙ŕ� JFIF� �� � ��˙ţ�>CREATOR: gd-jpeg v1.0 (using IJG JPEG v62), default quality ˙Ű�C�

Na innym serwerze – tzn. yoyo obrazek captcha z ciągiem znaków wyświetla się poprawnie.

Jaka może być tego przyczyna ? W jaki sposób mogę to naprawić ? Dziękuję z góry za wszelkie informacje i wskazówki.

Oto kod raz działającej, a raz nie captcha:

  1. <?php
  2.  
  3. //Zapraszam do dystrybucji i wykorzystania jak chcesz
  4. //Wystarczy pozostawić poniższy nagłówek i komentarze nienaruszone
  5. // GENERATOR TOKENA - CAPTCHA
  6. //Email: int-24@wp.pl
  7. //Web: www.int24.unl.pl
  8.  
  9. // wysłanie nagłówków do przeglądarki
  10. header ("content-type: image/jpg");
  11.  
  12. // generowanie liczb losowych do wykorzystania w naszym szyfrowaniu
  13. $enc_num = rand(0, 9999); // numer ten jest szyfrowany
  14. $key_num = rand(0, 24); // używany ciąg znaków wykorzystany na obrazku
  15.  
  16. // użyj losowy ciąg cyfr i liter przy użyciu MD5
  17. // ilość wyświetlanych znaków w naszym przypadku 5
  18. $hash_string = substr(md5($enc_num), $key_num, 5);
  19. $hash_md5 = md5($hash_string);
  20.  
  21. // przypisanie do sesji
  22. $_SESSION['captcha'] = $hash_md5;
  23.  
  24. // tworzą zestaw obrazów jako tło pod tokenem
  25. $bgs = array("back1.jpg", "back2.jpg", "back3.jpg");
  26.  
  27. // wybiera obraz tła przy użyciu funkcji podręcznej array_rand
  28. $background = array_rand($bgs, 1);
  29.  
  30. // ustawia jako tło losowo wybrany gif
  31. $img_handle = imagecreatefromjpeg($bgs[$background]);
  32.  
  33. // kolor czcionki, tekstu
  34. $text_colour = imagecolorallocate($img_handle, 0, 0, 0);
  35.  
  36. // wielkosc czcionki, tekstu
  37. $font_size = 5;
  38.  
  39. // pobierz wymiary poziome i pionowe obrazu tla
  40. $size_array = getimagesize($bgs[$background]);
  41. $img_w = $size_array[0];
  42. $img_h = $size_array[1];
  43.  
  44. // pozycja pozioma
  45. $horiz = round(($img_w/2)-((strlen($hash_string)*imagefontwidth(5))/2), 1);
  46.  
  47. // pozycja pionowa
  48. $vert = round(($img_h/2)-(imagefontheight($font_size)/2));
  49.  
  50. // umieść wygenerowany tekst na tle
  51. imagestring($img_handle, $font_size, $horiz, $vert, $hash_string, $text_colour);
  52.  
  53. // tworzenie obrazu
  54. imagejpeg($img_handle);
  55.  
  56. // usuwanie obrazu
  57. imagedestroy($img_handle);
  58.  
  59. ?>


Ten post edytował agnes 13.12.2009, 15:53:35
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
maxil
post
Post #2





Grupa: Zarejestrowani
Postów: 212
Pomógł: 11
Dołączył: 8.11.2008
Skąd: Sieradz

Ostrzeżenie: (10%)
X----


jak wywołujesz ten skrypt? include lub require_once?
Go to the top of the page
+Quote Post
agnes
post
Post #3





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 13.12.2009

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


Cytat(maxil @ 13.12.2009, 20:57:35 ) *
jak wywołujesz ten skrypt? include lub require_once?


Ani tej ani tej (IMG:style_emoticons/default/co_jest.gif) mam formularz, w którym skrypt obrazka captcha jest wywoływany następująco:

  1. <form method="post" action="process.php">
  2. <img src="captcha.php">
  3. <input type="text" name="image">
  4. <input type="submit" value="Wyślij">
  5. <input type="button" value="Odśwież" onClick="window.location.reload()">
  6. </form>

Go to the top of the page
+Quote Post
Daiquiri
post
Post #4





Grupa: Administratorzy
Postów: 1 552
Pomógł: 211
Dołączył: 7.07.2009
Skąd: NJ




Nie masz pewnie odpowiedniej biblioteki GD, ewentualnie masz ustawiony limit pamięci.

Ten post edytował Daiquiri 15.12.2009, 20:10:54
Go to the top of the page
+Quote Post
Pilsener
post
Post #5





Grupa: Zarejestrowani
Postów: 1 590
Pomógł: 185
Dołączył: 19.04.2006
Skąd: Gdańsk

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


Jeżeli używasz jakiegoś skryptu to jasno powinno być napisane w readme/nagłówku/dokumentacji etc. jakie ma wymagania (np. PHP 5.0+, MYSQL 3.0+, GD, LDAP, memory limit +32MB itp. itd. etc.), jeśli kupujesz hosting to także jasno masz podane, jakie ma parametry i możliwości. Często niestety jest tak, ze autorzy skryptów mają głęboko, że nie będzie działał na innym serwerze niż ich - nie płacisz, więc nie wymagasz.
Go to the top of the page
+Quote Post
agnes
post
Post #6





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 13.12.2009

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


Dzięki za odpowiedzi (IMG:style_emoticons/default/smile.gif)

Rozumiem, że problem leży albo w skrypcie albo w serwerze, albo w jednym i drugim.

Z tego co piszecie aby rozwiązać problem to powinnam - zmienić serwer najlepiej na płatny lub jak wspomniał Pilsener - w nagłówku zdefiniować wymagania.

Niestety firma hostingowa nie poinformowała mnie, mimo znajomości mojego problemu o tym, że dana usługa jest dostępna w płatnym hostingu (były tam opcje płatny bezpłatny).

Jeśli chodzi o PHP to nawet nie raczkuję, tylko leżę w kołysce (IMG:style_emoticons/default/smile.gif)
Więc czy moglibyście mi napisać jak ma wyglądać taki nagłówek ?



Ten post edytował agnes 16.12.2009, 16:17:59
Go to the top of the page
+Quote Post
Pilsener
post
Post #7





Grupa: Zarejestrowani
Postów: 1 590
Pomógł: 185
Dołączył: 19.04.2006
Skąd: Gdańsk

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


A skąd masz skrypt, którego używasz? Ściągam pierwszy lepszy z netu i w pliku readme.txt (czyli czytaj mnie) pisze:
Cytat
Ihr braucht Webspache mit php >= 4.3.0 und gdlib > 2.0
- co prawda po niemiecku, ale łatwo można wywnioskować, że skrypt wymaga PHP w wersji większej lub równej 4.3 i gdlibrary (biblioteki gd) w wersji starszej niż 2.0. Czytajmy chociaż wstęp do dokumentacji skryptów, których używamy. Jeśli skrypt nie ma żadnego opisu/readme dokumentacji to wywal go i zacznij używać czegoś porządnego, prawdopodobnie jest to jakaś prowizorka (jak 90% darmowych skryptów) i nalezy się liczyć z tym, że w większości przypadków rzadko działa tak, jak zakładał autor, choćby dlatego, że nie są na bieżąco usuwane bugi i błędy.
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: 22.12.2025 - 19:49