Autor | Zpráva | ||
---|---|---|---|
Tomb Profil |
Čau klucí, potřebuju vyřešit problém s kódováním v php skriptu, který odesílá formulář na mail.
Použil jsem toto, což jsem našel někde tady v diskuzi: /* *************** diskuse.jakpsatweb.cz *** PHP FAQ ********************** */ function autoUTF($s) { // detect UTF-8 if (preg_match('#[\x80-\x{1FF}\x{2000}-\x{3FFF}]#u', $s)) return $s; // detect WINDOWS-1250 if (preg_match('#[\x7F-\x9F\xBC]#', $s)) return iconv('WINDOWS-1250', 'UTF-8', $s); // assume ISO-8859-2 return iconv('ISO-8859-2', 'UTF-8', $s); } function cs_mail ($to, $predmet, $zprava, $head = "") { $predmet = "=?utf-8?B?".base64_encode(autoUTF ($predmet))."?="; $head .= "MIME-Version: 1.0\n"; $head .= "Content-Type: text/plain; charset=\"utf-8\"\n"; $head .= "Content-Transfer-Encoding: base64\n"; $zprava = base64_encode (autoUTF ($zprava)); $stav = mail ($to, $predmet, $zprava, $head); return $stav ? TRUE : FALSE; } /* ********************************************************************** ** */ ale v mailu to zobrazuje špatně ě, č, ř v hlavičce toho skriptu mam jen toto: <meta http-equiv="content-type" content="text/html; charset=windows-1250"> Co je třeba změnit? |
||
Alphard Profil |
#2 · Zasláno: 15. 1. 2009, 23:07:23
hmm, na hlavičce nezáleží, script by si měl zjistit kódování a převést do UTF, zobrazuje se to špatně v předmětu nebo ve zprávě?
|
||
anonymní Profil * |
#3 · Zasláno: 16. 1. 2009, 14:20:50
Ahojky, mám stejný problém.
Když mi přijde mail ze stránek, tak se mi v předmětu místo písmen ý a á zobrazují otazníky a ve zprávě mám místo š obdelníček. Neporadíte mi někdo, jak to vyřešit? Díky |
||
Alphard Profil |
#4 · Zasláno: 16. 1. 2009, 14:57:18
Tomb
sám to nevyřeším, mně to funguje, musíte mi popsat vaši situaci anonymní používáte výše uvedený script? pokud ano, tak napište více podrobností |
||
Tomb Profil |
#5 · Zasláno: 16. 1. 2009, 17:20:00
Alphard
na tomto odkazu mám formulář. A tohle je celý skript: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=windows-1250"> <title>Odesílání emailu</title> </head> <body> <h4>Kontaktní formulář</h4> <? /* *************** diskuse.jakpsatweb.cz *** PHP FAQ ********************** */ function autoUTF($s) { // detect UTF-8 if (preg_match('#[\x80-\x{1FF}\x{2000}-\x{3FFF}]#u', $s)) return $s; // detect WINDOWS-1250 if (preg_match('#[\x7F-\x9F\xBC]#', $s)) return iconv('WINDOWS-1250', 'UTF-8', $s); // assume ISO-8859-2 return iconv('ISO-8859-2', 'UTF-8', $s); } function cs_mail ($to, $predmet, $zprava, $head = "") { $predmet = "=?utf-8?B?".base64_encode(autoUTF ($predmet))."?="; $head .= "MIME-Version: 1.0\n"; $head .= "Content-Type: text/plain; charset=\"utf-8\"\n"; $head .= "Content-Transfer-Encoding: base64\n"; $zprava = base64_encode (autoUTF ($zprava)); $stav = mail ($to, $predmet, $zprava, $head); return $stav ? TRUE : FALSE; } /* ********************************************************************** ** */ $jmeno = $_POST['jmeno']; $mail = $_POST['mail']; $predmet = $_POST['predmet']; $zprava = $_POST['zprava']; $spam = $_POST['spam']; if { Mail("bulinmartin@gmail.com", $predmet, $zprava, "From: " . $mail); echo "<p><strong>Mail byl úspěšně odeslán.</strong>.</p>"; } else { echo "<p>Mail se <strong>nepodařilo</strong> odeslat! Pravděpodobně jste nevyplnili všechny povinné údaje, nebo nevíte kolik je 1 + 1.</p>"; } ?> </body> </html> a když vyplním pole předmět i pole zpráva tímto: ěščřžýáíé, tak v tom výslednym mailu se místo toho objeví toto: ìšèøžýáíé a to jak v předmětu tak ve zprávě. |
||
nightfish Profil |
#6 · Zasláno: 16. 1. 2009, 17:35:51 · Upravil/a: nightfish
používáš mail() místo cs_mail()
EDIT: nehledě na to, že za if máš chlupatou (složenou) závorku místo kulaté |
||
Tomb Profil |
#7 · Zasláno: 16. 1. 2009, 20:47:52
nightfish
nahradil jsem Mail za cs_mail a skript přestal fungovat. a ty závorky jsem taky změnil takže to vypadá takhle: if ( cs_mail("bulinmartin@gmail.com", $predmet, $zprava, "From: " . $mail); echo "<p><strong>Mail byl úspěšně odeslán.</strong>.</p>"; ) else ( echo "<p>Mail se <strong>nepodařilo</strong> odeslat! Pravděpodobně jste nevyplnili všechny povinné údaje, nebo nevíte kolik je 1 + 1.</p>"; ) Nemohl bys mi prosím tuto část opravit aby to bylo správně? Já jsem na to fakt asi uplně dutej :D |
||
yFang Profil |
#8 · Zasláno: 16. 1. 2009, 20:55:08
Tomb
Nemělo by to být takhle? if (cs_mail("bulinmartin@gmail.com", $predmet, $zprava, "From: " . $mail)) { echo "<p><strong>Mail byl úspěšně odeslán.</strong>.</p>"; } else { echo "<p>Mail se <strong>nepodařilo</strong> odeslat! Pravděpodobně jste nevyplnili všechny povinné údaje, nebo nevíte kolik je 1 + 1.</p>"; } |
||
Tomb Profil |
#9 · Zasláno: 16. 1. 2009, 21:09:41
yFang
Vypíše to, že mail byl úspěšně odeslán, ale na mail mi nic nepřijde.... |
||
Alphard Profil |
#10 · Zasláno: 16. 1. 2009, 21:33:54
zkuste tohle
if (cs_mail("bulinmartin@gmail.com", $predmet, $zprava, "From: " . $mail . "\n")) echo "<p><strong>Mail byl úspěšně odeslán.</strong>.</p>"; else echo "<p>Mail se <strong>nepodařilo</strong> odeslat! Pravděpodobně jste nevyplnili všechny povinné údaje, nebo nevíte kolik je 1 + 1.</p>"; závorky jsem vyházel jen kvůli zpřehlednění, podstatné by mělo být "\n" za hlavičkou |
||
Tomb Profil |
#11 · Zasláno: 16. 1. 2009, 21:42:29
Alphard
No paráda, už to běží. Jste fakt super, díky |
||
Alphard Profil |
#12 · Zasláno: 16. 1. 2009, 21:48:13
„No paráda, už to běží.
Jste fakt super, díky“ no jo, hlavně že k tomu píši příklad použití :-) |
||
Časová prodleva: 11 měsíců
|
|||
chef06 Profil * |
Ahoj, potrebuju pomoc prosim... mam formular na odesilani udaju, a nezobrazuji se mi v něm některe znaky (ť, ž, š)... zkusil jsem toho hodne, ale nic mi nepomohlo... Pridavam kod, mohl by mi to nekdo upravit na miru prosim, diky...
KOD: <? /* *************** diskuse.jakpsatweb.cz *** PHP FAQ ********************** */ function autoUTF($s) { // detect UTF-8 if (preg_match('#[\x80-\x{1FF}\x{2000}-\x{3FFF}]#u', $s)) return $s; // detect WINDOWS-1250 if (preg_match('#[\x7F-\x9F\xBC]#', $s)) return iconv('WINDOWS-1250', 'UTF-8', $s); // assume ISO-8859-2 return iconv('ISO-8859-2', 'UTF-8', $s); } function cs_mail ($to, $predmet, $zprava, $head = "") { $predmet = "=?utf-8?B?".base64_encode(autoUTF ($predmet))."?="; $head .= "MIME-Version: 1.0\n"; $head .= "Content-Type: text/plain; charset=\"utf-8\"\n"; $head .= "Content-Transfer-Encoding: base64\n"; $zprava = base64_encode (autoUTF ($zprava)); $stav = mail ($to, $predmet, $zprava, $head); return $stav ? TRUE : FALSE; } /* ********************************************************************** ** */ if (isset($_POST['poslani'])) { $canxy = null; if (strlen($_POST['zudaje'])>0 ) { $jmeno = true; } else { $jmeno = false; echo "<p class=text><b>Nezadali jste název zboží</b></p>"; } if (strlen($_POST['napis'])>0 ) { $prijmeni = true; } else { $prijmeni = false; echo "<p class=text><b>Nezadali jste nápis na polštářek</b></p>"; } if (strlen($_POST['rozmer'])>0 ) { $nick = true; } else { $nick = false; echo "<p class=text><b>Nezadali jste rozměr polštářku</b></p>"; } if (strlen($_POST['material'])>0 ) { $email = true; } else { $email = false; echo "<p class=text><b>Nezadali jste materiál polštářku</b></p>"; } if (strlen($_POST['model'])>0 ) { $email = true; } else { $email = false; echo "<p class=text><b>Nezadali jste model polštářku</b></p>"; } if (strlen($_POST['barvapozadi'])>0 ) { $email = true; } else { $email = false; echo "<p class=text><b>Nezadali jste barvu pozadí polštářku</b></p>"; } if (strlen($_POST['barvanapisu'])>0 ) { $email = true; } else { $email = false; echo "<p class=text><b>Nezadali jste barvu nápisu polštářku</b></p>"; } if (strlen($_POST['pocet'])>0 ) { $email = true; } else { $email = false; echo "<p class=text><b>Nezadali jste počet polštářku</b></p>"; } if (strlen($_POST['jmenoprijmeni'])>0 ) { $email = true; } else { $email = false; echo "<p class=text><b>Nezadali jste vaše jméno a příjmení</b></p>"; } if (strlen($_POST['adresa'])>0 ) { $email = true; } else { $email = false; echo "<p class=text><b>Nezadali jste vaší adresu</b></p>"; } if (strlen($_POST['psc'])>0 ) { $email = true; } else { $email = false; echo "<p class=text><b>Nezadali jste vaše PSČ</b></p>"; } if (strlen($_POST['mesto'])>0 ) { $email = true; } else { $email = false; echo "<p class=text><b>Nezadali jste vaše město</b></p>"; } if (strlen($_POST['email'])>0 ) { $email = true; } else { $email = false; echo "<p class=text><b>Nezadali jste váš email</b></p>"; } if (strlen($_POST['mobil'])>0 ) { $email = true; } else { $email = false; echo "<p class=text><b>Nezadali jste váš mobil</b></p>"; } if ($zudaje && $napis && $rozmer && $material && $model && $barvapozadi && $barvanapisu && $pocet && $jmenoprijmeni && $adresa && $psc && $mesto && $email && $mobil) { $zprava = "Objednávka:\n Adresa objednávajícího: JMENO A PŘÍJMENÍ: {$_POST['jmenoprijmeni']} ADRESA: {$_POST['adresa']} PSČ: {$_POST['psc']} MĚSTO: {$_POST['mesto']} EMAIL: {$_POST['email']} MOBIL: {$_POST['mobil']} ------------------------------------------------ Objednávka zboží: NÁZEV ZBOŽÍ: {$_POST['zudaje']} MODEL: {$_POST['model']} NÁPIS: {$_POST['napis']} BARVA NÁPISU: {$_POST['barvanapisu']} BARVA POZADÍ: {$_POST['barvapozadi']} ROZMĚR: {$_POST['rozmer']} MODEL: {$_POST['model']} POČET: {$_POST['pocet']} POZNÁMKA: {$_POST['poznamka']}\n\n Děkujeme za objednávku. Ihned jak ji začneme zpracovavat, budeme Vás kontaktovat na vas email.\n Dotaz byl zaslán z internetové adresy "; mail ($_POST['email'], 'Kopie dotazu', $zprava, 'Od: info@azurehamaj.cz'); mail ($_POST['emailing'], 'Objednávka ', $zprava, 'Od: info@azurehamaj.cz'); echo "<p class=stred>Váše objednávka z adresy --- byla úspěšně odeslána. Kopii vašeho dotazu naleznete také na <b>{$_POST['email']}</b>. Budeme se snažit Vám v nejkratší době odpovědět."; exit(); } else { $canxy .= '<p class=text>Vaše objednávka nemohla být dokončena. Nezadali jste všechny údaje. Vrattě se prosím zpět <input type=button onclick="history.back()" value="Zpět"></p>'; } } if (isset($canxy)) { echo '<font bgcolor="white">' ,$canxy ,'</font>'; } ?> Moderátor Alphard: Vkládej prosím kódy mezi značky [pre] a [/pre] (stačí kliknout na ).
|
||
Alphard Profil |
#14 · Zasláno: 6. 12. 2009, 12:58:49
Na řádcích 140 a 142 dej místo mail() funkci cs_mail().
|
||
Časová prodleva: 14 let
|
0