Autor | Zpráva | ||
---|---|---|---|
tony Profil |
#1 · Zasláno: 18. 10. 2010, 13:52:48 · Upravil/a: tony
Ahoj programátoři.
Měl bych menší dotaz, jsem začátečník.. Mám problém s email-formulářem, resp. s diakritikou. Mám následující skript a chtěl jsem si to vyzkoušet jak to funguje, abych trochu nakouknul a pochopil jak to funguje a jak se to dělá.. Ten script je (soubor register.php): <?php header("Content-Type: text/html; charset=utf-8"); function array_item($ar, $key) { if(array_key_exists($key, $ar)) if (get_magic_quotes_gpc()) { return stripslashes($ar[$key]); } else { return $ar[$key]; } } ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>formulář</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> </head> <body> <h1>formulář</h1> <form method="POST" action="register.php"> <?php $submit = array_item($_POST, 'submitbutton'); $fname = array_item($_POST, 'fname'); $lname = array_item($_POST, 'lname'); $email = array_item($_POST, 'email'); $cdate = $_POST['cdate']; if ($submit == 'Registrovat') { } else { print "<pre>\n"; print "Křestní jméno: ". htmlspecialchars($fname)."\n"; print "PĹ™ĂjmenĂ: ". htmlspecialchars($lname)."\n"; print "E-mail: ". htmlspecialchars($email)."\n"; print "Datum: ".$cdate."\n\n"; print "<input type=\"submit\" name=\"submitbutton\" value=\"Potvrdit\"> "; print "<input type=\"submit\" name=\"submitbutton\" value=\"Opravit\"></pre>\n"; print "<input type=\"hidden\" name=\"fname\" value=\"".htmlspecialchars($fname)."\">"; print "<input type=\"hidden\" name=\"lname\" value=\"".htmlspecialchars($lname)."\">"; print "<input type=\"hidden\" name=\"email\" value=\"".htmlspecialchars($email)."\">"; print "<input type=\"hidden\" name=\"cdate\" value=\"".$cdate."\">"; print "</form></body></html>"; exit(); } } else if ($submit == 'Potvrdit') { $mailtext = "$fname\t$lname\t$email\t$cdate\n"; mail("xxx@xxx.cz", "Nová registrace", $mailtext, "From: xxx@xxx.cz"); print "<p>Odesláno!</p>"; exit(); } ?> <table border="2"> <tr> <td>Křestní jméno <td><input type="text" name="fname" value="<?php echo htmlspecialchars($fname); ?>" size="30"> </tr> <tr> <td>Příjmení <td><input type="text" name="lname" value="<?php echo htmlspecialchars($lname); ?>" size="30"> </tr> <tr> <td>E-mail: <td><input type="text" name="email" value="<?php echo htmlspecialchars($email); ?>" size="30"> </tr> <tr> <td>Datum: <td> <select name="cdate"> <option value="20041105" <?php if ($cdate == '20041105') print "selected"; ?> >2004-11-05</option> <option value="20041106" <?php if ($cdate == '20041106') print "selected"; ?> >2004-11-06</option> <option value="20041107" <?php if ($cdate == '20041107') print "selected"; ?> >2004-11-07</option> </select> </tr> </table> <i>(všechna pole musí být vyplněna)</i> <p><input type="submit" name="submitbutton" value="Registrovat"></p> </form> </body> </html> Problém je v tom, že se nezobrazuje diakritika, nebo jen otazníky místo ěščřžýáíé. Nejde mi o funkce ve scriptu atd. jen o tu diakritiku. Data zapsaná do formuláře se odešlou na příslušný mail jak mají. 1) ALE je problém s tím, že jakmile uvedu kodování utf-8 (v řádcích: header("Content-Type: text/html; charset=utf-8"); a <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> ) všechna data zadaná do formuláře (jméno, příjmení, email) se v poho odešlou a v emailové zprávě se bezva zobrazí včetně ěščřžýáíé. Ale stránka, kde se tento formulář nachází, kde je vložen je celá rozhozená diakritika a místo ěščřžýáíé jsou otazníky i v tom formuláři. A když upravím kodování i v té stránce na utf-8 je to stejné. 2) ALE jakmile uvedu kodování jiné např. windows-1250 (v řádcích: header("Content-Type: text/html; charset=windows-1250"); a <meta http-equiv="Content-Type" content="text/html; charset=windows-1250"> ) tak je situace taková, že stránka, kde se tento formulář nachází, kde je vložen je v poho ěščřžýáíé se zobrazí korektně i ve formuláři, ALE odeslaná data jsou špatná bez diakritiky s otazníky. Když napíšu příjmení třeba Hájek, v emailu se zabrazí jen H nebo Hjek..prostě blbě. Tak nevím co s tím, kde je chyba. Zkoušel jsem to i na druhém kompu a stejný výsledek. Nikde jsem nenašel řešení. Nevěděl by někdo co s tím? Jak to vyřešit? Měl by někdo nápad? Díky za každou případnou radu. |
||
dad Profil * |
#2 · Zasláno: 18. 10. 2010, 14:11:37
Nemáš soubor uložený ve formátu, který máš nastavéný v hlavičce tj. utf-08
|
||
Tomashekk Profil |
#3 · Zasláno: 18. 10. 2010, 14:23:11
tony:
Já to dělám takto $email_text = " Děkujeme za registraci na portálu Mopsweb. Zda-li chcete využívat všechny výhody registrovaného uživatele, pokračujte navštívením níže napsaného odkazu. Zda-li je toto omyl, prosím, ignorujte tuto zprávu. \n http://mops.cz.uvirt16.active24.cz/green/index.php?page=auth&a=$mdnick&b=$mdpass \n"; $headers = 'MIME-Version: 1.0' . "\r\n"; $headers .= 'Content-type: text/html; charset=UTF-8' . "\r\n"; // Additional headers $headers .= 'To: You <'.$zprava.'>' . "\r\n"; $headers .= 'From: Registrace Mopsweb <registrace@mops.cz>' . "\r\n"; mail($email, "Reservation", $email_text, $headers);} |
||
Alphard Profil |
#4 · Zasláno: 19. 10. 2010, 17:46:23
tony:
Vše musí být uloženo ve stejném kódování a toto kódování musí být uvedeno na všech patřičných místech. Ve FAQ máme script, který se snaží odhadnout kódování a dle potřeb překódovat. Můžete tedy vyzkoušet vaši variantu 2 (tj. správně zobrazené kódování stránky) + funkci cs_mail(). Ale zdůrazňuji, že lepší je samozřejmě sjednotit všechna kódování. |
||
tony Profil |
#5 · Zasláno: 19. 10. 2010, 19:24:59 · Upravil/a: tony
Děkuju všem za odpověď, za radu. To bude asi ten problém, že to nemám uložené v tom kódování. To zkusím dát do pořádku. Snad to bude celý problém.
Díky! :-) |
||
Časová prodleva: 17 dní
|
|||
Restin Profil * |
#6 · Zasláno: 5. 11. 2010, 12:38:37
Používám skript z FAQ, ale nefunguje (email nedorazí, zkoušeno na gmail + seznam). Nevíte někdo, čím by to mohlo být? Je to rozhodně tím skriptem - zkoušel jsem zakomentovat tělo té funkce a email dojde, jen je zas na seznamu rozhozená diakritika jako bez skriptu...
Díky za tipy... |
||
Časová prodleva: 13 let
|
0