Zobacz pełną wersję : Własny moduł z HTML - kodowanie polskich znaków ?
MariuszL
01-02-2016, 09:49
Utworzyłem własny moduł z kodem HTML - jest to dokładnie ankieta.
Moduł wsadziłem na wybraną stronę w wybranej pozycji.
Wszystko działa i wyświetla się ok (kodowanie znaków w zawartości modułu i samej strony jest ok).
Problemem jest wpisywany tekst - który przychodzi na e-maila.
Tekst nie zawiera polskich znaków.
Występują krzaczory.
Jak zdiagnozować problem ?
Za pomocą jakiej funkcji wysyłasz maila?
MariuszL
01-02-2016, 20:29
method="post"
Jeszcze raz:
Za pomocą jakiej funkcji wysyłasz maila?
MariuszL
02-02-2016, 14:03
Moduł - > własny tekst html
index.html
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Formularz Kontaktowy - Tytuł naszej strony</title>
<link rel="stylesheet" type="text/css" href="style.css" />
</head>
<body>
<div id="formularz">
<form method="post" action="kontakt.php">
<label>Imię i nazwisko</label>
<input name="name" placeholder="Tu możesz wpisać swoje dane">
<label>Email</label>
<input name="email" type="email" placeholder="Tu mozesz wpisać swój e-mail">
<label>(nowych i używanych)</label>
<textarea name="maszyny" placeholder="Napisz tu wiadomość"></textarea>
<label>zamiennych</label>
<textarea name="czesci" placeholder="Napisz tu wiadomość"></textarea>
<label>Serwis urządzeń </label>
<textarea name="serwis" placeholder="Napisz tu wiadomość"></textarea>
<input id="submit" name="submit" type="submit" value="Wyślij">
</form>
</div>
</body>
</html>
kontakt.php
<?php
// Tworzymy zmienną dla imienia i nazwiska
$name = $_POST['name'];
// Tworzymy zmienną dla adresu email
$email = $_POST['email'];
// Tworzymy zmienną dla wiadomości
$maszyny = $_POST['maszyny'];
// Tworzymy zmienną dla wiadomości
$czesci = $_POST['czesci'];
// Tworzymy zmienną dla wiadomości
$serwis = $_POST['serwis'];
// Podajesz adres email z którego ma być wysłana wiadomość
$odkogo = "xxx@xxx.pl";
// Podajesz adres email na który chcesz otrzymać wiadomość
$dokogo = "xxx@xxx.pl";
// Podajesz tytuł jaki ma mieć ta wiadomość email
$tytul = "prosty formularz - test";
// Przygotowujesz treść wiadomości
$wiadomosc = "";
$wiadomosc .= "Imie i nazwisko: " . $name . "\n";
$wiadomosc .= "Email: " . $email . "\n";
$wiadomosc .= "Opinia - " . $maszyny . "\n";
$wiadomosc .= "Opinia - " . $czesci . "\n";
$wiadomosc .= "Opinia - " . $serwis . "\n";
// Wysyłamy wiadomość
$sukces = mail($dokogo, $tytul, $wiadomosc, "Od: <$odkogo>");
// Przekierowywujemy na potwierdzenie
if ($sukces){
print "<meta http-equiv=\"refresh\" content=\"0;URL=potwierdzenie.php\">";
}
else{
print "<meta http-equiv=\"refresh\" content=\"0;URL=error.html\">";
}
?>
Po pierwsze - nie będę komentować potrzeby pisania modułu kontaktowego w przypadku istnienia wielu darmowych.
Po drugie - kod html modułu nie potrzebuje znaczników <html><head><body> - wystarczy <div id="formularz">.....</div>
Po trzecie - funkcja mail obsługuje jeszcze jeden parametr $header, w którym można zdefiniować kodowanie znaków (utf-8)
MariuszL
03-02-2016, 20:13
Ustawiłem $header w ten sposób :
$header .= "Content-typ: text/html; charset=iso-8859-2r/n";
$header .= "Content-Transfer-Encodin: 8bitr\n";
// WysyĹłamy wiadomość
$sukces = mail($dokogo, $tytul, $wiadomosc, $header, "Od: <$odkogo>");
Ustawiłem również UTF-8 - dalej krzaki.
MariuszL
03-02-2016, 20:56
Edyta:
Jaki prosty i konfigurowalny formularz polecilibyście ?
Nad polami textowymi - muszę dopisać kilka linijek tekstu.
Content-type
$header = 'MIME-Version: 1.0' . "\r\n";
$header .= 'Content-type: text/html; charset=utf-8' . "\r\n";
$header .= 'From: Od kogo <'.$odkogo.'>' . "\r\n";
MariuszL
03-02-2016, 21:49
Zadziałało mi w tej wersji : $header .= "Content-type: text/html; charset=UTF-8r/n";
+ wywalenie "odkogo"z emaila.
Wystąpił jednak kolejny problem z treścią e-maila :
// Przygotowujesz treść wiadomości
$wiadomosc = "";
$wiadomosc .= "Imie i nazwisko: " . $name . "\n";
$wiadomosc .= "Email: " . $email . "\n";
$wiadomosc .= "Opinia - " . $maszyny . "\n";
$wiadomosc .= "Opinia - " . $czesci . "\n";
$wiadomosc .= "Opinia - " . $serwis . "\n";
dzięki temu wcześniej miałem każdy wpis w osobnej lini..
Obecnie jak zadziałały pl znaki to cała treść idzie w jednej lini.
Jak nie urok to sra..... :]
Bo dałeś Content-type: text/html;
a nie Content-type: text/plain;
Dla text/html użyj <<br />
MariuszL
04-02-2016, 08:57
Jola - dziękuję !!!!!
Wiszę ci trunek :]
- - - Updated - - -
Dla text/html użyj <<br />
Zamiast - "\n" ?
Czy pomiędzy wierszami :
$wiadomosc = "";
$wiadomosc .= "Imie i nazwisko: " . $name . "\n";
$wiadomosc .= "Email: " . $email . "\n";
$wiadomosc .= "Opinia - " . $maszyny . "\n";
$wiadomosc .= "Opinia - " . $czesci . "\n";
$wiadomosc .= "Opinia - " . $serwis . "\n";
Nowa linia
dla tekstu to \n
dla html <br />
czyli zamiast :)
MariuszL
05-02-2016, 07:12
Teraz już chyba wszystko działa - Jola jeszcze raz dziękuję. !!
vBulletin® v4.2.5, Prawa przedruku © 2024 vBulletin Solutions, Inc. Wszystkie prawa zastrzeżone.
Tłumaczenie: Polskie Centrum Joomla!