Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] validacja formularza kontaktowego
pomek2
post
Post #1





Grupa: Zarejestrowani
Postów: 66
Pomógł: 0
Dołączył: 3.03.2007

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


Witam,
chciałbym dodać funkcję sprawdzającą poprawność wypełnienia formularza, tzn czy pole zostało wypełnione oraz w polu e-mail sprawdzenie poprawności wpisanego adresu,
jestem początkujący w sprawach php i chciałbym żeby ktoś mnie nakierował.

zamieszczam kawałek kodu o który mi się rozchodzi:) :

  1.  
  2. ."<form method=\"post\" action=\"modules.php?name=$module_name&op=send_mail\">"
  3. ."<tr><td>"._CONTACTPERSON."</td><td><input type=\"text\" name=\"contact_person\" size=\"37\"></td></tr>"
  4. ."<tr><td>"._EMAILADRESS."</td><td><input type=\"text\" name=\"email_adress\" size=\"37\"></td></tr>"
  5. ."<tr><td>"._PHONENUMBER."</td><td><input type=\"text\" name=\"phone_number\" size=\"37\"></td></tr>"
  6. ."<tr><td valign=\"top\">"._QUESTION."</td><td><textarea name=\"question\" cols=\"34\" rows=\"5\"></textarea></td></tr>"
  7. ."<tr><td>"._CAPTCHA."</td><td><br /><img src=\"token/captcha.php\"><br /><br /><input type=\"text\" name=\"captcha\" size=\"20\"></td></tr>"
  8. ."<tr><td>"
  9. ."</td><td align=\"right\">"
  10. ."<input type=\"hidden\" name=\"id\" value=\"$ad_id\">"
  11. ."<input type=\"hidden\" name=\"title\" value=\"$title\">"
  12. ."<input type=\"hidden\" name=\"user_email\" value=\"".$userinfo['user_email']."\">"
  13. ."<input type=\"submit\" value=\""._SEND."\">"
  14. ."</td></tr>"
  15. ."</form></table>"
  16. ."</td></tr>"
  17. ."</table>"
  18. ."</td></tr>"
  19. ."</table>";
  20. } else if ($row_data['contact']) {
  21. echo "<center><h3><b>"._CONTACT."</b></h3></center>";
  22. echo "<p style=\"line-height: 200%; margin-left: 20px;\">".$row_data['contact']."</p>";
  23. }
  24. ?>
  25. </td></tr>
  26. </table>
  27. </td></tr>
  28. </table>
  29.  
  30. <?php
  31.  
  32. CloseTableMain();
  33. include("footer.php");
  34.  
  35. ?>
  36.  



Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 11)
kadlub
post
Post #2





Grupa: Zarejestrowani
Postów: 548
Pomógł: 105
Dołączył: 4.06.2010

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


