Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php]Zagadka dotyczaca sesji
Forum PHP.pl > Forum > Przedszkole
Lk_hc
Witajcie,

Mam wrażenie że napisałem całkiem znośny skrypt którego zadaniem jest pozwalanie uzytkownikowi na wykonanie pewnej czynności raz na minutę (nie częściej). Osobiście kod mi się podoba. Ma jednak jedną zasadniczą wadę: nie wykonuje zadanej czynności za pierwszym wywołaniem. Test na inteligencję: kto powie jak to zrobić żeby przy pierwszym wywołaniu wykonywał czynność a przy kolejnych standardowo odmierzał minutę odstępu.

Wszystko oparte jest o sesję bo mechanizm składa się z dwóch plików. Oto one:

1. Pierwszy - z niego następuje wywoałenie drugiego wykonującego zadaną czynność.
  1. <?php
  2.  
  3. if ( !isset($_SESSION['start_limit_handler']) )
  4. { $_SESSION['start_limit_handler'] = date ("i"); }
  5.  
  6. echo "<a href='cache.php'> check cache </a>\n";
  7.  
  8. ?>


2. Drugi. Tutaj następuje weryfikacja czasu i odpowiednia dla jej wyniku akcja.
  1. <?php
  2.  
  3. $stop_limit_handler = date("i");
  4. if ( isset($_SESSION['start_limit_handler']) )
  5. {
  6. $margin = $_SESSION['start_limit_handler'] - $stop_limit_handler;
  7. }
  8.  
  9. if ( isset($margin) && $margin != 0 )
  10. {
  11. echo "Do something what you want!";
  12. unset( $_SESSION['start_limit_handler'] );
  13. }
  14. else
  15. {
  16. echo " Oh no no! You most now wait 1 minute to do it!
  17. <script language='javascript' type='text/javascript'>
  18. setTimeout('history.back()', 3000)
  19. </script> ";
  20. }
  21. ?>
Moli
Zagadka ? Szukasz kogoś kto Ci rozwiąże problem.
Lk_hc
Też, ale problem jest na tyle niewielki że można go tak nazwać. I tak prędzej czy później to zrobię - a tak, może ktoś jeszcze skorzysta z kodu który napisałem oraz jego poprawionej wersji.
l0ud
'Skrypt' pierwszy:
  1. <?php
  2.  
  3. echo "<a href='cache.php'> check cache </a>\n";
  4.  
  5. ?>


Skrypt drugi:
  1. <?php
  2.  
  3. $stop_limit_handler = time();
  4. if ( isset($_SESSION['start_limit_handler']) )
  5. {
  6. $margin = $stop_limit_handler - $_SESSION['start_limit_handler'];
  7. }
  8.  
  9. if ( isset($margin) && $margin > 60 )
  10. {
  11. $_SESSION['start_limit_handler'] = time();
  12. echo "Do something what you want!";
  13. }
  14. else
  15. {
  16. echo " Oh no no! You most now wait 1 minute to do it!
  17. <script language='javascript' type='text/javascript'>
  18. setTimeout('history.back()', 3000)
  19. </script> ";
  20. }
  21. ?>


Temat chyba nadaje się bardziej do przeniesienia na przedszkole/php smile.gif
Cysiaczek
Tak, tam właśnie wyląduje.
-Lk_hc-
thx
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.