Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php] AntySpam komentarze. Problem z rand.
mariuszstanikows...
post
Post #1





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 19.02.2007

Ostrzeżenie: (0%)
-----


Witam,
Zbudowałem taki system antyspamowy dla dodawania komentarzy. Tzn. mam formularz z kilkoma polami i są losowane trzy cyfry, które tworzą liczbę i jeżeli w polu spam jest wpisana liczba z wylosowanych cyfr to komentarz zostaje dodany.
No właśnie.. niestety nie zostaje dodany, nie wiem z czego to wynika. Gdy usunę opcję z tym anty spamem to wszystko chodzi... Może ktoś widzi coś czego ja nie widzę ?

  1. <?php
  2. $a = rand(1,9);
  3. $b = rand(1,9);
  4. $c = rand(1,9);
  5. $spam = "".$a."".$b."".$c."";
  6. if (addslashes($_POST['nick']) && addslashes($_POST['tresc']) && addslashes($_POST['spam'])==$spam) {
  7. $zapytanie_add = "INSERT INTO komentarze VALUES ('".addslashes($_POST['nick'])."','".addslashes($_POST['tresc'])."')";
  8. $wynik_add = mysql_query($zapytanie_add);
  9. if ($wynik_add){
  10. echo "<strong>Komentarz został pomyślnie dodany!</strong>";
  11. }
  12. }
  13. ?>


Ten post edytował mariuszstanikowski 20.08.2009, 18:17:54
Go to the top of the page
+Quote Post
-=Peter=-
post
Post #2





Grupa: Zarejestrowani
Postów: 304
Pomógł: 51
Dołączył: 4.02.2005
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Prawdopodobieństwo, że komentarz zostanie dodany to 1/(9*9*9) (jeśli $_POST['spam'] to trzy cyfrowa liczba nie zawierająca zer). Co kryje się się pod zmienną $_POST['spam']? Jakim prawem ta zmienna ma być równa dopiero co wylosowanej liczbie? Czemu poprostu liczby nie wylosujesz za pomocą rand(100, 999) (nie chcesz mieć zer?)? Chyba próbujesz zrobić coś na wzór captcha, więc poszukaj w googlach pod hasłem "captcha".

Liczbę musisz wylosować, gdy wyświetlasz formularz, zapisać ją np. w sesji i gdy formularz został wysłany sprawdzić czy użytkownik wpisał taką samą liczbę.

Ten post edytował -=Peter=- 20.08.2009, 18:30:25
Go to the top of the page
+Quote Post
mariuszstanikows...
post
Post #3





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 19.02.2007

Ostrzeżenie: (0%)
-----


$_POST['spam'] jest to wysyłana zawartość pola w formularzu w które wpisujemy wylosowaną liczbę. jeżeli komentarz ma zostać dodany musi być wprowadzona taka sama jak ta wylosowana.
nie losuję jednej liczby, ponieważ mam grafiki od 1-9 i losuję trzy cyfry aby z grafik ułożyło mi liczbę.
Liczba jest losowana gdy wyświetlam formularz...

Kod formularza:

  1. <form action="index.php?go=wiecejnews&amp;id=<? echo $id; ?>" method="POST" style="display: inline;">
  2. <table width="100%" summary="">
  3. <tr>
  4. <td><input type="text" name="nick" value="nick" size="24" maxlength="30"></td>
  5. </tr>
  6. <tr>
  7. <td><textarea name="tresc" rows="9" cols="40">treść</textarea></td>
  8. </tr>
  9. <tr>
  10. <td><img alt="" src="img/spam/<? echo $a; ?>.png"> <img alt="" src="img/spam/<? echo $b; ?>.png"> <img alt="" src="img/spam/<? echo $c; ?>.png">
  11. </td>
  12. </tr>
  13. <tr>
  14. <td><input type="text" name="spam" value="" size="10" maxlength="10"></td>
  15. </tr>
  16. <tr>
  17. <td><input type="submit" value="Dodaj"><input type="reset" value="Wyczyść"></td>
  18. </tr>
  19. </table></form>


Ten post edytował mariuszstanikowski 20.08.2009, 18:32:13
Go to the top of the page
+Quote Post
-=Peter=-
post
Post #4





Grupa: Zarejestrowani
Postów: 304
Pomógł: 51
Dołączył: 4.02.2005
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Wyświetlając formularz losujesz trzycyfrową liczbę, zapisujesz ją w sesji. Użytkownik wypełnia formularz, wpisuje do jednego z inputów ten kod co ma na obrazku, wysyła formularz. Po wysłaniu sprawdzasz, czy $_POST['spam'] == $_SESSION['spam'], tylko czasem nie generuj nowej liczby po wysłaniu formularza (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
mariuszstanikows...
post
Post #5





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 19.02.2007

Ostrzeżenie: (0%)
-----


No właśnie chyba cały sęk i problem w tym, że po wysłaniu formularza cyfry losują się od nowa i dlatego nie porównuje z tymi wcześniej wylosowanymi tylko z tymi nowymi....

Ten post edytował mariuszstanikowski 20.08.2009, 18:47:59
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 20:27