Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Wygenerowany obrazek nie pokazuje się, gdy jest wczytywany za pomocą <img>
kriszna
post
Post #1





Grupa: Zarejestrowani
Postów: 36
Pomógł: 2
Dołączył: 6.07.2007
Skąd: Wola Zabierzowska

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


Witam.
Robię sobie własny skrypt CAPTCHA i mam problem. Kiedy otworze plik php generujący obrazek:
  1. putenv('GDFONTPATH=fonts/');
  2.  
  3. $pool = '23456789';
  4.  
  5. $str = '';
  6. for ($i = 0; $i < 5; $i++){
  7. $str .= substr($pool, mt_rand(0, strlen($pool) -1), 1);
  8. }
  9.  
  10. $string = $str;
  11. $_SESSION['captcha'] = $string;
  12.  
  13. $im = imagecreatefromjpeg('images/captcha.jpg');
  14.  
  15. $font_color = imagecolorallocate($im,255,255,255);
  16.  
  17. $x = 20;
  18.  
  19. for($a=0; $a < 7; $a++){
  20. imagettftext($im, 10, 10, 10+($a*20), 20, $font_color, 'fonts/CALIBRIB.ttf', substr($string, $a, 1));
  21. $x += 15;
  22. }
  23.  
  24. header("Content-type: image/gif");
  25. imagegif($im);
  26. imagedestroy($im);

obrazek pokazuje się. Kiedy natomiast wczytuje obrazek za pomocą <img > pojawia się tekst alternatywny. Plik generujący obrazek jest w podkatalogu folderu w którym mam plik z którego wczytuje obrazek.
Problem występuje na hostingu ugu.pl. Na localhoscie działa mi. Robię coś źle, czy wina hostingu?
Pozdrawiam
kriszna
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
zegarek84
post
Post #2





Grupa: Zarejestrowani
Postów: 1 332
Pomógł: 294
Dołączył: 12.10.2008
Skąd: Olkusz

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


na początku sprawdzałem gdzie indziej - na Twojej stronie zmieniając kod - ale w sumie wtedy pobierało nowe żądanie - potem na localhoście i też działa - ale zauważyłem jeszcze jedną raczej istotną rzecz...

w puźniejszym momencie żeby szybciej odświeżać pod firebugiem dodawałem parametr get do obrazka który się wyświetlał - ale wyświetlał się jakby za wczasu!!! - tzn. obrazek Twój powinien być zależny od Twojej strony i na nim powinien być ten numer co na stronie, a było na odwrót - po zmienieniu obrazka przyjrzałem się numerowi z tego obrazka po czym odświerzałem stronę i dopiero wtedy ten numer obok obrazka był identyczny a nie było obrazka...

generalnie sesję powinieneś mieć pod html'em a przy obrazku ją sczytywać a u Ciebie jest raczej w drugą stronę i coś gdzieś po drodze zależnie od sesji wywalasz - to u góry co podałeś to nie jest cały kod generujący obrazek ;p...

jeśli już to musisz podać zależności między tymi sesjami a obrazkiem gdyż tutaj coś masz nie tak - i w sumie po co startować sesję na obcej stronie gdzie numer i obrazek jest nie potrzebny?? - przy okazji akurat na zewnętrznych stronach tego obrazka nie powinieneś wyświetlać a jeśli chcesz to nie jeden w pętli mógłby tu Ci obciążyć serwer i do tego limit transferu danych ;p

[edit]
to $_SESSION['captcha'] = $string; ustalaj/definiuj na stronie generującej html a w obrazku sczytuj tą zmienną sesyjną...

po zatym chyba jeszcze czegoś nie pokazałeś.... pozatym na końcu skryptu daj jeszcze exit by mieć pewność że skrypt zostaje od razu zakończony... a nagłówki mógłbyś wysłać jak najwcześniej przed generowaniem obrazka (choć różnicy wielkiej to nie robi - gdzieś jeszcze wysyłasz coby nie keszowała przeglądarka więc choćby stąd wiem że to nie pełny kod [Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0]...)...

Ten post edytował zegarek84 9.08.2009, 11:08:30
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: 5.10.2025 - 01:49