Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Wprowadź kod z obrazka...
Sublove
post 28.01.2009, 11:41:37
Post #1





Grupa: Zarejestrowani
Postów: 45
Pomógł: 0
Dołączył: 23.01.2009

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


Ma swojej stronie mam możliwość wysyłania maila przez internatutów, chciałbym wstawić powszechnie znany patent chroniący przez atakiem automatów wysyłających złośliwie duże ilości maile. Miannowicie pole: przepisz kod z obrazka.
Jak to zrobić?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 9)
nospor
post 28.01.2009, 11:42:33
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




kurcze.... poczytaj o CAPTCHA a dowiesz sie jak to zrobic. Znajdziesz tez mase kodow


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
seba22
post 28.01.2009, 11:48:07
Post #3





Grupa: Zarejestrowani
Postów: 293
Pomógł: 4
Dołączył: 28.01.2005

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


Ja polecam TO:

http://recaptcha.net/learnmore.html

Do mniej ważnych spraw używam http://www.phpcaptcha.org/

ale do tych ważniejszych czyli rejestracja, to jednak polecam http://recaptcha.net/learnmore.html
moim zdaniem jest trudniejsze, a co za tym idzie bardziej efektowne.

Jak pobierzesz kod recaptacha, to masz przykłady implementacji. wliczając w to aplikacje oparte na PHP, więc swój formularz zabezpieczysz w ciągu nie wiem, maksymalnie 10 minut ?.


--------------------
Go to the top of the page
+Quote Post
c3zi
post 28.01.2009, 12:18:35
Post #4





Grupa: Zarejestrowani
Postów: 266
Pomógł: 20
Dołączył: 15.11.2006
Skąd: Koszalin

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


Ukryte pole + sprawdzenie czy automat wstawił tam jakąś wartość nie wystarczy ?
Pytam, ponieważ strasznie nie lubię tego typu zabezp. Często są bardziej uciążliwe dla użytkownika niż dla bota ...


--------------------
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Go to the top of the page
+Quote Post
Sublove
post 28.01.2009, 12:31:37
Post #5





Grupa: Zarejestrowani
Postów: 45
Pomógł: 0
Dołączył: 23.01.2009

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


Próbowałem zaimplementować CAPCHA do swojego formularza ale poległem:
Caly czas mam komunikat:
Notice: Undefined index: captcha in D:\wamp\www\kontakt.php on line 46

może źle zrozumiałem instrukcję: http://www.encaps.net/software/php-captcha/

Nie wiem... gdzie robię błąd?

  1. Skontaktuj się z nami za pomocą poniższego formularza, odpiszemy do Ciebie.
  2. <form  method="POST">
  3. <table>
  4.  <tr><td><input name="imienad" type=text> Twoje imię</td></tr>
  5.  <tr><td><input name="mailnad" type=text> Twój e-mail</td></tr>
  6.  <tr><td height="4"></td></tr>
  7.  <tr><td>Wiadomość</td></tr>
  8.  <tr><td><textarea name="tresc" cols="50" rows="5"></textarea></td></tr>
  9.  <tr><td align="center">CAPTCHA:<br>
  10.    (antispam code, 3 black symbols)<br>
  11.    <table><tr><td><img src="captcha.php" alt="captcha image"></td>
  12.    <td><input type="text" name="captcha" size="3" maxlength="3"></td></tr></table>
  13.  
  14.  <tr><td><input type="submit" name="wyslij" value="Wyślij"></td></tr>
  15. </table>
  16. </form>
  17.  
  18. <?php
  19. if (isset($_POST['wyslij']) && $_POST['wyslij'] == 'Wyślij') {
  20.  
  21. if(isset($_POST["captcha"]))
  22. if($_SESSION["captcha"]==$_POST["captcha"])
  23. {
  24.    
  25. $Name=$_POST["imienad"];
  26. $email=$_POST['mailnad'];
  27. $recipient="[email="tomczak@gandalf.mac.edu.pl"]tomczak@gandalf.mac.edu.pl[/email]";  
  28. $mail_body=$_POST['tresc'];
  29. $subject="Zapytanie ze strony www";
  30.  
  31. if(empty($Name) OR empty($email) OR empty($mail_body))
  32. {
  33. printf ("<a id='err'><b>Błąd wprowadzania!</b></a><br/>");
  34. echo'Upewnij się czy wypełniłeś wszystkie pola...';
  35. } else {
  36. $pos1 = strpos($email, [email=""]'@'[/email]);
  37. $pos2 = strpos($email, '.');
  38. if (($pos1 === false) OR ($pos2 === false))
  39. {
  40. printf ("<a id='err'><b>Błąd wprowadzania!</b></a><br/>");
  41. echo 'Sprawdź adres email...';
  42. } else {
  43. printf ("<a id='inf'><b>Wiadomość wysłana, dziękujemy!</b></a><br/>");
  44.  
  45. $header = "From: ". $Name . " <" . $email . ">r\n";
  46. $header .= "Content-type: text/html; charset=iso-8859-2r\n";
  47. $header .= "Content-Transfer-Encoding: 8bitr\n ";
  48.  
  49. if($_SESSION["captcha"]==$_POST["captcha"])
  50. {
  51.  
  52. mail($recipient, $subject, $mail_body, $header);
  53. }
  54. }
  55. }
  56. }
  57.  
  58.  
  59.  
  60.  
  61. else
  62. {
  63.    echo 'CAPTCHA is not valid; ignore submission';
  64. }
  65. }
  66. ?>




