Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Jak zabezpieczyć formularz kontaktowy przed spam
#1
Witam. Na dole mam formularz kontaktowy i chciałbym zrobić zabezpieczenie spamowe, ale nie wiem jak. Proszę o pomoc

Kod PHP:
<?php 
    
// sprawdzamy, czy zmienna $submit jest pusta 
    
if (empty($_POST['submit'])) { 
    
// wy_wietlamy formularz 
    
echo "<table border=\"0\"><form method=\"post\"> 
    <tr> 
    <td><span style=\"color: #000; font-size: 10pt; text-align: center;\">Treść wiadomości</td> 
    <td><textarea name=\"tresc\" style=\"width: 250px; height: 100px\"></textarea></td> 
    </tr> 
    <tr> 
    <td><span style=\"color: #000; font-size: 10pt; text-align: center;\">Imię, nazwisko</td> 
    <td><input type=\"text\" name=\"imie\" style=\"width: 250px\"></td> 
    </tr> 
    <tr> 
    <td><span style=\"color: #000; font-size: 10pt; text-align: center;\">Adres e-mail</td> 
    <td><input type=\"text\" name=\"email\" style=\"width: 250px\"></td> 
    </tr> 
    <tr> 
    <td>&nbsp;</td> 
    <td><input type=\"submit\" name=\"submit\" value=\"Wyślij\">&nbsp; 
    </tr> 
    </table>"


        
    
// sprawdzamy, czy zmienne przesłane z formularza nie są puste 
    
elseif (!empty($_POST['tresc']) && !empty($_POST['imie']) && !empty($_POST['email'])) { 
    
// jeżeli powyższy warunek jest spełniony tworzona jest wiadomo_ć 
    // zmienna $message zawiera tre_ć wiadomo_ci 
    
$message "Tre¶ć wiadomo¶ci:\n$_POST[tresc]\nWysłał: $_POST[imie]\ne-mail: $_POST[email]"
    
// zmienna $header zawiera przede wszystkim adres zwrotny 
    
$header "From: $_POST[imie] <$_POST[email]>"
    
// funkcja mail() za pomocą której wiadomo_ć zostanie wysłana 
    
@mail("adres e-mail","Wiadomosc ze strony WWW ","$message","$header"
    or die(
'Nie udało się wysłać wiadomości'); 
    echo 
"<br><br><span style=\"color: #FF0000; text-align:center; font-size: 12pt;\"><strong>Wiadomość została wysłana poprawnie!</strong><br><br><br>"
        echo 
"<br><br><Br><br><br><span style=\"color: #FF0000; text-align:center; font-size: 12pt;\"><strong>Dzięki za wysłanie wiadomośći</strong><br><br><br>"
}    
        else echo 
"<br><br><br><br><br><span style=\"color: #FF0000; text-align:center; font-size: 12pt;\">Wypełnij wszystkie pola formularza!</span><br><br><br><br><br><br><br>"

?>
Odpowiedz
#2
Captcha? W Google znajdziesz.
Odpowiedz
#3
no tak, "przyjaciel forum" pomógł. omg.

co do kodu, specem nie jestem, ale funkcja empty nie wiem czy odpowiednio sie nadaje. zdaje sie że można wprowadzić znaki których byśmy nie chcieli. Poleciłbym raczej zapoznać się z funkcją eregi, poza tym dołączyć captcha tak jak wyżej napisano :] ewentualnie, jak to na niektórych stronach/forach proste działanie które po sprawdzeniu poprawności przekieruje dalej.
Odpowiedz
#4
(04-12-2010, 00:12)Bartekbtm napisał(a): no tak, "przyjaciel forum" pomógł. omg.

co do kodu, specem nie jestem, ale funkcja empty nie wiem czy odpowiednio sie nadaje. zdaje sie że można wprowadzić znaki których byśmy nie chcieli. Poleciłbym raczej zapoznać się z funkcją eregi, poza tym dołączyć captcha tak jak wyżej napisano :] ewentualnie, jak to na niektórych stronach/forach proste działanie które po sprawdzeniu poprawności przekieruje dalej.
1. To już umiejętności szukania posiadać nie trzeba? Phi. W Google są miliony przykładów, tipsów, etc.
2. Eregi jest zdeprecjonowane. Jak już coś to wyrażenia, ale...do czego?
3. Przeczytaj sobie Mistrzu co to w ogóle jest captcha: http://pl.wikipedia.org/wiki/CAPTCHA (masz link, żebyś nawet szukać nie musiał, to przecież trudne i myślenia wymaga).

