ShamY
30.03.2015, 00:07:17
Witam,
szukałem na Google, jednak żadne znalezione przeze mnie rozwiązanie nie pasuję do mojego kodu.
Otóż gdy otrzymuję adres e-mail z mojej strony (funckaj mail()), to zamiast Polskich znaków są krzaczki. Kodowanie strony jest w utf8, i jego zmiana nie pomaga. Za każdym razem jest to samo, byłym bardzo wdzięczny jakby ktoś pokazał mi w któym miejscu mojego kodu coś dodać, aby to zaskoczyło...
<?php
if (empty($_POST['submit'])) {
echo "<table border=\"0\"><form method=\"post\"> <tr>
<td>Imię:*</td>
<td><input type=\"text\" name=\"imie\" style=\"width: 170px\"></td>
</tr>
<tr>
<td>Nazwisko:</td>
<td><input type=\"text\" name=\"nazwisko\" style=\"width: 170px\"></td>
</tr>
<tr>
<td>Adres e-mail:*</td>
<td><input type=\"text\" name=\"mail\" style=\"width: 170px\"></td>
</tr>
<tr>
<td>Treść:*</td>
<td><textarea name=\"tresc\" style=\"width: 500px; height: 100px\"></textarea></td>
</tr>
<tr>
<td> </td>
<td><input type=\"submit\" name=\"submit\" value=\"Wyślij\">
<input type=\"reset\" value=\"Wyczyść\"></td></form>
</tr>
</table>";
}
elseif (!empty($_POST['imie']) && !empty($_POST['mail']) && !empty($_POST['tresc'])) {
$message = "Imię: $_POST[imie]\nNazwisko: $_POST[nazwisko]\nAdres e-mail: $_POST[mail]\nTreść: $_POST[tresc]";
$header = "From: $_POST[mail]";
@mail("adres","Wiadomość","$message","$header") or
die('Błąd! Nie udało się wysłać wiadomości.'); echo "<div align=\"center\"><strong>Wiadomość została wysłana!</strong></div>"; }
else echo "<span style=\"color: #FF0000; text-align: center;\">Wypelnij wszystkie wymagane pola!</span>";
?>
johny_s
30.03.2015, 00:26:34
dodaj odpowiednie kodowanie w nagłówkach maila
ShamY
30.03.2015, 01:34:32
Ok dziękuję, działa!
$header = "From: $_POST[mail] \r\nContent-type: text/html; charset=utf-8";
schwarzu
30.06.2016, 07:41:53
Witam, temat chyba nie został zamknięty, a pomoc została udzielona. Chciałbym się podpiąć i zapytać gdzie jest błąd w kodzie, PROBLEM MAM TAKI SAM nie wyświetlają się polskie znaki w wiadomości i temacie. Przeszukałem internet i nic.
<?php
if($_POST)
{
$headers = "From: $_POST[mail] \r\nContent-type: text/html; charset=utf-8";
$to_Email = "k.juszkiewicz@bkfdesign.com"; //Replace with recipient email address
$subject = 'AJDOORS - wiadomość ze strony '.$_SERVER['SERVER_NAME']; //Subject line for emails
//check if its an ajax request, exit if not
if(!isset($_SERVER['HTTP_X_REQUESTED_WITH']) AND strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) != 'xmlhttprequest') {
//exit script outputting json data
$output = json_encode(
array(
'type'=>'error',
'text' => 'Request must come from Ajax'
));
die($output);
}
//check $_POST vars are set, exit if any missing
if(!isset($_POST["userName"]) || !isset($_POST["userEmail"]) || !isset($_POST["userMessage"]))
{
$output = json_encode(array('type'=>'error', 'text' => 'Wymagane pola są niewypełnione!'));
die($output);
}
//Sanitize input data using PHP filter_var().
$user_Name = filter_var($_POST["userName"], FILTER_SANITIZE_STRING);
$user_Email = filter_var($_POST["userEmail"], FILTER_SANITIZE_EMAIL);
$user_Message = filter_var($_POST["userMessage"], FILTER_SANITIZE_STRING);
$user_Message = str_replace("\'", "'", $user_Message);
$user_Message = str_replace("'", "'", $user_Message);
//additional php validation
if(strlen($user_Name)<4) // If length is less than 4 it will throw an HTTP error.
{
$output = json_encode(array('type'=>'error', 'text' => 'Imię i nazwisko jest za krótkie!'));
die($output);
}
if(!filter_var($user_Email, FILTER_VALIDATE_EMAIL)) //email validation
{
$output = json_encode(array('type'=>'error', 'text' => 'Adres e-mail jest niepoprawny!'));
die($output);
}
if(strlen($user_Message)<5) //check emtpy message
{
$output = json_encode(array('type'=>'error', 'text' => 'Wiadomość jest za krótka.'));
die($output);
}
//proceed with PHP email.
$headers = 'From: '.$user_Email.'' . "\r\n" .
'Reply-To: '.$user_Email.'' . "\r\n" .
'X-Mailer: PHP/' . phpversion();
$sentMail = @mail($to_Email, $subject, $user_Message . "\r\n\n" .'-- '.$user_Name. "\r\n" .'-- '.$user_Email, $headers);
if(!$sentMail)
{
$output = json_encode(array('type'=>'error', 'text' => 'Nie można wysłać wiadomości! Sprawdź konfigurację PHP poczty.'));
die($output);
}else{
$output = json_encode(array('type'=>'message', 'text' => 'Hey '.$user_Name .'! Dzięki za wiadomość. Będziemy w kontakcie.'));
die($output);
}
}
?>
Arcioch
30.06.2016, 08:49:58
Masz dwa razy zmienną $headers i w drugiej nie ma kodowania ustawionego.
A tu masz wyjaśnione dlaczego tytuł maila się "krzaczy"
LINK
schwarzu
27.07.2016, 07:58:45
Dodałem do drugiej zmiennej kodowanie, tak jak napisałeś:
//proceed with PHP email.
$headers = 'From: '.$user_Email.'' . "\r\n Content-type: text/html; charset=utf-8" .
'Reply-To: '.$user_Email.'' . "\r\n" .
'X-Mailer: PHP/' . phpversion();
i ciągle mam problem w postaci:
ÄĹŝŚÄĹĂĹÄĹŝŚÄĹĂĹÄĹŝŚÄĹĂĹÄĹŝŚÄĹĂĹÄĹŝŚÄĹĂĹ
ÄĹŝŚÄĹĂĹÄĹŝŚÄĹĂĹÄĹŝŚÄĹĂĹÄĹŝŚÄĹĂĹÄĹŝŚÄĹĂĹ
<?php
if($_POST)
{
$headers = "Content-type: text/html; charset=utf-8";
$to_Email = "k.juszkiewicz@bkfdesign.com"; //Replace with recipient email address
$subject = 'AJDOORS - wiadomość ze strony '.$_SERVER['SERVER_NAME']; //Subject line for emails
//check if its an ajax request, exit if not
if(!isset($_SERVER['HTTP_X_REQUESTED_WITH']) AND strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) != 'xmlhttprequest') {
//exit script outputting json data
$output = json_encode(
array(
'type'=>'error',
'text' => 'Request must come from Ajax'
));
die($output);
}
//check $_POST vars are set, exit if any missing
if(!isset($_POST["userName"]) || !isset($_POST["userEmail"]) || !isset($_POST["userMessage"]))
{
$output = json_encode(array('type'=>'error', 'text' => 'Wymagane pola są niewypełnione!'));
die($output);
}
//Sanitize input data using PHP filter_var().
$user_Name = filter_var($_POST["userName"], FILTER_SANITIZE_STRING);
$user_Email = filter_var($_POST["userEmail"], FILTER_SANITIZE_EMAIL);
$user_Message = filter_var($_POST["userMessage"], FILTER_SANITIZE_STRING);
$user_Message = str_replace("\'", "'", $user_Message);
$user_Message = str_replace("'", "'", $user_Message);
//additional php validation
if(strlen($user_Name)<4) // If length is less than 4 it will throw an HTTP error.
{
$output = json_encode(array('type'=>'error', 'text' => 'Imię i nazwisko jest za krótkie!'));
die($output);
}
if(!filter_var($user_Email, FILTER_VALIDATE_EMAIL)) //email validation
{
$output = json_encode(array('type'=>'error', 'text' => 'Adres e-mail jest niepoprawny!'));
die($output);
}
if(strlen($user_Message)<5) //check emtpy message
{
$output = json_encode(array('type'=>'error', 'text' => 'Wiadomość jest za krótka.'));
die($output);
}
//proceed with PHP email.
$headers = 'From: '.$user_Email.'' . "\r\n Content-type: text/html; charset=utf-8" .
'Reply-To: '.$user_Email.'' . "\r\n" .
'X-Mailer: PHP/' . phpversion();
$sentMail = @mail($to_Email, $subject, $user_Message . "\r\n\n" .'-- '.$user_Name. "\r\n" .'-- '.$user_Email, $headers);
if(!$sentMail)
{
$output = json_encode(array('type'=>'error', 'text' => 'Nie można wysłać wiadomości! Sprawdź konfigurację PHP poczty.'));
die($output);
}else{
$output = json_encode(array('type'=>'message', 'text' => 'Hey '.$user_Name .'! Dzięki za wiadomość. Będziemy w kontakcie.'));
die($output);
}
}
?>
nospor
27.07.2016, 08:08:23
Zacznij prosze uzywac bbcode bo kod jest ciezko czytelny.
schwarzu
27.07.2016, 08:30:33
No pewnie, że tak, oczywiście masz rację, mam nadzieję, że teraz jest lepiej. Dzięki za uwagę.
Kod
<?php
if($_POST)
{
$headers= "Content-typ: text/html; charset=utf-8r\n";
$to_Email = "k.juszkiewicz@bkfdesign.com"; //Replace with recipient email address
$subject = 'AJDOORS - wiadomość ze strony '.$_SERVER['SERVER_NAME']; //Subject line for emails
//check if its an ajax request, exit if not
if(!isset($_SERVER['HTTP_X_REQUESTED_WITH']) AND strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) != 'xmlhttprequest') {
//exit script outputting json data
$output = json_encode(
array(
'type'=>'error',
'text' => 'Request must come from Ajax'
));
die($output);
}
//check $_POST vars are set, exit if any missing
if(!isset($_POST["userName"]) || !isset($_POST["userEmail"]) || !isset($_POST["userMessage"]))
{
$output = json_encode(array('type'=>'error', 'text' => 'Wymagane pola są niewypełnione!'));
die($output);
}
//Sanitize input data using PHP filter_var().
$user_Name = filter_var($_POST["userName"], FILTER_SANITIZE_STRING);
$user_Email = filter_var($_POST["userEmail"], FILTER_SANITIZE_EMAIL);
$user_Message = filter_var($_POST["userMessage"], FILTER_SANITIZE_STRING);
$user_Message = str_replace("\'", "'", $user_Message);
$user_Message = str_replace("'", "'", $user_Message);
//additional php validation
if(strlen($user_Name)<4) // If length is less than 4 it will throw an HTTP error.
{
$output = json_encode(array('type'=>'error', 'text' => 'Imię i nazwisko jest za krótkie!'));
die($output);
}
if(!filter_var($user_Email, FILTER_VALIDATE_EMAIL)) //email validation
{
$output = json_encode(array('type'=>'error', 'text' => 'Adres e-mail jest niepoprawny!'));
die($output);
}
if(strlen($user_Message)<5) //check emtpy message
{
$output = json_encode(array('type'=>'error', 'text' => 'Wiadomość jest za krótka.'));
die($output);
}
//proceed with PHP email.
$headers = 'From: '.$user_Email.'' . "\r\n Content-type: text/html; charset=utf-8" .
'Reply-To: '.$user_Email.'' . "\r\n" .
'X-Mailer: PHP/' . phpversion();
$sentMail = @mail($to_Email, $subject, $user_Message . "\r\n\n" .'-- '.$user_Name. "\r\n" .'-- '.$user_Email, $headers);
if(!$sentMail)
{
$output = json_encode(array('type'=>'error', 'text' => 'Nie można wysłać wiadomości! Sprawdź konfigurację PHP poczty.'));
die($output);
}else{
$output = json_encode(array('type'=>'message', 'text' => 'Hey '.$user_Name .'! Dzięki za wiadomość. Będziemy w kontakcie.'));
die($output);
}
}
?>
mlawnik
27.07.2016, 15:54:39
źle:
Cytat
Content-typ: text/html; charset=utf-8r\n
dobrze
Cytat
Content-type: text/html; charset=utf-8r\n
schwarzu
12.08.2016, 08:16:57
Dzięki za zaangażowanie w temat, ale to niestety nie to. Poprawiłem błąd, ale problem nie zniknął.
Forumowicze, macie jeszcze jakieś sugestie? Jakiekolwiek?!
Wznawiam prośbę o pomoc, może ktoś pomóc z tym nieszczęsnym PHP? Sam nie jestem w stanie tego rozwiązać.
Kod
<?php
if($_POST)
{
$to_Email = "k.juszkiewicz@bkfdesign.com"; //Replace with recipient email address
$subject = 'AJDOORS - e-mail ze strony '.$_SERVER['SERVER_NAME']; //Subject line for emails
//check if its an ajax request, exit if not
if(!isset($_SERVER['HTTP_X_REQUESTED_WITH']) AND strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) != 'xmlhttprequest') {
//exit script outputting json data
$output = json_encode(
array(
'type'=>'error',
'text' => 'Request must come from Ajax'
));
die($output);
}
//check $_POST vars are set, exit if any missing
if(!isset($_POST["userName"]) || !isset($_POST["userEmail"]) || !isset($_POST["userMessage"]))
{
$output = json_encode(array('type'=>'error', 'text' => 'Wymagane pola są niewypełnione!'));
die($output);
}
//Sanitize input data using PHP filter_var().
$user_Name = filter_var($_POST["userName"], FILTER_SANITIZE_STRING);
$user_Email = filter_var($_POST["userEmail"], FILTER_SANITIZE_EMAIL);
$user_Message = filter_var($_POST["userMessage"], FILTER_SANITIZE_STRING);
$user_Message = str_replace("\'", "'", $user_Message);
$user_Message = str_replace("'", "'", $user_Message);
//additional php validation
if(strlen($user_Name)<4) // If length is less than 4 it will throw an HTTP error.
{
$output = json_encode(array('type'=>'error', 'text' => 'Imię i nazwisko jest za krótkie!'));
die($output);
}
if(!filter_var($user_Email, FILTER_VALIDATE_EMAIL)) //email validation
{
$output = json_encode(array('type'=>'error', 'text' => 'Adres e-mail jest niepoprawny!'));
die($output);
}
if(strlen($user_Message)<5) //check emtpy message
{
$output = json_encode(array('type'=>'error', 'text' => 'Wiadomość jest za krótka.'));
die($output);
}
//proceed with PHP email.
$headers = "From: $_POST[mail] \r\nContent-type: text/html; charset=utf-8" .
'From: '.$user_Email.'' . "\r\n" .
'Reply-To: '.$user_Email.'' . "\r\n" .
'X-Mailer: PHP/' . phpversion();
$sentMail = @mail($to_Email, $subject, $user_Message . "\r\n\n" .'-- '.$user_Name. "\r\n" .'-- '.$user_Email, $headers);
if(!$sentMail)
{
$output = json_encode(array('type'=>'error', 'text' => 'Nie można wysłać wiadomości! Sprawdź konfigurację PHP poczty.'));
die($output);
}else{
$output = json_encode(array('type'=>'message', 'text' => 'Hey '.$user_Name .'! Dzięki za wiadomość. Będziemy w kontakcie.'));
die($output);
}
}
?>
trueblue
12.08.2016, 08:48:14
Skleiłeś nagłówek Content-type z From.
schwarzu
12.08.2016, 09:09:09
Dzięki, za zainteresowanie. Czy to powinno wyglądać tak?
Kod
$headers = "Content-type: text/html; charset=utf-8" .
'From: '.$user_Email.'' . "\r\n" .
'From: '.$user_Email.'' . "\r\n" .
'Reply-To: '.$user_Email.'' . "\r\n" .
'X-Mailer: PHP/' . phpversion();
trueblue
12.08.2016, 09:11:06
Nie, bo nadal są sklejone.
Wydrukuj na ekran wartość zmiennej $headers, sprawdź podgląd źródła strony i zobaczysz.
schwarzu
12.08.2016, 09:25:17
Kod
$headers = "Content-type: text/html; charset=utf-8" .
$headers .= 'From: '.$user_Email.'' . "\r\n" .
'From: '.$user_Email.'' . "\r\n" .
'Reply-To: '.$user_Email.'' . "\r\n" .
'X-Mailer: PHP/' . phpversion();
OK. zmienna headers odklejona, ale problem pozostał
trueblue
12.08.2016, 09:44:51
A pokaż teraz jej wartość.
schwarzu
12.08.2016, 13:15:06
ŝŚÄĹĹĂŝŚÄĹĹĂ -- kamil -- kamil@kamil.com
trueblue
12.08.2016, 13:23:06
Zawartość zmiennej $headers.
schwarzu
12.08.2016, 13:34:42
Dzięki za pomoc i że mnie prowadzisz w tej mgle. Nie będę też ściemniać, że wiem o co chodzi, bo nie bardzo rozumiem co mam pokazać, lub jak to zrobić.
trueblue
12.08.2016, 13:50:49
Zobacz wynik w źródle strony. Przyjrzyj się znak po znaku.
schwarzu
17.08.2016, 07:36:07
jesteś niesamowity, dzięki wielkie za wskazówki i że nie odpuściłeś. Natomiast nie jest aż tak pięknie, teraz przestała się wyświetlać informacja na stronie, że mail został wysłany. Tak na prawdę nic się nie dzieje. Po wciśnięciu przycisku wyślij, mail się wysyła, ale wszystkie dane wciąż są widoczne w oknach i brakuje informacji, że mail został wysłany.
nansss93
17.08.2016, 08:09:19
Podrzuć kod w bbcode, ale niech to będzie bbcode php
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.