Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Brak polskich znakow formularz php
-Adip-
post
Post #1





Goście







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





Grupa: Zarejestrowani
Postów: 1 527
Pomógł: 438
Dołączył: 28.06.2011
Skąd: Warszawa

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


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 "?" (IMG:style_emoticons/default/wink.gif) Powinno działać (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
-Adip-
post
Post #3





Goście







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ą(IMG:style_emoticons/default/sad.gif)
Go to the top of the page
+Quote Post
Sephirus
post
Post #4





Grupa: Zarejestrowani
Postów: 1 527
Pomógł: 438
Dołączył: 28.06.2011
Skąd: Warszawa

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


Oj strasznie namotałeś... masz za dużo argumentów w funkcji mail()

Przejrzyj to i odpowiednio rozmieść argumenty (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 23.08.2025 - 02:00