Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Formularz kontaktowy
Forum PHP.pl > Forum > Przedszkole
Kicu
Witam serdecznie wszystkich.

Mam pewien problem z formularzem kontaktowym. Otóż jest on dość ubogi pod tym względem, że można wysłać wiadomość nie uzupełniając żadnego pola. Chciałby aby ktoś mi pomógł poprawić go tak, żeby pole 'imię i nazwisko', 'wiadomość' oraz 'email' były obowiązkowe do wypełnienia, a jak ktoś ich nie wypełni to pojawia się komunikat przy polu że jest ono obowiązkowe.

I przy okazji... można jakoś dodać zabezpieczenie antyspamowe? Powiedzmy... 'W polu obok proszę wpisać adres strony' (to tylko taki przykład) i dopiero po poprawnym wypełnieniu pola wiadomość zostanie wysłana?


Oto kod formularza:

  1. <?
  2.  
  3. if ($_POST[check]=="1")
  4.  
  5. {
  6.  
  7. $header = "From: $_POST[email] \nContent-type: text/html; charset=UTF-8";
  8. $paczka="
  9.  
  10. Imię: $_POST[imienazwisko] <br>
  11. E-mail: $_POST[email] <br>
  12. Telefon: $_POST[telfax] <br>
  13. <br>
  14. Treść:
  15. $_POST[tresc]
  16. ";
  17.  
  18. mail("mail@gmail.com", "Formularz kontaktowy ze strony", "$paczka", "$header");
  19.  
  20. $potwierdzenie="Wiadomość została wysłana. Dziękuję za kontakt.";
  21. }
  22. else
  23. {
  24. $potwierdzenie="";
  25. }
  26.  
  27.  
  28.  
  29. ?>
  30.  
  31. <form action="kontakt.php" method="post">
  32. <center><b>
  33. <a class="potw"><? echo $potwierdzenie; ?></a>
  34. </b></center>
  35.  
  36.  
  37.  
  38. <table cellspacing="2" cellpadding="5" border="0">
  39.  
  40.  
  41.  
  42. <tr><td class="opis">Imię, Nazwisko &nbsp;&nbsp;&nbsp;</td><td class="pole"><input type="text" name="imienazwisko" value="" size="40"></td></tr>
  43. <tr><td class="opis">E-mail &nbsp;&nbsp;&nbsp;</td><td class="pole"><input type="text" name="email" value="" size="40"></td></tr>
  44. <tr><td class="opis">Telefon &nbsp;&nbsp;&nbsp;</td><td class="pole"><input type="text" name="telfax" value="" size="40"></td></tr>
  45.  
  46. <tr><td width="100" class="opis" valign="top">Wiadomość &nbsp;&nbsp;&nbsp;</td>
  47. <td class="pole"><textarea name="tresc" cols="40" rows="8"></textarea></td></tr>
  48.  
  49.  
  50. <tr><td colspan="2"><input type="hidden" name="check" value="1">
  51. <div align="center"><input type="submit" value="&nbsp;&nbsp;Wyślij&nbsp;&nbsp;" class="przyciski">
  52. &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <input type="reset" value="&nbsp;&nbsp;Wyczyść&nbsp;&nbsp;" class="przyciski"></div></td></tr>
  53.  
  54.  
  55.  
  56. </table>
  57. </form>
