Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: formularz kontaktowy php - brak potwierdzenia wysłania wiadomości
Forum PHP.pl > Forum > PHP
andrzej22
Mam problem z formularzem kontaktowym na stronie, po wciśnięciu przycisku wyślij - dane są pobierane i wysłane na e-mail natomiast na stronie nie wyświetla się potwierdzenie o wysłaniu wiadomości. Poniżej wklejam treść pliku php. Z góry dziękuje za odpowiedzi.

<?php
header("content-type: application/json; charset=utf-8");
$name=isset($_POST['name']) ? $_POST['name'] : "";
$email=isset($_POST['email']) ? $_POST['email'] : "";
$phone=isset($_POST['phone']) ? $_POST['phone'] : "";
$message=isset($_POST['message']) ? $_POST['message'] : "";
if($name && $email && $phone && $message){
$headers = "MIME-Version: 1.0\r\nContent-type: text/plain; charset=utf-8\r\nContent-Transfer-Encoding: 8bit";
$message_body="Formularz kontaktowy wysłany ze strony http://fotoplatinum.pl\n";
$message_body.="Imię i nazwisko: $name\n";
$message_body.="Adres email: $email\n";
$message_body.="Numer telefonu: $phone\n\n";
$message_body.=$message;
if(mail("kontakt@fotoplatinum.nazwa.pl","Formularz kontaktowy",$message_body,$headers)){
$json=array("status"=>1,"msg"=>"<p class='status_ok'>Twój formularz został pomyślnie wysłany.</p>");
}
else{
$json=array("status"=>0,"msg"=>"<p class='status_err'>Wystąpił problem z wysłaniem formularza.</p>");
}
}
else{
$json=array("status"=>0,"msg"=>"<p class='status_err'>Proszę wypełnić wszystkie pola przed wysłaniem.</p>");
}
echo json_encode($json);
exit;
?>
Brick
Twój skrypt po wysłaniu e-maila generuje JSON a nie HTML. JSON musi być przetworzony na HTML żeby wyświetlił się w przeglądarce. Zapewne robi to jakiś skrypt javascript i pewnie to on ma problemy z wyświetleniem komunikatu. Najczęstszy błąd to nieprawidłowa nazwa atrybutu ID (lub brak nazwy) dla elementu DIV w którym ten skrypt ma wyświetlić komunikat. Np powinno być: <div id="result"></div> a jest: <div id="pokaz_komunikat"></div>

Jeżeli jest to jakieś gotowe rozwiązanie typu "Contact form" to zapewne ma plik "js/contact-form.js" i tam albo się definiuje nazwę tego elementu albo jest na sztywno wpisana do skryptu. Jak jest jakiś example to najlepiej tam popatrzeć.

Poza tym bezpieczeństwo tego skryptu jest delikatnie mówiąc dalekie od ideału. Coś takiego:
$name=isset($_POST['name']) ? $_POST['name'] : "";
oznacza że w e-mailu wysyłane są dane bezpośrednio wpisane przez kogoś w formularzu bez jakiejkolwiek filtracji. Czyli można wstawić tam różne złe rzeczy.
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.