Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] AntySpamBot
Forum PHP.pl > Forum > PHP
partoles
Witam państwa serdecznie,
Mam problem, niestety z Botami, potrafią wysyłać po 30 wiadomości do ShoutBoxa, a nawet za spamować moduł.
Nie wiem co mam robić.
Szukam łatwego sposobu zapory przeciwko nim, np: pytanie 2+7 = ?

W formularzu dodałem następujący punkt:
  1. function wspolpraca() {
  2. $data = date("Ym");
  3. echo'';
  4. echo("<form method=\"post\" action=\"wspolpraca.php?cmd=wspolpraca_dodawanie\">
  5. Imie Dyrektora:<br>
  6. <input type=\"text\" name=\"imie\"><br>
  7. Nazwisko Dyrektora:<br>
  8. <input type=\"text\" name=\"nazwisko\"><br>
  9. Mail Dyrektora:<br>
  10. <input type=\"text\" name=\"mail\"><br>
  11. GG Dyrektora:<br>
  12. <input type=\"text\" name=\"gg\"><br>
  13. Adres Szkoly/Organizacji(bez http:// i www):<br>
  14. <input type=\"text\" name=\"daktyl\"><br>
  15. Nazwa Szkoly/Organizacji:<br>
  16. <input type=\"text\" name=\"nazwa\"><br>
  17. Pytanie: 2+7 = ?:<br>
  18. <input type=\"text\" name=\"oblicz\"><br>
  19. <input type=\"hidden\" name=\"akcja\" value=\"wspolpraca_dodawanie\"><br>
  20. <input type=\"submit\" value=\"Wysli\">
  21. </form>
  22. ");
  23. }
  24.  
  25. function wspolpraca_dodawanie() {
  26. $data = date("Ym");
  27. global $imie, $nazwisko, $mail, $gg, $daktyl, $nazwa, $acc, $cmd;
  28. if($imie==''){echo"Formularz nie wypełniony poprawnie: puste pola sa niedozwolone!Pole 1";}
  29. elseif($nazwisko==''){echo"Formularz nie wypełniony poprawnie: puste pola sa niedozwolone!Pole 2";}
  30. elseif($mail==''){echo"Formularz nie wypełniony poprawnie: puste pola sa niedozwolone!Pole 3";}
  31. elseif($gg==''){echo"Formularz nie wypełniony poprawnie: puste pola sa niedozwolone!Pole 4";}
  32. elseif($daktyl==''){echo"Formularz nie wypełniony poprawnie: puste pola sa niedozwolone!Pole 5";}
  33. elseif($nazwa==''){echo"Formularz nie wypełniony poprawnie: puste pola sa niedozwolone!Pole 6";}
  34. else { $potwierdz = 1; }
  35. if($potwierdz=='1'){
  36. $zapytanie="INSERT INTO daktyle (imie, nazwisko, mail, gg, daktyl, nazwa, acc)
  37. VALUES ('$imie', '$nazwisko', '$mail', '$gg', '$daktyl', '$nazwa', '0')";
  38. $wynik=mysql_query($zapytanie);
  39. $id = mysql_insert_id();
  40. echo("Podanie o Współpracę Zostanie Niebawem Rozpatrzone.Mail z potwierdzeniem wypełnienia formularza dojdzie w ciągu 2h..");
  41. echo' <BR>
  42. </center>
  43. ';
  44.  
  45. mail("".$mail."", "***");
  46. }
  47. }

Teraz narasta pytanie co dodać w funkcję wspolpraca_dodawanie, aby mógł sprawdzić czy odpowiedź jest poprawna.
melior
Ja bym dodał taki fragment

  1. (...)
  2. else { $potwierdz = 1; }
  3.  
  4. if($oblicz!=9){ echo "Botów nie obsługujemy."; $potwierdz=0}
  5.  
  6. if($potwierdz=='1'){
  7. $zapytanie="INSERT INTO daktyle (imie, nazwisko, mail, gg, daktyl, nazwa, acc)
  8. VALUES ('$imie', '$nazwisko', '$mail', '$gg', '$daktyl', '$nazwa', '0')";
  9. (...)
Fifi209
Do formularza możesz dodać jakiś losowy ciąg jako ukryte pole i zapisać w sesji, robi tak np. nk.pl
partoles
Mam problem, jak wpiszę np: 9 to pojawia się komunikat "Botów nie obsługujemy!"
Fifi209
Bo masz wyłączone register_globals, z resztą słusznie.

Zamiast $oblicz powinno być: $_POST['oblicz']
partoles
Pomogło, temat można zamknąć.
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.