Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Formularz kontaktowy
Forum PHP.pl > Forum > Przedszkole
joel-1
Witam!
Mam stronę internetową z formularzem PHP, i dowiedziałem się że można w takim formularzu dodatkowo dodać zabezpieczenie żeby podany e-mail miał poprawną formę. Bardzo proszę o pomoc.
Z góry dzięki za odpowiedź!
  1. <?php
  2. // sprawdzamy, czy zmienna $submit jest pusta
  3. if (empty($_POST['submit'])) {
  4. // wyświetlamy formularz
  5. echo "
  6.  
  7. <form method=\"post\">
  8.  
  9. <small>Treść wiadomości<b style=\"color: #FF6600\">*</b>:</small><br />
  10. <textarea name=\"tresc\" class=\"form\" style=\"height: 100px;\"></textarea>
  11. <br /><br />
  12.  
  13. <small>Imię i nazwisko<b style=\"color: #FF6600\">*</b>:</small><br />
  14. <input type=\"text\" name=\"imie\" class=\"form2\">
  15. <br /><br />
  16. <small>Nazwa firmy:</small><br />
  17. <input type=\"text\" name=\"firma\" class=\"form2\">
  18. <br /><br />
  19. <small>Adres e-mail<b style=\"color: #FF6600\">*</b>:</small><br />
  20. <input type=\"text\" name=\"email\" class=\"form2\">
  21. <br /><br />
  22. <small>Numer telefonu:</small><br />
  23. <input type=\"text\" name=\"telefon\" class=\"form2\">
  24. <br /><br />
  25. <small>Miejscowość:</small><br />
  26. <input type=\"text\" name=\"miejscowosc\" class=\"form2\">
  27. <br /><br />
  28. <input type=\"submit\" name=\"submit\" value=\"Wyślij\" class=\"form3\" style=\"width: 50px;\">&nbsp;
  29. <input type=\"reset\" value=\"Wyczyść\" class=\"form3\" style=\"width: 70px;\">
  30.  
  31.  
  32. </td></form>
  33. ";
  34. }
  35. // sprawdzamy, czy zmienne przesłane z formularza nie są puste
  36. elseif (!empty($_POST['tresc']) && !empty($_POST['imie']) && !empty($_POST['email']) ) {
  37. // jeżeli powyższy warunek jest spełniony tworzona jest wiadomość
  38. // zmienna $message zawiera treść wiadomości
  39. $message = "Treść wiadomości:\n$_POST[tresc]\nImie i Nazwisko: $_POST[imie]\nNazwa firmy: $_POST[firma]\nNumer Telefonu:\ $_POST[telefon]\nMiejscowość: $_POST[miejscowosc]\nAdres e-mail: $_POST[email]";
  40. // zmienna $header zawiera przede wszystkim adres zwrotny
  41. $header = "From: $_POST[imie] <$_POST[email]>";
  42. // funkcja mail() za pomocą której wiadomość zostanie wysłana
  43. @mail("podany e-mail","Wiadomosc ze strony WWW","$message","$header")
  44. or die('Wystąpił błąd! Nie udało się wysłać wiadomości');
  45. // wyświetlenie komunikatu w przypadku powodzenia
  46. echo "<div style=\"color: #595959; text-align: left;\">Dziękujemy!<br /><br /> Wiadomość została wysłana poprawnie. <br /><br />
  47. <a href=\"kontakt.php\" class=\"katalog_wybrane\">Kliknij, aby wysłać kolejną wiadomość</a>
  48.  
  49.  
  50. </div>";
  51. }
  52. // lub w przypadku nie wypełnienia formularza do końca
  53. else echo "
  54. <span style=\"color: #f25a11; text-align: center;\">Aby wiadomość mogła zostać wysłana, prosimy wypełnić wszystkie pola oznaczone gwiazdką.</span><br /><br /><br />
  55.  
  56.  
  57. <form method=\"post\">
  58.  
  59. <small>Treść wiadomości<b style=\"color: #FF6600\">*</b>:</small><br />
  60. <textarea name=\"tresc\" class=\"form\" style=\"height: 200px;\"></textarea>
  61. <br /><br />
  62.  
  63. <small>Imię i nazwisko<b style=\"color: #FF6600\">*</b>:</small><br />
  64. <input type=\"text\" name=\"imie\" class=\"form2\">
  65. <br /><br />
  66. <small>Nazwa firmy:</small><br />
  67. <input type=\"text\" name=\"firma\" class=\"form2\">
  68. <br /><br />
  69. <small>Adres e-mail<b style=\"color: #FF6600\">*</b>:</small><br />
  70. <input type=\"text\" name=\"email\" class=\"form2\">
  71. <br /><br />
  72. <small>Numer telefonu:</small><br />
  73. <input type=\"text\" name=\"telefon\" class=\"form2\">
  74. <br /><br />
  75. <small>Miejscowość:</small><br />
  76. <input type=\"text\" name=\"miejscowosc\" class=\"form2\">
  77. <br /><br />
  78. <input type=\"submit\" name=\"submit\" value=\"Wyślij\" class=\"form3\" style=\"width: 50px;\">&nbsp;
  79. <input type=\"reset\" value=\"Wyczyść\" class=\"form3\" style=\"width: 70px\"></td></form>";?>

joel-1
Ten kod to znalazłem już wcześniej tylko że nie wiem w którym miejscu w formularzu trzeba go umieścić.
Jakbyś mógł napisać to byłbym wdzięczny.
bastard13
To jest taka w miarę prosta walidacja, ale do większości celów wystarcza:
  1. preg_match("/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,7})$/i",podany_email);

Jeżeli chcesz coś lepszego, to tutaj masz naprawdę dobry artykuł:
http://wortal.php.pl/phppl/wortal/artykuly...su_e_mail_w_php

