Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Brak polskich znaków w formularzu kontaktowym ze strony
Forum PHP.pl > Forum > PHP
ave20
Witam

Tworzę stronę i pomagam sobie gotowymi skryptami. Pobrałem skrypt do formularza kontaktowego.
plik index.html posiada kodowanie UTF-8 (bez BOM) i tam polskie znaki działają.
Plik php także jest zapisany w formacje UTF-8 (bez BOM), ale maile przychodzą z krzakami w miejscu
polskich znaków.

Plik PHP: http://pastebin.com/9WKjjS1K

Do tego, są jeszcze skrypty *.js:
- bootstrap.min http://pastebin.com/qc6wtNLK
- contact-form-script http://pastebin.com/FjE8bDWc
- form-validator.min http://pastebin.com/EckBMTex
- jquery-min http://pastebin.com/UckdSr1H

Nie mam zielonego pojęcia dlaczego maile - tytuł, treść i "od kogo" przychodzą bez polskich znaków :/
Będę wdzięczny za pomoc.
trueblue
Temat: Funkcja mail a Polskie znaki
ave20
Niestety, ale w moim kodzie nie ma funkcji $header, więc nie mam gdzie dokleić kodowania...
trueblue
$header to nie funkcja.

Nagłówki dołączasz, przyjrzyj się linii 54.
I manual: http://php.net/manual/en/function.mail.php
ave20
  1. $headerFrom = "xmlns=\"http://www.w3c.org/1999/xhtml\" xml:lang=\"pl\" lang=\"pl\"" . "\r\n";
  2. $headerFrom .= "MIME-Version: 1.0" . "\r\n";
  3. $headerFrom .= "Content-type: text/html; charset=utf-8" . "\r\n";
  4. $headerFrom .= "FROM: <" . $email . ">\r\n";
  5.  
  6. $success = mail($EmailTo, $Subject, $Body, $headerFrom);

Ale nie działa - teraz maile w ogóle się nie wysyłają...
viking
A ta pierwsza linia to niby po co?
Baku12345
Zasada jest taka, że żeby wszystko wszędzie dobrze się wyświetlało to musisz zrobić 4 rzeczy:

1. W pliku HTML w nagłówku ustawić odpowiednie kodowanie np. tak
  1. <meta charset="UTF-8">
  2. </head>


2. W pliku PHP ustawić odpowiednie kodowanie dla pobieranych znaków z bazy np. tak
  1. $pdo = new PDO('mysql:host=localhost; port=3306; dbname=materialy-wspolne.pl', 'root', '');
  2.  
  3. $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  4. $pdo->exec("SET NAMES 'utf8'");

to jest przykład z użyciem pdo, najważniejsza dla Ciebie jest ta ostatnia linia od exec wstaw to zaraz po połączeniu z bazą

3. W bazie danych ustawić odpowiednie kodowanie znaków np. UTF8_general_ci

4. wszystkie pliki zapisywać w tym samym kodowaniu czyli np utf8
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.