Problem z poprawnym emailem w formularzu


(Marcin Dobrzanski) #1

Witam

Mam pewein problem z formularzem kontaktowym na stronie a mianowicie: Po wypełnieniu pól w formularzu wywala mi błąd że nie jest poprawny adres meilowy. Coś brakuje w kodzie lub coś przeoczyłem. Jescze jedno pytanie jak albo co mam zrobic żeby po sprawdzeniu poprawności wypełnienia formularza powracał do tej samej strony a nie jak to do tej jest że ładuje się strona biała z informacją .Z góry dziekuje za pomoc :slight_smile:

O to kod:

<?php

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

?>

|
|
dsds234|
5567|   |
|   |
Imię i Nazwisko:
| |
|   |
E-Mail:
| |
|   |
Treść wiadomości:
| |
|   |   | |
|   |                                       |
| | |
?php }elseif(!empty($_POST['imienazwisko']) !empty($_POST['email']) !empty($_POST['trescwiadomosci'])){ /* Funkcja sprawdzająca poprawność E-Maila */ function SprawdzEmail($email) { if (!eregi("^[_.0-9a-z-]+@([0-9a-z][0-9a-z-]+.)+[a-z]{2,4}$" , $email)){ return false; } return true; } if(SprawdzEmail($_POST['email'])){ /* Tworzymy szkielet wysyłanej wiadomości */ $adresemail="marcin.dobrzański@poczta.fm"; $ip=$_SERVER['REMOTE_ADDR']; $host=gethostbyaddr($_SERVER['REMOTE_ADDR']); $wiadomosc="Od: $_POST[imienazwisko] ,$_POST[email]\nIP: $ip, HOST: $host\n\n$_POST[trescwiadomosci]"; $nadawca="From: $_POST[email]"; @mail("$adresemail", "Formularz kontaktowy", "$wiadomosc", "$nadawca") or die('Formularz nie został wysłany'); echo "Dziękujemy, formularz został wysłany."; }else{ echo "Wprowadzony adres E-Mail jest niepoprawny"; } }else{ echo "Wypełnij wszystkie pola formularza"; } ?[/code]

|

|

|


(ra-v) #2
if (!eregi("^[_\.0-9a-z\-]+@([0-9a-z][0-9a-z\-]+\.)+[a-z]{2,4}$" , $email)){

Spróbuj tak zrobić we funkcji sprawdzającej


(Marcin Dobrzanski) #3

niestety nie pomogło :frowning: dalej lipa


(ra-v) #4
<?php


function SprawdzEmail($email) {

if (!eregi("^[_\.0-9a-z\-]+@([0-9a-z][0-9a-z\-]+\.)+[a-z]{2,4}$" , $email)){

return false;

}

return true;

}


var_dump(SprawdzEmail('costam-cos@wp.pl'));

echo '
';

var_dump(SprawdzEmail('co@stam-cos@wp.pl'));

echo '
';

var_dump(SprawdzEmail('cos.cos-cos@-wp.pl'));

echo '
';

var_dump(SprawdzEmail('cos.cos-cos@wp-wp.com'));

echo '
';


?>

daje efekt

bool(true)

bool(false)

bool(false)

bool(true)

więc podaj "schemat" maila, który źle działa


(Marcin Dobrzanski) #5

O.K.

Pomyliłe tabele dreamwerze i podiołem zły kod php pod tabele

Wielkie dzięki ra-v :). Pozostaje mi tylko jedna kwestia jak zrobić tak aby po wypełnieniu wszystkich pól wracał do do tej samej strony co był formularz tylko z napisem np: "Dziękujemy, formularz został wysłany."

Pozdrawim.


(ra-v) #6

Np. samo sprawdzenie formularza zrobić przed nagłówkiem i DOCTYPE i na warunkach

jeśli wysłany to

header('Location: http://domena.pl/przekieruj-tutaj.html?lub_jakas_zmienna=1');

jeśli nie to przekaż błędy i komunikaty do zmiennej, które zostaną wyświetlone we formularzu.


(Marcin Dobrzanski) #7

kurcze jakoś nie moge sobie poradzić. Może mi ktoś pomóc ? potrzebuje żeby formularz po sprawdzeniu przechodził na np:www.moja_strona.pl/kontakt1

Panowie powiedzcie mi gdzie to wstawić oto kod:

<?php

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

?>

|

dsds234



5567

Imię i Nazwisko:




E-Mail:




Treść wiadomości:









© 2010 IglooLine


?php

}elseif(!empty($POST['imienazwisko']) !empty($POST['email']) !empty($_POST['trescwiadomosci'])){

/* Funkcja sprawdzająca poprawność E-Maila */

function SprawdzEmail($email) {

if (!eregi("^[_.0-9a-z-]+@([0-9a-z][0-9a-z\-]+.)+[a-z]{2,4}$" , $email)){

return false;

}

return true;

}

if(SprawdzEmail($_POST['email'])){

/* Tworzymy szkielet wysyłanej wiadomości */

$adresemail="xxxxxxx@xxxxx";

$ip=$SERVER['REMOTEADDR'];

$host=gethostbyaddr($SERVER['REMOTEADDR']);

$wiadomosc="Od: $POST[imienazwisko] ,$POST[email]\nIP: $ip, HOST: $host\n\n$_POST[trescwiadomosci]";

$nadawca="From: $_POST[email]";

@mail("$adresemail", "Formularz kontaktowy", "$wiadomosc", "$nadawca") or die('Formularz nie został wysłany');

echo "Dziękujemy, formularz został wysłany.";

}else{ echo "Wprowadzony adres E-Mail jest niepoprawny"; }

}else{ echo "Wypełnij wszystkie pola formularza"; }

?

[/code]


|

(athei) #8

Zamiast

echo "Dziękujemy, formularz został wysłany.";

daj

header('Location: www.moja_strona.pl/kontakt1');

(Marcin Dobrzanski) #9

athei - nie działa mi to :frowning: #-o


(Sitemaster) #10

paskudny kod.

a co się dzieje? błąd header already sent?

jeśli tak, to na samiutkim początku daj

<?php ob_start(); ?>

a na samym końcu skryptu daj

<?php ob_end_flush(); ?>

(ra-v) #11

header() musi być użyty zanim cokolwiek zostanie wysłane do przeglądarki (czyt. HTML). Innymi słowy musi być "jak najwyżej" w kodzie PHP.

Ewentualnie spróbuj uruchomić coś stylu

header('Location: http://www.example.com/', true);