Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Brak polskich znakow formularz php
Forum PHP.pl > Forum > Przedszkole
Adip
Witam z moim problemem borykam się już od dwóch dni. Wiem że temat był już wałkowany, ale nigdzie nie mogę znaleść prawidłowej odpowiedzi. Mam formularz PHP, ale po wysłaniu na pocztę nie ma polskich znaków.
CODE

<?php
//--- początek formularza ---
if(empty($_POST['submit'])) {
?>
<?php
} else {

//twoje dane
$email = 'moj adres';

//dane z formularza
$formName = $_POST['formName'];
$formEmail = $_POST['formEmail'];
$formText = $_POST['formText'];

if(!empty($formName) && !empty($formEmail) && !empty($formText)) {

//--- początek funkcji weryfikującej adres e-mail ---
function checkMail($checkmail) {
if(filter_var($checkmail, FILTER_VALIDATE_EMAIL)) {
if(checkdnsrr(array_pop(explode("@",$checkmail)),"MX")){
return true;
}else{
return false;
}
} else {
return false;
}
}
//--- koniec funkcji ---
if(checkMail($formEmail)) {
//dodatkowe informacje: ip i host użytkownika
$ip = $_SERVER['REMOTE_ADDR'];
$host = gethostbyaddr($_SERVER['REMOTE_ADDR']);

//tworzymy szkielet wiadomości
//treść wiadomości
$mailText = "Treść wiadomości:\n$formText\nOd: $formName, $formEmail ($ip, $host)";

//adres zwrotny
$mailHeader = "From: $formName <$formEmail>";

//funkcja odpowiedzialna za wysłanie e-maila
@mail($email, 'Formularz kontaktowy', $mailText, $mailHeader) or die('Błąd: wiadomość nie została wysłana');

//komunikat o poprawnym wysłaniu wiadomości
echo 'Wiadomość została wysłana';
} else {
echo 'Adres e-mail jest niepoprawny';
}

} else {
//komunikat w przypadku nie powodzenia
echo 'Wypełnij wszystkie pola formularza';
}

//--- koniec formularza ---
}
?>

Niewiem gdzie i co trzeba wsawic aby bylo dobrze
Sephirus
Problem jest bardziej skomplikowany. Odpowiednie kodowanie musi być określone w mailu aby było ok

Zakładam że działasz na UTF-8 (jeśli nie wystarczy zmienić w kodzie):

  1. $to = 'adres@domena_adresata.com';
  2.  
  3. // nagłówki niezbędne do wysłania treści maila tak by był w danym kodowaniu:
  4. $headers = 'MIME-Version: 1.0' . "\r\n";
  5. $headers.= 'Content-type: text/html; charset=utf-8' . "\r\n";
  6. $headers.= 'From: Nazwa wyswietlana <adres@domena.com>' . "\r\n" .
  7. 'Reply-To: adres@domena.com';
  8.  
  9. // temat musi być osobno zakodowany przykładowo tak jak poniżej (BASE) - może być jeszcze QP ale zostałbym przy tym:
  10. mail($to, "=?UTF-8?B?".base64_encode($subject)."?=", $body, $headers);


Jeśli masz inne kodowanie niż UTF-8 to zmień je w nagłówkach i przy temacie pomiędzy dwoma "?" wink.gif Powinno działać smile.gif
Adip
Próbowałem wstawić w kodzie
Kod
mail($email, 'Formularz kontaktowy', $mailText, $mailHeader, [b]$headers[/b]) or die('Błąd: wiadomość nie została wysłana');
a także nagłówki
Kod
// nagłówki niezbędne do wysłania treści maila tak by był w danym kodowaniu:
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers.= 'Content-type: text/html; charset=utf-8' . "\r\n";
i teraz maile wogóle nie przychodząsad.gif
Sephirus
Oj strasznie namotałeś... masz za dużo argumentów w funkcji mail()

Przejrzyj to i odpowiednio rozmieść argumenty smile.gif
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.