Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Formularz
Forum PHP.pl > Forum > PHP
Draraki
Witam. Otóż mam sobie taki formularz napisany smile.gif
Tyle że można na nim spamić ile wlezie, a chodzi mi o to jak nałożyć ograniczenie że max 1 wpis na 24h z IP.
Jak widać skrypt dodaje wpisy do mysql i odczytuje je smile.gif

Tutaj kod:

index.php
  1. <form action="wysylka.php" method="post">
  2. Wpis:<br />
  3. <input type="text" name="wpis" /><br />
  4. <input type="submit" value="dodaj" />
  5. </form>
  6.  
  7.  
  8. Wpisy:
  9. <?php
  10. mysql_connect("localhost","xxxxxxxxxxxxx","xxxxxxxx") or die("Error, MySQL is not connect");
  11. mysql_select_db("xxxxxxxxxxxxxx") or die ("Error");
  12. $wynik = mysql_query("SELECT * FROM test")
  13. or die('Błąd zapytania');
  14.  
  15.  
  16. if(mysql_num_rows($wynik) > 0) {
  17. while($r = mysql_fetch_assoc($wynik)) {
  18. echo "".$r['wpis']."<br>";
  19. }
  20. }
  21.  
  22. ?>





wysylka.php
  1. <?php
  2. // odbieramy dane z formularza
  3. $wpis = $_POST['wpis'];
  4.  
  5. if($wpis) {
  6.  
  7. // łączymy się z bazą danych
  8. $connection = @mysql_connect('localhost', 'xxxxxxxxxxxxxx', 'xxxxxxxxxxxxxxxxx')
  9. or die('Brak połączenia z serwerem MySQL');
  10. $db = @mysql_select_db('xxxxxxxxxxxx', $connection)
  11. or die('Nie mogę połączyć się z bazą danych');
  12.  
  13. // dodajemy rekord do bazy
  14. $ins = @mysql_query("INSERT INTO test SET wpis='$wpis'");
  15.  
  16. if($ins) echo "Wpis został dodany";
  17. else echo "Błąd nie udało się dodać nowego wpisu";
  18.  
  19. mysql_close($connection);
  20. }
  21.  
  22. ?>


Ktoś mnie może naprowadzi jak dodać to ograniczenie (1 wpis z IP na 24h)? tongue.gif Na PHP nie znam się zbyt dobrze, właściwie to tylko podstawy tongue.gif
Za pomoc będę bardzo wdzięczny.
Niktoś
Nie rób po żadnym Ip ,bo Ci to przysporzy więcej problemów niż korzyści. Po prostu sprawdzaj przed wysyłką w bazie danych czy dany użytkownik już wysłał emaila.Do tego celu wymagane by było dodatkowe pole czas wysyłki lub pole typu bit(0-nie wysłane, 1 -wysłane).Potem za pomocą event sheduler w mysql należałoby resetować co dziennie te ustawienia lub za pomocą crona,który by odpalał co 24h skrypt,który by to robił.
Draraki
Tak biggrin.gif
Tylko że to nie wysyła na email tylko do mysql i od razu to wywala na stronę bo to jest taka "tablica ogłoszeń" gdzie drużny będą szukać przeciwników do gry ;p
IceManSpy
Na IP nie możesz zakładać ograniczeń z kilku powodów:
1. Ktoś może mieć zmienne IP
2. Ktoś może należeć do sieci osiedlowej, gdzie np blok ma jedno wspólne wyjściowe IP

Rozwiązaniem może być ciastko, ale jak ktoś go usunie to znowu będzie mógł napisać. Nie ma całkowicie dobrego rozwiązania na unikalność użytkownika.
irekk
Coraz powszechniejsze jest potwierdzanie głosu przez mail'a ale i to nie jest zabezpieczeniem wink.gif
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.