Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> formularz kontaktowy php - brak potwierdzenia wysłania wiadomości
andrzej22
post
Post #1





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 12.11.2017

Ostrzeżenie: (0%)
-----


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;
?>
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 1)
Brick
post
Post #2





Grupa: Zarejestrowani
Postów: 107
Pomógł: 9
Dołączył: 16.02.2004
Skąd: Kraków

Ostrzeżenie: (0%)
-----


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.


--------------------
Wszystko należy robić najprościej jak się da, ale nie prościej
Albert Einstein
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.08.2025 - 11:47