Cytat(c3zi @ 28.01.2009, 12:18:35 ) *
Ukryte pole + sprawdzenie czy automat wstawił tam jakąś wartość nie wystarczy ?
Pytam, ponieważ strasznie nie lubię tego typu zabezp. Często są bardziej uciążliwe dla użytkownika niż dla bota ...



w stylu hidden do formularza....? Ale nierozumiem. Czy uzytkownk musiałby zawsze wpisywać wartość tego pola żeby wysłać maila?
Go to the top of the page
+Quote Post
seba22
post 28.01.2009, 12:42:12
Post #6





Grupa: Zarejestrowani
Postów: 293
Pomógł: 4
Dołączył: 28.01.2005

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


1)

Uruchom obsługę sesji na początku skryptu
.
  1. <?php
  2. ?>


To bym dał od razu pod,
  1. <?php
  2. else
  3. {
  4.   echo 'CAPTCHA is not valid; ignore submission';
  5. }
  6. ?>



  1. <?php
  2. if($_SESSION["captcha"]==$_POST["captcha"])
  3. {
  4.  
  5. mail($recipient, $subject, $mail_body, $header);
  6. }
  7. ?>


Jeżeli jest poprawna -> wyślij mail, jeżeli NIE -> wywal komunikat.



Zabezpieczenie kolegi, przypomina raczej ochronę przed csrf.
Biblioteką curla, można rozłożyć takie zabezpieczenie.


--------------------
Go to the top of the page
+Quote Post
Sublove
post 28.01.2009, 12:51:00
Post #7





Grupa: Zarejestrowani
Postów: 45
Pomógł: 0
Dołączył: 23.01.2009

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


tak zrobiłem i nie bangla sad.gif
Go to the top of the page
+Quote Post
seba22
post 28.01.2009, 12:58:50
Post #8





Grupa: Zarejestrowani
Postów: 293
Pomógł: 4
Dołączył: 28.01.2005

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


Głupio że się muszę o to pytać, ale co wypluwa...

I pokaż w którym miejscu masz ten ERROR.


--------------------
Go to the top of the page
+Quote Post
Sublove
post 28.01.2009, 14:29:55
Post #9





Grupa: Zarejestrowani
Postów: 45
Pomógł: 0
Dołączył: 23.01.2009

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


23 wiersz w zamieszczonym przeze mnie kodzie (23 wiersz w bbcode)
komunikat zamieściłem w poprzednim poście sad.gif
Go to the top of the page
+Quote Post
erix
post 28.01.2009, 19:00:59
Post #10





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




A czy Ty prawidłowo startujesz sesję? I we wszystkich plikach?

Daj gdzieś var_dump" title="Zobacz w manualu PHP" target="_manual na tablicę sesyjną; sprawdź, czy wszędzie są takie same identyfikatory (odpowiednie ciacho w przeglądarce).


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 03:22