Zosiek
np.
  1. $email = $_POST['email'];
  2. if (empty($_POST['email'])){
  3. echo ('Proszę podać maila');
  4. }else{
  5. if(!preg_match("^([a-z0-9_-]+([.a-z0-9_-]+)*)@([a-z0-9_-]{1,}(.[a-z0-9_-]{1,})*.[a-z]{2,3})$^",$email))
  6. {
  7. echo ("Bł?d w adresie");
  8. }
i to samo z nazwiskiem sobie możęsz zrobić (tylko możesz zamiast preg_match() dać empty($zmienna z imieniem i nazwiskiem)
//potreb też to napisał (w trakcie edytowania mojego postu)

a anty spam np.

dodaj pole
  1. Rok chrztu polski<input type="text" name="spr" value="" size="40">

oraz
  1. if ($_POST['spr']!=966){
  2. echo 'Bla'
  3. }else{
  4. //reszta kodu
  5. }
potreb
Dodajesz do warunku.
  1. if ($_POST[check]=="1" && !empty($_POST['imienazwisko']) )


Adekwatnie dodajesz resztą pól które chcesz aby zostały wypełnione.
Larges
Możesz też wcześniej (przed przeładowaniem) skorzystać z javascript (;

Zdarzenie onSubmit i warunki w js. Jeśli coś nie tak return false, jeśli wszystko ok return true.

Przykład: http://library.thinkquest.org/C004162/lear...pt/form10p.html

  1. if(!empty($_POST['imie']) && !empty($_POST['nazwisko']) .........)
  2. {
  3. //kod
  4. } else {
  5. echo 'wprowadz dane leniu';
  6. }
Kicu
Zosiek.. dziękuje bardzo, ten kod antyspamowy bardzo mi pomógł. Działa świetnie.

I wszystkim Wam dziękuje za pomoc bo w sumie każdy kod się przydał w mniejszym lub większym stopniu i udało mi się zrobić to czego potrzebowało smile.gif

Tylko zastanawia mnie jeszcze jedna rzecz... otóż gdy któreś z pól nie zostanie wypełnione, strona się przeładowuje i wyskakuje komunikat, ale w związku z tym wszystkie wypełnione wcześniej pola stają się puste. Jest jakaś możliwość aby tekst w polach pozostawał mimo przeładowania strony?
Ociu
Zawsze można użyć javascriptu
Zosiek
zamiast value pustego daj zmienną zawartą w poście np
  1. <tr><td class="opis">E-mail    </td><td class="pole"><input type="text" name="email" value="<?php echo $_POST['email']; ?>" size="40"></td></tr>

Powinno działać

Cytat(Kicu @ 10.10.2009, 20:25:54 ) *
Zosiek.. dziękuje bardzo, ten kod antyspamowy bardzo mi pomógł. Działa świetnie.



Thx tylko to jest prosty system. Możesz dać zamiast tekstu "Rok chrztu polski" zdjęcie z np. żabą i podpisem napisz wspak nazwę tego zwierzęcia. Możliwości wiele. Możesz też dynamicznie wyświetlać pytania (z pliku, tablicy, bazy danych itp. itd.)
Kicu
Zosiek... ponownie ogromne dzięki smile.gif Faktycznie działa ta opcja z zapamiętywaniem treści. Chyba już wszystko mam w takim razie. Nie wiem czy u Was zamyka się tematy gdy już problem został rozwiązany, ale jeśli tak to temat jest do zamknięcia smile.gif

Ps. z tymi obrazkami i wszelakimi tekstami do systemu antyspamowego to zdaje sobie sprawę, ale już mam pomysł na to winksmiley.jpg

Dzięki jeszcze raz. Pozdrawiam serdecznie.
Nikos83
Witam

Chciałem użyć na swojej stronie tego formularza, niestety coś mi nie wychodzi sad.gif(

Proszę o pomoc

Wstawiłem poniższy kod do pliku kontakt.php
  1. <?
  2.  
  3. if ($_POST['spr']!=966){
  4. echo 'Bla'
  5. }else{
  6.  
  7. {
  8.  
  9. $header = "From: $_POST[email] \nContent-type: text/html; charset=UTF-8";
  10. $paczka="
  11.  
  12. Imię: $_POST[imienazwisko] <br>
  13. E-mail: $_POST[email] <br>
  14. Telefon: $_POST[telfax] <br>
  15. <br>
  16. Treść:
  17. $_POST[tresc]
  18. ";
  19.  
  20. mail("adres mojego maila", "Formularz kontaktowy ze strony", "$paczka", "$header");
  21.  
  22. $potwierdzenie="Wiadomość została wysłana. Dziękuję za kontakt.";
  23. }
  24. else
  25. {
  26. $potwierdzenie="";
  27. }
  28.  
  29.  
  30.  
  31. ?>



Pozostałą część do pliku z formularzem
  1. <form action="kontakt.php" method="post">
  2. <center><b>
  3. <a class="potw"><? echo $potwierdzenie; ?></a>
  4. </b></center>
  5.  
  6.  
  7.  
  8. <table cellspacing="2" cellpadding="5" border="0">
  9.  
  10.  
  11.  
  12. <tr><td class="opis">Imię, Nazwisko &nbsp;&nbsp;&nbsp;</td><td class="pole"><input type="text" name="imienazwisko" value="" size="40"></td></tr>
  13. <tr><td class="opis">E-mail &nbsp;&nbsp;&nbsp;</td><td class="pole"><input type="text" name="email" value="" size="40"></td></tr>
  14. <tr><td class="opis">Telefon &nbsp;&nbsp;&nbsp;</td><td class="pole"><input type="text" name="telfax" value="" size="40"></td></tr>
  15. <tr><td class="opis">Rok chrztu polski<input type="text" name="spr" value="" size="40"></td></tr>
  16. <tr><td width="100" class="opis" valign="top">Wiadomość &nbsp;&nbsp;&nbsp;</td>
  17. <td class="pole"><textarea name="tresc" cols="40" rows="8"></textarea></td></tr>
  18.  
  19.  
  20. <tr><td colspan="2"><input type="hidden" name="check" value="1">
  21. <div align="center"><input type="submit" value="&nbsp;&nbsp;Wyślij&nbsp;&nbsp;" class="przyciski">
  22. &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <input type="reset" value="&nbsp;&nbsp;Wyczyść&nbsp;&nbsp;" class="przyciski"></div></td></tr>
  23.  
  24.  
  25.  
  26. </table>
  27. </form>


Nie wiem dlaczego po wypełnieniu formularza otwiera się pusta strona kontakt.php

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.