Formularz kontaktowy PHP + HTML


(Deard242) #1

Witam!

Chciałbym na stronę udostępnić gotowy formularz kontaktowy, jednak mam kłopot, ponieważ nie wysyła od wiadomości.

Najprawdopodobniej czegoś mi brakuje w kodzie czy może mi ktoś sprawdzić poprawność i ewentualnie poprawić?

Kod na stronie HTML ( index.html ) :

Kontakt

Treść [/code] [b]Kontakt ( kontakt.php ) :[/b]
[code] <?php //filtruje dane użytkownika $imie = htmlspecialchars(trim($_POST['imie'])); $mail = htmlspecialchars(trim($_POST['mail'])); $temat = htmlspecialchars(trim($_POST['temat'])); $wiadomosc = htmlspecialchars(trim($_POST['wiadomosc'])); $send = $_POST['send']; //mail na który będa wysyłane wiadomości $odbiorca = "w2l@o2.pl"; //nagłówki $header = "Content-type: text/html; charset=utf-8\r\nFrom: $mail"; //Sprawdzam czy istnieje ciastko, jeżeli tak wyświetlam komunikat if (isset($_COOKIE['send'])) $error ='Odczekaj '.($_COOKIE['send']-time()).' sekund przed wysłaniem kolejnej wiadomości'; if ($send && !isset($_COOKIE['send'])) { //Sprawdzam nick if (empty($imie)) { $error = "Nie wypełniłeś pola Nick !"; } elseif (strlen($imie) > 20) { $error .="Za długi nick - max. 20 znaków ";} //Sprawdzam mail if (empty($mail)) { $error .= "Nie wypełniłeś pola E-mail !"; } elseif (strlen($mail) > 30) { $error .="Za długi e-mail - max. 30 znaków ";} elseif (preg_match('/^[a-zA-ZąćęłńóśźżĄĆĘŁŃÓŚŹŻ0-9-_.]+\@[a-zA-ZąćęłńóśźżĄĆĘŁŃÓŚŹŻ0-9-_.]+.[a-z]{2,4}$/',$mail) == false) { $error .= "Niepoprawny adres E-mail! "; } //Sprawdzam temat if (empty($temat)) { $error .= "Nie wypełniłeś pola Temat !"; } elseif (strlen($temat) > 120) { $error .="Za długi temat - max. 120 znaków ";} //Sprawdzam wiadomosc if (empty($wiadomosc)) { $error .= "Nie wypełniłeś pola Wiadomość !"; } elseif (strlen($wiadomosc) > 400) { $error .="Za długa wiadomość - max. 400 znaków ";} //Sprawdzam czy są błędy i wysyłam wiadomość if (empty($error)) { $list = "Przysłał - $imie ($mail) Treść wiadomości - $wiadomosc"; if (mail($odbiorca, $temat, $list, $header)) { $error .= "Twoja wiadomość została wysłana"; setcookie("send", time()+60, time()+60); } else { $error .= "Wystąpił błąd podczas wysyłania wiadomości, spróbuj później.";} } } ?>

Z góry bardzo dziękuję!

Pozdrawiam


(Pablo_Wawa) #2

W formularzu masz pola o nazwach a1, a2, a3 i a5, a w skrypcie odwołujesz się do pól imie, mail, temat i wiadomosc.


(Deard242) #3

Okej, zmieniłem odpowiednio plik kontakt.php na ‘a1’ , ‘a2’ , ‘a3’ i ‘a5’ jednak e-mail nadal nie jest wysyłany. Tzn. po kliknięciu na przycisk wyślij mam napis: “Darmowy Hosting CBA.PL”

Może ktoś sprawdzić co jeszcze jest na rzeczy?

http://tester11.cba.pl/


(Pablo_Wawa) #4

Tak na szybko patrząc na kod to brakuje mi inicjalizacji zmiennej $error

$error = '';

Sprawdź też argumenty wywołania funkcji mail, np. tak:

echo ''.$odbiorca.''.$temat.''.$list.''.$header.'';[/code]

i może coś zauważysz?

Istnieje też obawa, że jako e-mail nadawcy musisz użyć konta pocztowego tego serwisu (darmowe hostingi czasami mają różne ograniczenia).


(hatezit) #5

A może warto zainteresować się php mailer? http://phpmailer.worxware.com/


(Deard242) #6

Niestety php mailer nie spełni się w tym wypadku, chcę tylko by obecny formularz dostarczał maile do mnie.