Formularz kontaktowy html/php


(mtrzecki) #1

Mam formularz na stronie w html z wykorzystaniem pliku formularz.php , jak zrobić aby przychodzące maile z tego formularza były w html?


(hoobert) #2

jaka jest zawartość pliku formularz.php?


(mtrzecki) #3

<?php

$adres="kontakt@pokoje-bydgoszcz.pl";

$temat="Zapytanie w sprawie rezerwacji";

$wiadomosc="Wartosc pola1 to: ".$_POST["imie"].". Wartosc pola2 to: ".$_POST["adres"].". Wiadomość : ".$_POST["tresc"].".";

$header = "From: $_POST[imie] <$_POST[adres]>";

if(function_exists('mail'))

{

mail($adres, $temat, $header, $wiadomosc);

echo"Formularz został wysłany. Dziękujemy!";

echo"Postaramy się odpowiedzieć jak najszybciej";

}

else

{

echo"Niestety funkcja mail() jest wyłączona na tym serwerze. Nie mogę wysłać danych z formularza.";

}

?>


(hoobert) #4

zgodnie z dokumentacją:

$header = "From: $_POST[imie] <$_POST[adres]>";

zamień na:

$header = "From: $_POST['imie'] <$_POST['adres']>"."\r\n";

$header .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";

tam gdzie wywołujesz funkcję mail:

mail($adres, $temat, $header, $wiadomosc);

zamień na

mail($adres, $temat, $wiadomosc, $header);

(mtrzecki) #5
Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING

taki błąd wskoczył w linii 5


(hoobert) #6

5 linia to ta zmienna $header?

spróbuj:

$header = "From: ".$_POST['imie']."<".$_POST['adres']."> \r\n";

$header .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";

(mtrzecki) #7

5 linia to

$header = "From: $_POST['imie'] <$_POST['adres']>"."\r\n";

(hoobert) #8

a jak zamienisz go na:

$header = "From: ".$_POST['imie']."<".$_POST['adres']."> \r\n";

$header .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";

to też nie pomaga?


(mtrzecki) #9

Teraz wysyła tylko w wiadomości jest od: imie


(hoobert) #10

Nadawca wiadomości ustawiony jest w nagłówku 'From'.

To jest właśnie ta piąta linijka:

$header = "From: ".$_POST['imie']."<".$_POST['adres']."> \r\n";

Jeżeli wyświetla się od 'imie' to widocznie w formularzu, w polu 'imie' wpisany jest tekst 'imie'. Innej możliwości nie widzę, chyba, że w pliku formularz.php przypisujesz coś do zmiennej $_POST['imie'] przed wysłaniem wiadomości.


(mtrzecki) #11

No tak wyświetla się imię wprowadzone w formularzu jako nadawca ale nie ma adresu maila nadawcy?


(hoobert) #12

Mail wprowadzony jest w polu o nazwie 'adres' w pliku html zawierającym formularz. Sprawdź czy to pole faktycznie ma name ustawione na 'adres' lub pokaż kod tego pliku html.

A tak swoją drogą to nie wiem jak jest skonfigurowany Twój serwer pocztowy, choć jak mówisz, że te maile dochodzą to chyba przepuszcza takie wiadomości, ale ogólnie wiele programów pocztowych traktuje takie wiadomości jako spam, gdzie jako nadawca jest wpisany inny adres niż ten, z którego wiadomość zostaje wysłana. Sam teraz testowałem ten skrypt na swoim mailu i na poczcie z wp przy nagłówku from ustawionym na dowolny adres e-mail takie wiadomości trafiały od razu do spamu, natomiast bez tego nagłówka wiadomości dostarczone były poprawnie. Może warto ten adres nadawcy dopisać do treści wiadomości zamiast do nagłówka, wtedy jest większa pewność, że taka wiadomość zostanie dostarczona poprawnie.


(mtrzecki) #13

Faktycznie w html to pole było ustawione na 'email' zmieniłem na 'adres' i teraz jest ok dzięki. A jak zmienić żeby to co jest w $wiadomosc wyświetlało się nie w jednej lini tylko np. jedno pod drugim ?


(hoobert) #14

najprościej zwykłym html'owym

$wiadomosc="Wartosc pola1 to: ".$_POST["imie"].".
 Wartosc pola2 to: ".$_POST["adres"].". 
Wiadomość : ".$_POST["tresc"].".";

(mtrzecki) #15

Dzięki za pomoc . Jakoś to już wygląda