koszmos
(koszmos)
2 Kwiecień 2019 09:36
#1
Witam Serdecznie.
mam mały problem z formularzem kontaktowym, otóż jakbym nie kombinował, w wiadomości ostatecznej nie pokazuje polskich znaków.
Kod formularza:
<?php
$field_name = $_POST[‘cf-name’];
$field_email = $_POST[‘cf-email’];
$field_message = $_POST[‘cf-message’];
$field_phone = $_POST[‘cf-phone’];
//Specify the message recipient:
$mail_to = ‘recepcja@xxx.org’;
$subject = 'Nowa Wiadomosc ze strony xxx '.$field_name;
//The email content:
$body_message = 'Imie i Nazwisko: '.$field_name."\n";
$body_message .= 'E-mail: '.$field_email."\n";
$body_message .= 'Telefon: '.$field_phone."\n";
$body_message .= 'Dodatkowe Informacje: '.$field_message;
$headers = 'From: '.$field_email."\r\n";
$headers .= 'Reply-To: '.$field_email."\r\n";
$mail_status = mail($mail_to, $subject, $body_message, $headers);
//Show a javascript message about the successful or unsuccessful sending a message
if ($mail_status) { ?>
<?php
}
else { ?>
<?php
}
?>
Ma ktoś jakiś pomysł ?
Dodanie ‘Content-type: text/html; charset=UTF-8’ . “\r\n”;
nie pomaga
koszmos
(koszmos)
2 Kwiecień 2019 09:53
#3
Zdeklarowane kodowanie w pliku html, jest na polski czyli
Z pliku html, jest odniesienie do contact.php
a sam kod w html wygląda
<div class=" bd-columnwrapper-37
col-sm-4">
<div class="bd-layoutcolumn-37 bd-column" ><div class="bd-vertical-align-wrapper"><form class=" bd- form-5 "
action="contact1.php"
name="form-name" method="post">
<div class="bd-container-inner">
<div class="container-fluid">
<div class=" bd-input-13 form-group">
<label class="bd-form-label">Imię i Nazwisko</label>
<input type="text" class="bd-form-input"
placeholder="Wpisz Imię i Nazwisko"
name="cf-name" >
</div>
<div class=" bd-input-12 form-group">
<label class="bd-form-label">Email</label>
<input type="text" class="bd-form-input"
placeholder="Input"
value="wpisz Adres e-mail"
name="cf-email" >
</div>
<div class=" bd-input-11 form-group">
<label class="bd-form-label">Telefon</label>
<input type="text" class="bd-form-input"
placeholder="Wpisz Numer Telefonu"
name="cf-phone" >
</div>
<div class=" bd-textarea-6 form-group">
<label class="bd-form-label">Dodatkowe Informacje</label>
<textarea class="bd-form-input"
name="cf-message"
placeholder="Wpisz Dodatkowe Informacje"></textarea>
</div>
<a
onclick="jQuery(this).closest('form').submit();" href="#" class="bd-linkbutton-13 bd-button bd-own-margins bd-content-element" >
Wyślij Rezerwację
</a>
<div class=" bd-checkbox-5 form-group">
<label class="bd-form-label">Kliknij Aby Zaakceptować Warunki </label>
<div class="bd-form-checkbox checkbox-inline">
<input type="checkbox" id="form-checkbox-50" value="Kliknij Aby Zaakceptować Warunki ">
<label for="form-checkbox-50" class="bd-form-checkbox-label"></label>
</div>
</div>
</div>
</div>
</form></div></div>
</div>
Fizyda
(Fizyda)
2 Kwiecień 2019 10:11
#4
Język nie ma znaczenie, znaczenie ma kodowanie pliku oraz to jakie kodowanie deklarujesz w htmlu. Nie da się ustawić kodowania na konkretny język, tylko na konkretny format. Chodzi o to: <meta charset="UTF-8">
plus kodowanie pliku.
koszmos
(koszmos)
2 Kwiecień 2019 10:18
#5
Czyli łopatologicznie, jak to rozwiązać ?
W pliku php odpowiedzialnym za wysyłanie ?
Fizyda
(Fizyda)
2 Kwiecień 2019 10:20
#6
Ustawić wszędzie takie samo kodowanie - najlepiej UTF-8 zadeklarować w HTML, a na plikach dać UTF-8 bez BOM.
koszmos
(koszmos)
2 Kwiecień 2019 10:27
#7
To w pliku strony html jest zdeklarowany UTF-8
A w jaki sposób go zdeklarować w pliku php ?
$body_message .= 'Dodatkowe Informacje: '.$field_message;
$headers = 'From: '.$field_email."\r\n";
'MIME-Version: 1.0' . "\r\n".
'Content-type: text/html; charset=UTF-8' . "\r\n";
$headers .= 'Reply-To: '.$field_email."\r\n";
?
koszmos
(koszmos)
2 Kwiecień 2019 10:32
#9
Dokładnie tak mam wybrane w notepad +, próbowałem tez konwertować
hindus
(hindus)
2 Kwiecień 2019 10:42
#10
A header('Content-Type: text/html; charset=utf-8');
na początku pliku php masz?
koszmos
(koszmos)
2 Kwiecień 2019 10:47
#11
Nie, Linia od razu zaczyna się
<?php
$field_name = $_POST['cf-name'];
$field_email = $_POST['cf-email'];
$field_message = $_POST['cf-message'];
$field_phone = $_POST['cf-phone'];
czyli zdefiniować to w taki sposób ?
<?php
'Content-type: text/html; charset=UTF-8' . "\r\n";
$field_name = $_POST['cf-name'];
$field_email = $_POST['cf-email'];
$field_message = $_POST['cf-message'];
$field_phone = $_POST['cf-phone'];
hindus
(hindus)
2 Kwiecień 2019 10:51
#12
Fizyda
(Fizyda)
2 Kwiecień 2019 11:35
#13
Oba pliki mają UTF-8 bez BOM? PHP i HTML?
Jak wyżej Ci napisali. Aby były polskie litery, to w meta musi być na UTF-8 w każdym pliku, czy to jest w HTML, czy w PHP. A już wcześniej pliki html, php muszą być ustawione na kodowanie UTF-8 bez BOM. Jeżeli nadal jest bez polskich liter, to wybierz konwertuj na format UTF-8 bez BOM. Szkoda, że nie pokazałeś całego pliku wraz z meta.
koszmos
(koszmos)
3 Kwiecień 2019 16:14
#17
Zobacz co masz napisane pod<!DOCTYPE HTML>
. Nie widzę tam kodowania UTF-8.
W pliku html jest…:
<meta charset="utf-8">
Co do detekcji znaków bom to nie wiem może się wkradły z wymuszenia zamiast łagodnego ustawienia kodowania na utf-8.
Co tak się ryjesz :), po prostu w pliku jest taki bałagan, że każdy ma prawo do pomyłki. Fakt jest.