Forum Webmastera, HTML, CSS, PHP, MySQL, Hosting, Domeny - Forum dla Webmasterów
Formularz kontaktowy nie wysyła polskich znaków - Wersja do druku

+- Forum Webmastera, HTML, CSS, PHP, MySQL, Hosting, Domeny - Forum dla Webmasterów (https://www.webmastertalk.pl)
+-- Dział: Technologie internetowe - tworzenie stron WWW (https://www.webmastertalk.pl/forum-technologie-internetowe-tworzenie-stron-www)
+--- Dział: Początkujący webmaster (https://www.webmastertalk.pl/forum-poczatkujacy-webmaster)
+--- Wątek: Formularz kontaktowy nie wysyła polskich znaków (/thread-formularz-kontaktowy-nie-wysyla-polskich-znakow)

Strony: 1 2


Formularz kontaktowy nie wysyła polskich znaków - Diablotic - 20-02-2010

Witam,

Tworzę swoją pierwszą stronę internetową i nie mogę przebrnąć przez stworzenie formularza który poprawnie by wysyłał emaila (brak polskich znaków).

Kod strony na ktorej jest formularz wyglada tak:
Kodowanie
Kod:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl" lang="pl">
oraz formularz
Kod:
<form id="form" action="wyslij.php" method="post" >
                    <div class="h_f">
                      <input type="text" name="imie" value="Imię i nazwisko" onfocus="if (this.value == 'Imię i nazwisko') {this.value = '';}" onblur="if (this.value == '') {this.value = 'Imię i nazwisko';}" />
            </div>
                    <div class="h_f"><input type="text" name="email" value="Email" onfocus="if (this.value == 'Email') {this.value = '';}" onblur="if (this.value == '') {this.value = 'Email';}" /> </div>
                    <div>
                      <textarea name="tresc" cols="2" onfocus="if (this.value == 'Wiadomość') {this.value = '';}" onblur="if (this.value == '') {this.value = 'Wiadomość';}">Wiadomość</textarea>
    </div>
                    <div><strong style="margin:0 15px 0 0px;">
                    <input type="submit" value="Wyślij" />
                    <input type="reset" value="Reset"></strong></div>
              </form>

Kod formularza w pliku php wyglada tak
Kod:
<?php
if (!empty($_POST['tresc']) && !empty($_POST['imie']) && !empty($_POST['email'])) {
    $message = "Treść wiadomości:\n$_POST[tresc]\nWysłał: $_POST[imie]\ne-mail: $_POST[email]";
    $header = "From: $_POST[imie] <$_POST[email]>";
    @mail("[email protected]","Wiadomość ze strony WWW","$message","$header")
    or die('Nie udało się wysłać wiadomości');
    echo "<div align=\"center\"><strong>Wiadomość została wysłana poprawnie!</strong></div>";
}
else echo "<span style=\"color: #FF0000; text-align: center;\">Wypełnij wszystkie pola formularza!</span>";
?>



Polskie znaki na stronie sie wyswietlaja poprawnie ale po wyslaniu formularza dochodzi do mnie email bez polskich znaków. Prosze o pomoc.


RE: Formularz kontaktowy nie wysyła polskich znaków - mike - 21-02-2010

Nie definiujesz kodowania wysyłanego maila, dodaj:
$header .= "\r\n";
$header .= 'Content-type: text/html; charset=utf-8'."\r\n";


RE: Formularz kontaktowy nie wysyła polskich znaków - Diablotic - 21-02-2010

Niestety nadal to samo. W miedzyczasie doszedlem do bledu gdzie mialem znaki niezakodowane w UTF-8, poprawilem to i tresc wiadomosci dochodzi z polskimi znakami ale temat i nadawca nadal jest z krzakami. Ten kod podany przez Ciebie wyzej nic nie zmienia w tej kwestii Sad

I zeby jeszcze sie upewnic - gdzie powinienem ten kod wstawic? Zaraz przed $header?


RE: Formularz kontaktowy nie wysyła polskich znaków - Labsta.com - 21-02-2010

Najważniejsza sprawa to sprawdź czy wszystkie pliki łącznie z .php mają kodowanie utf-8. Dla przykładu w Notepad++ robisz to format>konwertuj na UTF-8 bez BOM.

Edit:
header od mike'a daj za tym co masz już.


RE: Formularz kontaktowy nie wysyła polskich znaków - Diablotic - 21-02-2010

Kodowanie jest wszedzie UTF-8, lacznie z plikami, w notepad++ pokazuje ze jest utf-8.
Po wstawieniu kodu od mike'a za $header nadawca przychodzi dobrze ale temat nadal z krzakami. Poza tym tresc teraz wyswietla sie w jednej linii a nie tak jak wczesniej mialem ladnie sformatowane enterami.


RE: Formularz kontaktowy nie wysyła polskich znaków - Labsta.com - 21-02-2010

Zmień Content-type: text/html na Content-type: text/plain a tytuł daj tak (choć dziwne że są krzaki):
Kod:
"=?UTF-8?B?Wiadomość ze strony WWW?="

Edit:
tego headera daj tak:
Kod:
$header = "From: $_POST[imie] <$_POST[email]>";
$header .= "\r\nContent-Type: text/plain; charset=utf-8";



RE: Formularz kontaktowy nie wysyła polskich znaków - sunpietro - 21-02-2010

ok, właśnie miałem z tym problem i u mnie zadziałało Smile


RE: Formularz kontaktowy nie wysyła polskich znaków - Motaba - 06-03-2010

U mnie jest tak

Kodowanie
Kod:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

Formularz
Kod:
<form action="phpmail.php" method="post"><p />
            
           <strong>Imię i nazwisko</strong><br />
            <input type="text" class="text" id="nick" name="nick" size='50'></input><p />
            
        <strong>Adres e-mail</strong><br />
            <input type="email" class="text" name="mail" id="mail" size='50'></input><p />
        
          <strong>Temat</strong><br />
            <select name="type" class="text" id="type">
              <option value="0" > </option>
              <option value="budowa domu" >budowa domu</option>
              <option value="sucha zabudowa" >sucha zabudowa</option>
              <option value="remont" >remont</option>
              <option value="rozbudowa" >rozbudowa</option>
              <option value="inny" >inny</option>
            </select><p />
        
        <strong>Treść</strong><br />
            <textarea name="tresc" id="tresc" rows="12" cols="50" ></textarea><p />
                      
               <input type="checkbox" name="zgoda" value="Wyrazam zgode na przesylanie materialow promocyjnych firmy."></input> Wyrażam zgodę na przesyłanie materiałów promocyjnych firmy.<p />
            
            <input type="submit" value="Wyślij" /></input>
            <input type="reset" value="Kasuj" /></input>
           </form>

PHP
Kod:
<?php

$wiadomosc =
"Imie i nazwisko : ".$_POST['nick']."

Adres e- mail : ".$_POST['mail']."

Temat : ".$_POST['type']."

Tresc wiadomosci : ".$_POST['tresc']."  

".$_POST['zgoda']." ";

$tematyka = "Wiadomosc z formularza kontaktowego";

mail ("[email protected]", $tematyka, $wiadomosc );
header("Location: http://www.domyzpianobetonu.pl/formularz-ok.html");

?>

i nie ma polskich znaków. Jakieś sugestie ??


RE: Formularz kontaktowy nie wysyła polskich znaków - Motaba - 08-03-2010

podbijam


RE: Formularz kontaktowy nie wysyła polskich znaków - Labsta.com - 09-03-2010

Zamiast podbijać przeczytaj ten temat, masz tu rozwiązanie + ew. poszerz wiedzę o opis funkcji mail() z dokumentacji php i wszystko się wyjaśni Wink.