Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z zasięgiem zmiennych
Forum PHP.pl > Forum > PHP
lichu10
Witam,

Mam następujący problem:

Robię token do księgi gości. W formularzu gdzie się dodaje wpis w księdze gości wyświetla się obrazek wygenerowany przez PHP.
W celu przekazania wylosowanej przez funkcję rand() zmiennej do weryfikacji rejestruję ją w sesji za pomocą session_register(losowanie);
Jednak za każdym razem gdy wchodzę w ten formularz wyświetla mi się ta sama liczba. Losowane są też kolory tła i tekstu jednak te zmieniają się za każdym razem.
Poniżej załączam treść pliku generującego obrazek:

  1. <?php
  2. header("Content-type: image/png");
  3. $im = @imagecreate(100, 40)
  4. or die("Błąd inicjalizacji biblioteki GD. Skontaktuj się z administratorem serwera!");
  5. $background_color = imagecolorallocate($im, rand(0,255), rand(0,255), rand(0,255));
  6. $text_color = imagecolorallocate($im, rand(0,255), rand(0,255), rand(0,255));
  7. $losuj = rand(0,9).rand(0,9).rand(0,9).rand(0,9).rand(0,9);
  8. $losowanie = $losuj;
  9. session_register(losowanie);
  10. imagestring($im, 5, 28, 12, $losowanie, $text_color);
  11. imagepng($im);
  12. imagedestroy($im);
  13. ?>


Obrazek umieszczony jest za pomocą kodu:

  1. <img src="token.php" border="0">


Po przejściu skryptu weryfikacji danych wylosowana liczba zmienia się! Nie wiem czym taki zachowanie jest spowodowany sad.gif POMOCY tiredsmiley.gif
Ziels
Jedno pytanie - po co robić tokeny? Dla człowieka utrudnienie a bot i tak sobie odczyta napis. Zainteresuj się tym.
Darti
a nie powinny tam być cudzysłowy ?
  1. <?php
  2. session_register("losowanie");
  3. ?>

a później odwołać się
  1. <?php
  2. $_SESSION["losowanie"];
  3. ?>
kwiateusz
Darti a teraz wycinek z manuala

Cytat
Przy korzystaniu z tablicy $_SESSION (lub $HTTP_SESSION_VARS) nie nalezy korzystać z funkcji session_register(), session_is_registered() i session_unregister().


nie prościej od razy zamiast sesion_register dać $_SESSION['losowanie'] = $losuj a potem

imagestring($im, 5, 28, 12, $_SESSION['losowanie'], $text_color);

oczywiście gdzieś tam masz session_start?
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.