Formularz kontaktowy - modyfikacja spr. e-mail


(Neon1992) #1

Witam,

posiadam taki formularz kontaktowy:

<?php

// sprawdzamy, czy zmienna $submit jest pusta

if (empty($_POST['submit'])) {

// wyswietlamy formularz

echo "Napisz e-maila do autora tej strony:

| Treść wiadomości | |
| Imię, nazwisko lub nick | |
| Adres e-mail | |
| | |

"; } // sprawdzamy, czy zmienne przesłane z formularza nie są puste elseif (!empty($_POST['tresc']) && !empty($_POST['imie']) && !empty($_POST['email'])) { // jeżeli powyższy warunek jest spełniony tworzona jest wiadomosć // zmienna $message zawiera tresć wiadomosci $message = "Treść wiadomości:\n$_POST[tresc]\n\nWysłał: $_POST[imie]\ne-mail: $_POST[email]"; // zmienna $header zawiera przede wszystkim adres zwrotny $header = "From: $_POST[imie] <$_POST[email]>"; // funkcja mail() za pomoca której wiadomosć zostanie wysłana @mail("moj e-mail@gmail.com","Wiadomość ze strony www.xxx.pl","$message","$header") or die('Nie udało się wysłać wiadomości'); // wy¶wietlenie komunikatu w przypadku powodzenia echo "
Dziękujemy, wiadomość została wysłana poprawnie! Na pewno odpiszemy w ciągu 48h."; } // lub w przypadku nie wypełnienia formularza do końca else echo "Wypełnij wszystkie pola formularzaPowrót"; ?>[/code] Czy mógłby pomóc mi ktoś przerobić ten kod za pomocą tego kodu:
[code]// w zmiennej $email mamy e-mail do sprawdzenia if (preg_match("/^( [a-zA-Z0-9] )+( [a-zA-Z0-9._-] )*@( [a-zA-Z0-9_-] )+( [a-zA-Z0-9._-] +)+$/" ,$email)==true) echo 'e-mail poprawny'; else echo 'to nie jest poprawny adres e-mail';

żeby sprawdzał poprawność e-mail.

Gdy e-mail byłby zły pojawił by się stosowany napis i powrót do strony z treścią żeby ta treść się zachowała a nadawca mógł poprawnie wpisać e-mail.

Proszę o pomoc, ponieważ kompletnie nie znam się na php.


(Patrol) #2
<?php

if (isset($_POST['submit']))

{

$error='';


 if (! ereg ("^.+@.+\..+$", $_POST['email'])) $error.='Podano niepoprawny adres e-mail!
';

 if (strlen($_POST['subject'])<1) $error.='Nie wpisałe¶ tematu!
';

 if (strlen($_POST['description'])<1) $error.='Nie wpisałe¶ tre¶ci!
';

         if ($error!='') 

         echo "$error";

         else {

mail("TWÓJ E-MAIL","$_POST[subject]", "

$_POST[description]

","From: $_POST[email]");

echo 'Wysłane!
';

}

}

?>

| E-mail: | |
| Temat: | |
| Tre¶ć: | |
| | |

[/code]

Prosty i niezawodny skrypt. Pozdrawiam!


(Airborn) #3

prosty to fakt, ale niestety zawodny i to bardzo. zbudowanie prawidłowego wyrażenia regularnego które by odpowiednio walidowało adresy emailowe wcale nie jest prostym zadaniem. co prawda wyrażenia takie jak tutaj są moim zdaniem strasznie przesadzone już, o tyle warto chociaż sprawdzić czy wyrażenie zawiera poprawne znaki (przykładowo to podane przez patryk_patrol , przepuści przecinki czy średniki co jest niedozwolone)


(Neon1992) #4

Proszę o pomoc.

Zależy mi żeby było tak jak napisałem w pierwszym poście.


(system) #5

Nie chciało mi się przerabiać tego na komunikaty, sprawdza czy ktoś wpisał poprawny adres.

<?php

    // sprawdzamy, czy zmienna $submit jest pusta

    if (empty($_POST['submit'])) {

    // wyswietlamy formularz

    echo "Napisz e-maila do autora tej strony:

| Treść wiadomości | |
| Imię, nazwisko lub nick | |
| Adres e-mail | |
| | |

"; } // sprawdzamy, czy zmienne przesłane z formularza nie są puste elseif (!empty($_POST['tresc']) && !empty($_POST['imie']) && !empty($_POST['email']) && (!preg_match("/^( [a-zA-Z0-9] )+( [a-zA-Z0-9._-] )*@( [a-zA-Z0-9_-] )+( [a-zA-Z0-9._-] +)+$/" ,$_POST['email'])) ) { // jeżeli powyższy warunek jest spełniony tworzona jest wiadomosć // zmienna $message zawiera tresć wiadomosci $message = "Treść wiadomości:\n$_POST[tresc]\n\nWysłał: $_POST[imie]\ne-mail: $_POST[email]"; // zmienna $header zawiera przede wszystkim adres zwrotny $header = "From: $_POST[imie] <$_POST[email]>"; // funkcja mail() za pomoca której wiadomosć zostanie wysłana @mail("moj e-mail@gmail.com","Wiadomość ze strony www.xxx.pl","$message","$header") or die('Nie udało się wysłać wiadomości'); // wy¶wietlenie komunikatu w przypadku powodzenia echo "
Dziękujemy, wiadomość została wysłana poprawnie! Na pewno odpiszemy w ciągu 48h."; } // lub w przypadku nie wypełnienia formularza do końca else { echo "Wypełnij wszystkie pola formularzaPowrót"; } ?>[/code]


(Neon1992) #6

_Puma_ , dzięki, wiadomości na e-mail przychodzą i wszystko jest tak samo jak było. Mógłby ktoś to porządnie zrobić tak jak chciałem w pierwszym poście?