Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Problem z formularzem
Forum PHP.pl > Forum > Przedszkole
StudioV
Witam,
jestem nowy i zielony smile.gif
od dwóch dni siedzę na forach i googel i staram się zrobić formularz wysyłamy przez php ... no i zrobiłem, działający jak należy, ale chciałbym jeszcze zabezpieczyć się przed spamem i:
1. przeprowadzić walidację pola e-mail;
2. wprowadzić kod przepisywany z obrazka jako dodatkowe zabezpieczenie;
Spędziłem kupę czasu na szukaniu czytaniu i próbach znalazłem opisy i przykłady ale nie jestem w stanie tego poskładać do kupy.
Jak na razie mój formularz (w uproszczeniu - bo pól jest trochę więcej) wygląda tak:

  1. <?php
  2. // sprawdzamy, czy zmienna $submit jest pusta
  3. if (empty($_POST['submit'])) {
  4. // wyświetlamy formularz
  5. echo "<form method=\"post\" action=\"\">
  6. <table border=\"0\">
  7. <tr>
  8. <td >Imię i nazwisko</td>
  9. <td><input type=\"text\" name=\"imie\" /></td>
  10. </tr>
  11. <tr>
  12. <td >Adres e-mail</td>
  13. <td><input type=\"text\" name=\"email\" /></td>
  14. </tr>
  15. <tr>
  16. <td >Numer twlefonu</td>
  17. <td><input type=\"text\" name=\"telefon\" /></td>
  18. </tr>
  19.  
  20. <div class=\"wyslij\">
  21. <input type=\"submit\" name=\"submit\" value=\"Wyślij\"/>&nbsp;
  22. <input type=\"reset\" value=\"Wyczyść\"/>
  23. </div>
  24. </form>";
  25. }
  26. // sprawdzamy, czy zmienne przesłane z formularza nie są puste
  27. elseif (!empty($_POST['imie']) && !empty($_POST['email']) && !empty($_POST['telefon'])) {
  28. // jeżeli powyższy warunek jest spełniony tworzona jest wiadomość
  29. // zmienna $message zawiera treść wiadomości
  30. $message = "Treść wiadomości:
  31. \nWysłał: $_POST[imie]
  32. \ne-mail: $_POST[email]
  33. \nUlica: $_POST[telefon]";
  34. // zmienna $header zawiera przede wszystkim adres zwrotny
  35. $header = "From: $_POST[imie] <$_POST[email]>";
  36. // funkcja mail() za pomocą której wiadomość zostanie wysłana
  37. @mail("moj@adres.pl","temat widdomości","$message","$header")
  38. or die('Nie udało się wysłać wiadomości');
  39. // wyświetlenie komunikatu w przypadku powodzenia
  40. echo "<div align=\"center\"><strong>Wiadomość została wysłana poprawnie!</strong></div>";
  41. }
  42. // lub w przypadku nie wypełnienia formularza do końca
  43. else echo "<span style=\"color: #FF0000; text-align: center;\">Wypełnij wszystkie pola formularza!</span>";?>


POMOCY ! ! !
piotrooo89
1. filter_var
2. google
piotr94
po co od razu captcha?
można samemu zrobić prosty token (bo tak nazywa się ten kod do przepisania)
Ulysess
ja waliduje email tak:

  1. if(preg_match("/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$/", $_POST['email']))


a co do tokena to

  1. <?php session_start();
  2.  
  3. for($i=0;$i<8;$i++)
  4. {
  5. $kod .= rand(1,9);
  6. }
  7.  
  8. if(strlen($_GET['kod'] = 8));
  9. {
  10. $_SESSION['token'] = $kod;
  11. }
  12.  
  13. header("Content-type: image/png");
  14.  
  15. $img = @imagecreate(177, 20);
  16. $kolor_tla = imagecolorallocate($img, 0, 0, 0);
  17. $kolor_tekstu = imagecolorallocate($img, 255, 255, 255);
  18.  
  19. imagestring($img, 5, 55, 2, $kod, $kolor_tekstu);
  20. imagepng ($img);
  21.  
  22. ?>

to jest plik generator tokena

w formularzu gdzieś umieszczam <img src="generator_kodu.php" />

no i dalej chba jasne
piotrooo89
Cytat(Ulysess @ 26.01.2010, 17:08:51 ) *
ja waliduje email tak:



jesteś jakimś sadomaso? mając gotowa funkcję wbudowaną w PHP ty tworzysz jakieś kosmiczne regexpy.
Ulysess
pod pojęciem walidacja pola e-mail rozumiem żeby było xxx@wp.pl np , da się łatwiej ?
piotrooo89
tak da się łatwiej poczytaj kilka postów wyżej moją odpowiedz.
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.