do sprawdzenia czy dane pole zostało wypełnione użyj
empty() w polączeniu z if
np
  1. if (!empty($_POST['coś_tam'])


Ten post edytował kadlub 13.02.2011, 19:37:34
Go to the top of the page
+Quote Post
Mefiuu
post
Post #3





Grupa: Zarejestrowani
Postów: 371
Pomógł: 18
Dołączył: 23.11.2008

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


dokładnie tak jak wyżej, a co do e-maila to jeszcze funkcja : filter_var
Go to the top of the page
+Quote Post
emajl22
post
Post #4





Grupa: Zarejestrowani
Postów: 273
Pomógł: 21
Dołączył: 28.11.2010

Ostrzeżenie: (10%)
X----


do maila możesz:
  1. if (!ereg ("^.+@.+..+$", $email)) { echo 'zły'; }


Ten post edytował emajl22 13.02.2011, 20:12:46
Go to the top of the page
+Quote Post
kadlub
post
Post #5





Grupa: Zarejestrowani
Postów: 548
Pomógł: 105
Dołączył: 4.06.2010

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


jak chcesz po stronie przeglądarki to możesz użyć jquery.validate.js będzie ci od razu sprawdzała czy dane pole jest wypełnione czy nie sprawdza też poprawność wpisania adresu e-mail
Go to the top of the page
+Quote Post
Mefiuu
post
Post #6





Grupa: Zarejestrowani
Postów: 371
Pomógł: 18
Dołączył: 23.11.2008

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


Cytat(emajl22 @ 13.02.2011, 20:12:27 ) *
do maila możesz:
  1. if (!ereg ("^.+@.+..+$", $email)) { echo 'zły'; }



feeeee! nie ereg! jak już to preg_match (IMG:style_emoticons/default/wink.gif)
Go to the top of the page
+Quote Post
sunpietro
post
Post #7





Grupa: Zarejestrowani
Postów: 262
Pomógł: 26
Dołączył: 23.01.2009
Skąd: eZ Systems

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


do walidacji można użyć filter_var() zamiast tworzenia regexpa
Go to the top of the page
+Quote Post
emajl22
post
Post #8





Grupa: Zarejestrowani
Postów: 273
Pomógł: 21
Dołączył: 28.11.2010

Ostrzeżenie: (10%)
X----


Cytat(Mefiuu @ 13.02.2011, 20:23:54 ) *
feeeee! nie ereg! jak już to preg_match (IMG:style_emoticons/default/wink.gif)

że niby czemu? wydajność?
Go to the top of the page
+Quote Post
pomek2
post
Post #9





Grupa: Zarejestrowani
Postów: 66
Pomógł: 0
Dołączył: 3.03.2007

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


zrobiłem tak:

  1. <?
  2.  
  3. if (!empty($_POST['contact_person']))
  4. {echo 'Wprowadź osobę kontaktową w pytaniu do ogłoszeniodawcy';}
  5. if (!empty($_POST['email_adress']))
  6. {echo 'Wprowadź swój adres e-mail';}
  7. if (!preg_match ("^.+@.+..+$", $email)) { echo 'Sprawdź wpisany adres e-mail'; }
  8. if (!empty($_POST['question']))
  9. {echo 'Wpisz pytanie do ogłoszeniodawcy';}
  10. if ($_POST['captcha'] != $_SESSION['captcha']){ echo 'Przepisz poprawny kod z obrazka';}
  11. ?>


Jednak wiadomość zostaje wysłana pomimo niewypełnienia pół a poza tym na stronie pojawia mi się komunikat:

Warning: preg_match() [function.preg-match]: No ending delimiter '^' found in /home/matkuk/domains/maxi-auto.pl/public_html/modules/Ads/public/show_item.php on line 396
Sprawd� wpisany adres e-mailPrzepisz poprawny kod z obrazka

Go to the top of the page
+Quote Post
greycoffey
post
Post #10





Grupa: Zarejestrowani
Postów: 320
Pomógł: 29
Dołączył: 3.04.2010

Ostrzeżenie: (20%)
X----


Cytat(emajl22 @ 13.02.2011, 21:25:17 ) *
że niby czemu? wydajność?

Ereg jest zdeprecjonowane.
Do tego preg_* jest szybsze.

Ten post edytował greycoffey 20.02.2011, 13:23:10
Go to the top of the page
+Quote Post
Valdi_B
post
Post #11





Grupa: Zarejestrowani
Postów: 107
Pomógł: 30
Dołączył: 19.02.2011
Skąd: Warszawa

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


Cytat(pomek2 @ 19.02.2011, 14:43:51 ) *
Jednak wiadomość zostaje wysłana pomimo niewypełnienia pół a poza tym na stronie pojawia mi się komunikat:

Warning: preg_match() [function.preg-match]: No ending delimiter '^' found in /home/matkuk/domains/maxi-auto.pl/public_html/modules/Ads/public/show_item.php on line 396


W preg_match "obuduj" 1-szy argument znakami "/" i ten błąd powinien zginąć.
Dlaczego: Pisząc wyrażenie regułowe:
1. Najpierw podajesz ogranicznik początkowy.
2. Potem jest "właściwe" wyrażenie.
3. Na końcu ma być ogranicznik końcowy, taki sam jak początkowy.

Tak jak napisałeś, to preg_match:
1. Uznał znak "^" za delimiter początkowy,
2. Nie znalazł dalej takiego samego znaku (delimitera końcowego).
3. Zaprotestował.
Go to the top of the page
+Quote Post
pomek2
post
Post #12





Grupa: Zarejestrowani
Postów: 66
Pomógł: 0
Dołączył: 3.03.2007

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


Nie mam pojęcia dlaczego nie działa sprawdzenie formularza, powiadomienia nie wyświetlają się a formularz zostaje wysłany nawet gdy się nic do niego nie wpisze

  1. <?
  2.  
  3. if (!empty($_POST['contact_person']))
  4. {echo 'Wprowadź osobę kontaktową w pytaniu do ogłoszeniodawcy';}
  5. if (!empty($_POST['email_adress']))
  6. {echo 'Wprowadź swój adres e-mail';}
  7. if (!preg_match ("/^.+@.+..+$"/, $email)) { echo 'Sprawdź wpisany adres e-mail'; }
  8. if (!empty($_POST['question']))
  9. {echo 'Wpisz pytanie do ogłoszeniodawcy';}
  10. if ($_POST['captcha'] != $_SESSION['captcha']){ echo 'Przepisz poprawny kod z obrazka';}
  11. ?>
  12.  


może jeszcze trochę więcej kodu umieszczę, może czegoś brakuje tutaj?

  1. echo "<table width=\"100%\">"
  2. ."<tr><td align=\"center\""; if (!empty($contactinfo)) { echo " width=\"50%\""; } echo ">";
  3. if (!empty($contactinfo)) echo "<h3><b>"._CONTACT."</b></h3>";
  4. echo "</td><td align=\"center\""; if (!empty($contactinfo)) { echo "width=\"50%\""; } echo ">"
  5. ."<h3><b>"._SENDMESSAGE."</b></h3>";
  6. echo "</td></tr>"
  7. ."<tr><td colspan=\"2\">";
  8. info_box("tip", _SENDMESSAGEINFO);
  9. echo "</td></tr>"
  10. ."<tr><td valign=\"top\" colspan=\"2\">"
  11. ."<table border=\"0\">"
  12. ."<tr><td";
  13. if (!empty($contactinfo)) { echo " valign=\"top\" width=\"50%\">"
  14. ."<table border=\"0\" width=\"100%\">"
  15. ."<tr><td>".
  16. $contactinfo
  17. ."</td></tr>"
  18. ."</table>";
  19. }
  20. echo "</td><td>"
  21. ."<table border=\"0\" width=\"50%\">"
  22. ."<form method=\"post\" action=\"modules.php?name=$module_name&op=send_mail\">"
  23. ."<tr><td>"._CONTACTPERSON."</td><td><input type=\"text\" name=\"contact_person\" size=\"37\"></td></tr>"
  24. ."<tr><td>"._EMAILADRESS."</td><td><input type=\"text\" name=\"email_adress\" size=\"37\"></td></tr>"
  25. ."<tr><td>"._PHONENUMBER."</td><td><input type=\"text\" name=\"phone_number\" size=\"37\"></td></tr>"
  26. ."<tr><td valign=\"top\">"._QUESTION."</td><td><textarea name=\"question\" cols=\"34\" rows=\"5\"></textarea></td></tr>"
  27. ."<tr><td>"._CAPTCHA."</td><td><br /><img src=\"token/captcha.php\"><br /><br /><input type=\"text\" name=\"captcha\" size=\"20\"></td></tr>"
  28. ."<tr><td>"
  29. ."</td><td align=\"right\">"
  30. ."<input type=\"hidden\" name=\"id\" value=\"$ad_id\">"
  31. ."<input type=\"hidden\" name=\"title\" value=\"$title\">"
  32. ."<input type=\"hidden\" name=\"user_email\" value=\"".$userinfo['user_email']."\">"
  33. ."<input type=\"submit\" value=\""._SEND."\">"
  34. ."</td></tr>"
  35. ."</form></table>"
  36. ."</td></tr>"
  37. ."</table>"
  38. ."</td></tr>"
  39. ."</table>";


wymyśliłem coś takiego (IMG:style_emoticons/default/snitch.gif) :

  1. //sprawdzenie formularza do ogloszeniodawcy
  2.  
  3. echo "<tr><td align=\"center\""; if (($_POST['contact_person'])) { echo " width=\"50%\""; } echo ">";
  4. if (!empty($_POST['contact_person'])) echo "<h3><b>"._CONTACT_PERSON."</b></h3>";
  5. echo "<tr><td align=\"center\""; if (($_POST['email_adress'])) { echo " width=\"50%\""; } echo ">";
  6. if (!empty($_POST['email_adress'])) echo "<h3><b>"._EMAIL_ADRESS."</b></h3>";
  7. echo "<tr><td align=\"center\""; if (($_POST['question'])) { echo " width=\"50%\""; } echo ">";
  8. if (!empty($_POST['question'])) echo "<h3><b>"._QUESTION."</b></h3>";
  9. echo "<tr><td align=\"center\""; if ($_POST['captcha'] != $_SESSION['captcha']) { echo " width=\"50%\""; } echo ">";
  10. if (!empty($_POST['captcha'])) echo "<h3><b>"._CAPTCHA."</b></h3>";
  11.  
  12. //koniec sprawdzania
  13.  


tylko sądzę że teraz trzeba jakoś zablokować wysyłanie tego formularza bo nawet gdy się nic nie wpisze to i tak wysyła:

  1.  
  2. echo "</td><td>"
  3. ."<table border=\"0\" width=\"50%\">"
  4. ."<form method=\"post\" action=\"modules.php?name=$module_name&op=send_mail\">"
  5. ."<tr><td>"._CONTACTPERSON."</td><td><input type=\"text\" name=\"contact_person\" size=\"37\"></td></tr>"
  6. ."<tr><td>"._EMAILADRESS."</td><td><input type=\"text\" name=\"email_adress\" size=\"37\"></td></tr>"
  7. ."<tr><td>"._PHONENUMBER."</td><td><input type=\"text\" name=\"phone_number\" size=\"37\"></td></tr>"
  8. ."<tr><td valign=\"top\">"._QUESTION."</td><td><textarea name=\"question\" cols=\"34\" rows=\"5\"></textarea></td></tr>"
  9. ."<tr><td>"._CAPTCHA."</td><td><br /><img src=\"token/captcha.php\"><br /><br /><input type=\"text\" name=\"captcha\" size=\"20\"></td></tr>"
  10. ."<tr><td>"
  11. ."</td><td align=\"right\">"
  12. ."<input type=\"hidden\" name=\"id\" value=\"$ad_id\">"
  13. ."<input type=\"hidden\" name=\"title\" value=\"$title\">"
  14. ."<input type=\"hidden\" name=\"user_email\" value=\"".$userinfo['user_email']."\">"
  15. ."<input type=\"submit\" value=\""._SEND."\">"
  16. ."</td></tr>"
  17. ."</form></table>"
  18. ."</td></tr>"
  19. ."</table>"
  20. ."</td></tr>"
  21. ."</table>";
  22. } else if ($row_data['contact']) {
  23. echo "<center><h3><b>"._CONTACT."</b></h3></center>";
  24. echo "<p style=\"line-height: 200%; margin-left: 20px;\">".$row_data['contact']."</p>";
  25. }
  26. ?>
  27. </td></tr>
  28. </table>
  29. </td></tr>
  30. </table>
  31.  


Pomoże ktoś(IMG:style_emoticons/default/smile.gif) (IMG:style_emoticons/default/questionmark.gif)

Przesyłam także cały plik, będę wdzięczny za poradę bo od paru dni stoję w miejscu:

plik podstrony

Ten post edytował pomek2 20.02.2011, 08:19:24
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 7.10.2025 - 17:25