Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Prosty generator captcha + sesje
lDoran
post 15.04.2011, 11:20:10
Post #1





Grupa: Zarejestrowani
Postów: 172
Pomógł: 13
Dołączył: 15.11.2009

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


Witam wymodziłem prosty generator kodu captcha:
  1. <?php
  2. /* START GENERATOR CAPTCHA */
  3. function captchaGenerator() {
  4. $sAplhaNum = 'QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm0123456789';
  5. $_SESSION['captcha'] = substr(str_shuffle($sAplhaNum), 0, 5);
  6. $sRand2 = substr(str_shuffle($sAplhaNum), 0, 5);
  7.  
  8. header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
  9. header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
  10. header("Cache-Control: no-store, no-cache, must-revalidate");
  11. header("Cache-Control: post-check=0, pre-check=0", false);
  12. header("Pragma: no-cache");
  13. header('Content-type: image/png');
  14.  
  15. $image = imagecreatetruecolor(60, 30);
  16. $white = imagecolorallocate($image, 255, 255, 255);
  17. imagefilledrectangle($image, 0, 0, 120, 40, $white);
  18. $greylight = imagecolorallocate($image, 199, 199, 199);
  19. $black = imagecolorallocate($image, 0, 0, 0);
  20. imagestring ($image, 5, 8, 4, $sRand2, $greylight);
  21. imagestring ($image, 5, 12, 5, $_SESSION['captcha'], $black);
  22. imagepng($image);
  23. imagedestroy($image);
  24. }
  25.  
  26. captchaGenerator();
  27. /* END GENERATOR CAPTCHA */
  28. ?>

Jednak przy pierwszym wyświetleniu na stronie zmienna sesyjna nie istnieje, a obrazek jest wyświetlany. Każde kolejne wyświetlenie zmienna sesyjna pokazuje n-1 kod obrazka gdzie n to aktualny kod obrazka. W czym tkwi problem?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
auto-all
post 15.04.2011, 11:46:16
Post #2





Grupa: Zarejestrowani
Postów: 49
Pomógł: 7
Dołączył: 2.04.2011
Skąd: Wawa

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


Sprawdzałem to u siebie lokalnie i nie widzę problemu.

Dane zapisane w pliku sesji: captcha - "9XkbD" - pierwsze wywołanie i tak tez było na obrazku

Ten post edytował auto-all 15.04.2011, 11:47:01
Go to the top of the page
+Quote Post
neosatan
post 15.04.2011, 20:12:02
Post #3





Grupa: Zarejestrowani
Postów: 79
Pomógł: 2
Dołączył: 29.04.2009
Skąd: wrocław

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


a takie moje pytanie: a po co to? pytam, bo nigdy czegoś takiego nie widziałem, by w sesji coś takiego zapisywać (zreszta boty mogą z cookie to odczytać).

@Bags_Bunny. Racja. lecz dalej się zastanawiam, po co w sesji wartość captcha przechowywać?

Ten post edytował neosatan 16.04.2011, 08:37:31


--------------------
C/C++ (ucze się...), PHP (ucze się...), SMARTY(ucze się...), PYTHON(ucze się...), C#(uczę się...), PERL(uczę się...), JavaScript(uczę się...), JAVA(będą mi kazali się uczyć...)... Ja się głównie uczę...
Go to the top of the page
+Quote Post
Bags_Bunny
post 15.04.2011, 23:21:36
Post #4





Grupa: Zarejestrowani
Postów: 262
Pomógł: 39
Dołączył: 12.04.2004

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


A od kiedy to zawartość sesji siedzi w ciachu?


--------------------
rm -rf /*
Go to the top of the page
+Quote Post
Rid
post 16.04.2011, 00:20:39
Post #5





Grupa: Zarejestrowani
Postów: 715
Pomógł: 47
Dołączył: 5.12.2010

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


Nom, w ciachu przechowywany jest tylko id sesji,co nie znaczy,że to jest najbezpieczniejszy sposób, lepiej można by użyć np.cache.
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: 27.06.2025 - 22:32