Smile
Odpowiedz
#5
Mistrzu, więc uzasadnij mi po co są fora, i po co ludzie zadają na nich pytania skoro mogą sobie wszystko znaleźć w google?

Eregi zamiast empty dlatego że można ładnie określić akceptowane znaki, poza tym odnosiło się to do całości kodu, nie tylko prośby. o ludzie.
Odpowiedz
#6
Poczytaj jak stworzyć sobie obrazek w GI php i jak na niego nanieść jakiś ciąg znaków. Reszty się domyślisz.
Odpowiedz
#7
Gotowe rozwiązanie:

Klucze i paczkę do pobrania uzyskasz po tu:
http://www.google.com/recaptcha

Kod:
<form action="" method="post" name="formularz">
    <div>
      <table class="krow_table_1">
        <tr>
          <td class="krow_td_1">Imię:</td>
          <td class="krow_td_2"><input type="text" name="imie" size="30" maxlength="30" value="" /></td>
        </tr>
        <tr>
          <td class="krow_td_1">E-mail:</td>
          <td class="krow_td_2"><input type="text" name="mail" size="30" maxlength="30" value="" /></td>
        </tr>
        <tr>
          <td class="krow_td_1">Wiadomość:</td>
          <td class="krow_td_2"><textarea name="wiadomosc" rows="10" cols="50" /></textarea></td>
        </tr>
        <tr>
          <td class="krow_td_1">&nbsp;</td>
          <td class="krow_td_2"><?php
@require_once('recaptcha/recaptchalib.php');
$klucz_publiczny = "xxx";
$klucz_prywatny = "xxx";

$odp = null;
$blad = null;

if ($_POST["wyslij"]) {
$odp = recaptcha_check_answer ($klucz_prywatny,
$_SERVER["REMOTE_ADDR"],
$_POST["recaptcha_challenge_field"],
$_POST["recaptcha_response_field"]);

if ($odp->is_valid) {
$headers = "From: " . $_POST["imie"] ."<". $_POST["mail"] .">"."\r\n";
$headers .= "Reply-To: " . $_POST["mail"] . "\r\n";
$headers .= "Return-path: " . $_POST["mail"];

$do="[email protected]";
$temat="Temat wiadomości";
$tresc="

Imię: " .$_POST["imie"] . "\n
E-mail: " .$_POST["mail"] . "\n
Wiadomość: " .$_POST["wiadomosc"] . "\n";

mail($do,$temat,$tresc,$headers);
echo "<strong>Wiadomość została wysłana.</strong>";
exit(1);
} else {
echo "<span style=\"color:#FF0000;\">Proszę poprawnie rozwiązać test CAPTCHA. Wiadomość nie została wysłana.</span>";
}
}
echo recaptcha_get_html($klucz_publiczny, $blad);
?>
          <td/>
        </tr>
        <tr>
          <td class="krow_td_1">&nbsp;</td>
          <td class="krow_td_2"><input type="submit" name="wyslij" value="Wyślij" /> <input type="reset" value="Wyczyść" alt="Wyczyść formularz kontaktowy" /></td>
        </tr>
      </table>
    </div>
  </form>
Odpowiedz


Podobne wątki…
Wątek: Autor Odpowiedzi: Wyświetleń: Ostatni post
  Formukarz kontaktowy [Pomocy] bahafo 3 5,936 08-01-2015, 13:31
Ostatni post: Kartofelek
  Formularz kontaktowy HTML Kaza152 3 2,796 21-06-2012, 21:46
Ostatni post: kornell
Question formularz problem z CSS Kruszin 1 2,069 07-01-2012, 23:10
Ostatni post: Engine
  [jquery+html] problem formularz bryndzyk 10 8,443 06-01-2012, 02:49
Ostatni post: bryndzyk
  [php] Formularz bazuka 7 5,077 26-10-2011, 00:12
Ostatni post: Pedro84

Skocz do:


Użytkownicy przeglądający ten wątek: 1 gości
Sponsorzy i przyjaciele
SeoHost.pl