Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Zablokowanie możliwości wysyłania czasowo
Forum PHP.pl > Forum > Przedszkole
jacobson
Witam, chce zrobic u siebie na stronie dodatkowe zabezpieczenie formularza kontaktowego, zeby byl blokowany na 2 minuty po ostatnim wyslaniu wiadomosci uzytkownika. Zastanawialem sie czy moze ustawic w sesji czas ostatniego wyslania wiadomosci i przy probie wyslania sprawdzac czy minely 2 minuty. Na stronie nie mam systemu uzytkownikow (logowanie itp) dlatego kazdy jest gosciem. Dlatego zastanawiam sie czy takie rozwiazanie jest dobre. Myslalem tez o wstawianiu "logow" do bazy mysql wraz z adresem IP uzytkownika.
Moze ktos juz mail do czynienia z takim skryptem i moglby mi podsunac jakis dobry pomysl smile.gif
pozdrawiam
cer98
pole hidden z unikalnym tokenem np.

  1.  
  2. public function genId(){
  3. $sKey = md5(time() * rand(0, 999999));
  4. return $sKey;
  5. }
  6.  
  7.  
  8. print $form->dodaj_element('hidden','sessionId','',$calculator->genId(),'','','','','','','');
  9.  
  10.  
  11.  
  12. if($calculator->checkSession($calculator->dataGet['sessionId']) && !empty($calculator->dataGet['Time']))
  13.  
  14. public function checkSession($action){
  15.  
  16. if($action != $_SESSION['Id']){
  17. $_SESSION['Id'] = $action;
  18. return true;
  19. } else {
  20. //$this->errors[] = 'Refresh';
  21. return false;
  22. }
  23. }
  24.  
jacobson
proboje analizowac ten kod ale nie rozumiem do konca po co ten randomID, czy sam czas nie wystarczy. Wedlug tego co napisales przy kazdym uruchomieniu formularza kontaktowego bedzie juz wygenerowane pole hidden z unikatowym id sesji tak wiec po wyslaniu wiadomosci, po tym jak to wszystko zostanie wpisane do Twojej sesji, ten id i time to po ponownym uruchomieniu formularza, session id w polu hidden bedzie juz inne bo znowu zostanie wywolana funkcja genID().
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.