Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] Blokada czasowa formularza
Forum PHP.pl > Forum > Przedszkole
artekp999
Otóż mam pewien problem jak dodać blokadę czasową do poniższego formularza. Bardzo mi na tym zależy aby moi użytkownicy nie spamowali mi stronki. Chcę założyć blokadę 1 dodanie na 60 min. Do tabeli w Mysql zapisuje mi autora i czas dodania oferty ale nie wiem jak to porównać i zablokować dostęp na dany czas. Słyszałem też o sposobie z ciasteczkami lecz nie mam pomysłu jak to użyć

Teraz mam jeszcze jedno pytanie. Jak zrobić aby podczas logowania po 3 nieudanych próbach logowania zablokować dostęp na 15 min.

  1. <?php
  2. $tytul = "System newsów - Dodaj";
  3. include ('glowne/gora.php');
  4. include("zabezpieczenie.php");
  5. if(isset($_POST['nazwa']))
  6. {
  7. $data = date('Y-m-d-G:i:s');
  8. $autor = $_SESSION['nick'];
  9. $idautor = $user[id];
  10. }
  11. else
  12. {
  13. echo '<form action="dodaj.php" method="post">
  14. <input type="hidden" name="send" value="1">
  15. <br />Tytuł oferty:<br /><input type="text" name="nazwa" value="" /><br />
  16. Treść:<br /><textarea name="tresc" cols="50" rows="10" id="textarea" id="textarea"></textarea><br />
  17. <br />Autor: <b>'.$_SESSION['nick'].' (ID '.$user[id].')</b> <br><input type="hidden" name="autor" value="'.$_SESSION['nick'].'" /><br />
  18. <br /><br />
  19. <input name="dodaj" type="submit" value="Dodaj">
  20. <input name="wyczysc" type="reset" value="Wyczyść">
  21. </form<br /><br />';
  22. }
  23. if((isset($_POST['dodaj'])))
  24. {
  25. if(empty($_POST["nazwa"]) || empty($_POST["tresc"]) || empty($_POST["autor"]) and isset($_POST['nazwa']))
  26. {
  27. echo 'Nie wypełniono wszystkich pól<br>';
  28. echo '<a href="dodaj.php">Wróc aby poprawnie wypelnic formularz</a>';
  29. }
  30. else
  31. {
  32. $zapytanie = "INSERT INTO `oferty` (`nazwa`, `tresc`, `autor`, `data`, `idautor`) VALUES ('".$nazwa."', '".$tresc."', '".$autor."', '".$data."', '".$idautor."')";
  33. $idzapytania = mysql_query($zapytanie) or die(mysql_error());
  34. }
  35. if($_POST['send'])
  36. {
  37. if(isset($idzapytania))
  38. {
  39. if($idzapytania === TRUE)
  40. {
  41. echo '<font color="green"><b>Nowy news został dodany.</font><br> Link do newsa : <br> <input type="text" name="name" readonly="readonly" size="50" value="id='.$id.'" /> </b><br><p>';
  42. echo '<a href="index.php">Wróc na stronę główną</a><br>';
  43. echo '<a href="dodaj.php">Dodaj kolejnego newsa</a>';
  44. }
  45. else
  46. {
  47. echo '<font color="red"><b>Nie udało się dodać newsa. Proszę spróbować za jakiś czas!</b></font><br />';
  48. echo '<a href="index.php">Wróc na stronę główną</a><br>';
  49. }
  50. }
  51. }
  52. }
  53. include ('glowne/stopka.php');
  54. ?>
kill15
ściągnąć czas funkcją time, zapisać do bazy
i potem ściągnąć z bazy danych i porównać snitch.gif
w czym problem ?

PS: dodatkowo jeśli chcesz wyświetlać to to poczytaj o funkcji date
artekp999
tez wiem jak to mam zrobić ale jednak ciągle nie wychodzi

nie wiem jak mam porównac godzinę z tabeli z obecną godziną
mat-bi
Kurde, czy manual gryzie sleep.gif

http://dev.mysql.com/doc/refman/5.1/en/datetime.html
kill15
Cytat(artekp999 @ 4.05.2011, 14:52:34 ) *
tez wiem jak to mam zrobić ale jednak ciągle nie wychodzi

nie wiem jak mam porównac godzinę z tabeli z obecną godziną


Odejmij wynik z bazy od aktualnego czasu i potem warunek że jeśli reszta jest większa od 60 min to moze dodać a jeżeli nie to nie.
W przypadku zarejestrowanych to według mnie bardziej na miejscu było że w tabeli user czy jaką tam masz z użytkownikami dać kolumnę np "Ostatnio dodana" w której była by ostatnio dodana oferta i z tego byś sprawdzał ;>


PS: tylko nie zapomnij że cały czas tu musisz operować na funkcji time a jak już mówiłem wyświetlić możesz funkcją date
artekp999
TEMAT DO ZAMKNIĘCIA

Problem rozwiązany , jutro dam kod może pomoże innym
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.