Co do walidacji za pomocą preg_match to nigdy nie jest idealna, ponieważ w rzeczywistości adres mail może być czasami naprawdę przekombinowany. Tutaj masz dokument nt. standardów:
http://www.faqs.org/rfcs/rfc2822.html
joel-1
A mógłbyś to wkleić do formularza tego co dałem, bo ja jestem zupełnie laik pod względem PHP.
bastard13
Preg_match zwraca 1 jeżeli zmienna pasuje do wyrażenia, a 0 jeżeli nie. Wrzuć to do if'a i masz coś takiego:
  1. if(preg_match(wzorzec, zmienna_do_sprawdzenia))
  2. { //instrukcje, które mają być wykonane jeżeli zmienna_do_sprawdzenia jest ok
  3. }
  4. else
  5. echo 'Zmienna jest błędna';
erix
Cytat
Witam!
Mam stronę internetową z formularzem PHP, i dowiedziałem się że można w takim formularzu dodatkowo dodać zabezpieczenie żeby podany e-mail miał poprawną formę. Bardzo proszę o pomoc.

filter_var
joel-1
Możecie ten kod wkleić do tego formularza co ja dałem bo ja w ogóle nie wiem gdzie trzeba to wkleić.
Proszę sadsmiley02.gif
erix
A zajrzałeś do manuala na stronę funkcji, do której zalinkowałem?
joel-1
Tak, patrzyłem tylko że nic z niego nie rozumie. Dla Was wszystkich to pewnie jest to oczywiste jak to zrobić, więc bardzo jeszcze raz proszę aby ktoś ten kod PHP co ja dodałem skopiował i dodał w odpowiednim miejscu w nim tą funkcję aby sprawdzał e-mail.
bastard13
Jeżeli piszesz to dla siebie, to naprawdę warto się wysilić, żeby chociaż trochę zrozumieć zagadnienie. Jeśli piszesz to dla kogoś, to tym bardziej powinieneś się trochę z tym zaznajomić. Po trzecie, jeżeli to ty pisałeś kod, który wrzuciłeś na początku, to nie powinieneś mieć problemu z dodaniem if'a, ale żeby było ci prościej:
  1. if($_POST) //jeżeli został wysłany post
  2. { if(//pola $_POST nie puste)
  3. { if(//adres mail dobry)
  4. { if(//wyślij mail i mail wysłany poprawnie)
  5. { echo 'wszystko poszło ok';
  6. }
  7. else //nie wysłano maila
  8. }
  9. else //zły adres
  10. }
  11. else //nie wypełnione pola
  12. }
  13. //jeżeli nie zostały wysłane dane bądź dane niepoprawne
  14. //wyświetl formularz
joel-1
Ja tego nie pisałem tylko wynająłem informatyka, teraz chce właśnie takie coś dodać. Ale jeszcze raz proszę aby ktoś ten kod dodał na forum, ten mój z dodanym kodem który trzeba zamieścić, i żeby ten kod który trzeba dodać był uzupełniony do końca.
Jeszcze raz proszę!
bastard13
zamiast:
  1. @mail("podany e-mail","Wiadomosc ze strony WWW","$message","$header")
  2. or die('Wystąpił błąd! Nie udało się wysłać wiadomości');
  3. // wyświetlenie komunikatu w przypadku powodzenia
  4. echo "<div style=\"color: #595959; text-align: left;\">Dziękujemy!<br /><br /> Wiadomość została wysłana poprawnie. <br /><br />
  5. <a href=\"kontakt.php\" class=\"katalog_wybrane\">Kliknij, aby wysłać kolejną wiadomość</a>
  6. </div>";

powinno być:
  1. if(preg_match("/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,7})$/i","podany_email"))
  2. { @mail("podany e-mail","Wiadomosc ze strony WWW","$message","$header")
  3. or die('Wystąpił błąd! Nie udało się wysłać wiadomości');
  4. // wyświetlenie komunikatu w przypadku powodzenia
  5. echo "<div style=\"color: #595959; text-align: left;\">Dziękujemy!<br /><br /> Wiadomość została wysłana poprawnie. <br /><br />
  6. <a href=\"kontakt.php\" class=\"katalog_wybrane\">Kliknij, aby wysłać kolejną wiadomość</a>
  7. </div>";
  8. }
  9. else echo 'Zły mail.';
joel-1
Bardzo ci dziękuje. A wiesz jak zrobić tak żeby ten tekst "zła wiadomość" wyświetlał się nad formularzem, tak jak jest w przypadku informacji o nie uzupełnionych polach formularzu? Bo ta wiadomość wyłącza formularz i się pokazuje wtedy ten tekst.
bastard13
Tak, wiem. Tylko, że pomoc pomocą, a przerabianie skryptu to już "odrobinę" coś innego.
joel-1
Aha dobrze. I tak bardzo dziękuje za pomoc.
yevaud
moze po prostu dogadaj sie z bastardem na przerobienie skryptu za niewielka oplata i po krzyku
Cysiaczek
@joel-1
To jest forum dla programistów. Programista to ktoś, kto widząc problem, stara się znaleźć rozwiązanie. Czasami trwa to krótko, czasami długo. Jak już sobie programista nie radzi, to szuka pomocy w wyszukiwarce internetowej (np. w google), na forum w jego wyszukiwarce i w końcu - wśród innych programistów, którzy być może wcześniej podobny problem rozwiązali. Ty natomiast reprezentujesz ludzi, którzy zamiast zapłacić komuś za rozwiązanie problemu, chcą z forum zrobić darmowy helpdesk.
Zakładam jednak Twoją dobrą wolę, i wierze, że chcesz zostać programistą. Zacznij więc zachowywać się jak programista.

Pozdrawiam.

P.S Zamykam
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.