| 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: 15 let
|
|||
0