Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Formularz kontaktowy, Jak zrobić aby pola były obowiązkowe?
Kicu
post 10.10.2009, 16:25:40
Post #1





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 10.10.2009

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


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>
Go to the top of the page
+Quote Post
Zosiek
post 10.10.2009, 16:28:32
Post #2





Grupa: Zarejestrowani
Postów: 140
Pomógł: 22
Dołączył: 1.05.2009
Skąd: Będzin

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


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. }


Ten post edytował Zosiek 10.10.2009, 16:37:05


--------------------
Pamiętaj ja staram się pomóc tobie, a ty może kiedyś pomożesz mnie. :D
Pomogłem Ci?? Jeśli tak to jestem z tego dumny. Jeśli nie to postaram się bardziej - nikt nie jest doskonały :P
Kliknij przycisk Pomógł pod postem, który Ci pomógł.
Go to the top of the page
+Quote Post
potreb
post 10.10.2009, 16:30:25
Post #3





Grupa: Zarejestrowani
Postów: 1 568
Pomógł: 192
Dołączył: 7.03.2005
Skąd: Warszawa

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


Dodajesz do warunku.
  1. if ($_POST[check]=="1" && !empty($_POST['imienazwisko']) )


Adekwatnie dodajesz resztą pól które chcesz aby zostały wypełnione.

Ten post edytował potreb 10.10.2009, 16:31:32


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

Go to the top of the page
+Quote Post
Larges
post 10.10.2009, 16:35:57
Post #4





Grupa: Zarejestrowani
Postów: 333
Pomógł: 16
Dołączył: 13.05.2008
Skąd: Łódź

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


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. }


Ten post edytował Larges 10.10.2009, 16:37:51


--------------------
Kliknij POMÓGŁ jeśli moja odpowiedź okazała się użyteczna!
Go to the top of the page
+Quote Post
Kicu
post 10.10.2009, 19:25:54
Post #5





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 10.10.2009

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


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?
Go to the top of the page
+Quote Post
Ociu
post 10.10.2009, 19:27:36
Post #6





Grupa: Moderatorzy
Postów: 1 566
Pomógł: 37
Dołączył: 14.05.2003
Skąd: Kraków




Zawsze można użyć javascriptu
Go to the top of the page
+Quote Post
Zosiek
post 10.10.2009, 19:30:40
Post #7





Grupa: Zarejestrowani
Postów: 140
Pomógł: 22
Dołączył: 1.05.2009
Skąd: Będzin

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


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.)

Ten post edytował Zosiek 10.10.2009, 19:41:25


--------------------
Pamiętaj ja staram się pomóc tobie, a ty może kiedyś pomożesz mnie. :D
Pomogłem Ci?? Jeśli tak to jestem z tego dumny. Jeśli nie to postaram się bardziej - nikt nie jest doskonały :P
Kliknij przycisk Pomógł pod postem, który Ci pomógł.
Go to the top of the page
+Quote Post
Kicu
post 10.10.2009, 21:33:41
Post #8





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 10.10.2009

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


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.
Go to the top of the page
+Quote Post
Nikos83
post 19.11.2010, 19:56:14
Post #9





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 30.03.2004

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


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

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: 28.04.2025 - 08:09