Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Dlaczego captcha wyświetla się na jednym serwerze, a na innym nie ?
Forum PHP.pl > Forum > Przedszkole
agnes
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. ?>
maxil
jak wywołujesz ten skrypt? include lub require_once?
agnes
Cytat(maxil @ 13.12.2009, 20:57:35 ) *
jak wywołujesz ten skrypt? include lub require_once?


Ani tej ani tej 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>

Daiquiri
Nie masz pewnie odpowiedniej biblioteki GD, ewentualnie masz ustawiony limit pamięci.
Pilsener
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.
agnes
Dzięki za odpowiedzi 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 smile.gif
Więc czy moglibyście mi napisać jak ma wyglądać taki nagłówek ?

Pilsener
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.
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.