Autor Zpráva
Ladik
Profil *
Zdravíčko,

mám problém s kódováním poslaných údajů z objednávkového formuláře na e-mail.. :(
V php se moc neorientuju, ale myslím, že to bude nějaká drobnost.

Takže problém je v tom, že když si chce někdo objednat produkt pomocí mého objednávkového formuláře a v jeho jméně se objevují české znaky s háčky, tak mi na mail přijde místo jména Šebesta ?ebesta..

Vůbec nevim jak to vyladit. Prosím poraďte.

Kód funguje tak, že do formulářé vypíše zákazník kontaktní údaje, které se pak objeví jako proměnné v samotném tělu mailové zprávy:

$jmeno_prijmeni=$_POST['jmeno_prijmeni'];
					$ulice_cp=$_POST['ulice_cp'];
					$mesto=$_POST['mesto'];
					$psc=$_POST['psc'];
					$mail=$_POST['mail'];
					$telefon=$_POST['telefon'];
					
					$poznamka=$_POST['poznamka'];
					
										
					$to = "mujmail@seznam.cz";
					$subject = "Objednávka";
					$message = "
								Jméno: $jmeno_prijmeni
								Ulice: $ulice_cp
								Město: $mesto
								PSČ: $psc
								E-mail: $mail
								Telefon: $telefon
								
								Poznamka: $poznamka
								";
								
					$headers = "from: $mail\n";
					$headers .= "X-mailer: phpWebmail \n";
					if( mail($to, $subject, $message, $headers) )
					    {
							echo "Požadavek se zpracovává.";
						}                                                                                    
					else                                                                                                
					    {
							echo "Požadavek nebyl zpracován, zkuste nas kontaktovat na telefonním čísle uvedeném v záložce Home";
						}
					}
AM_
Profil
první možnost - viz FAQ - problémy s emaily
druhá možnost - pro odeslání použít např. PHPMailer - promakaná třída pro pohodlné odeslání mailu s mnoha možnostmi a ošetřenými věcmi jako kódování a další
nightfish
Profil
toto téma je velmi dobře popsáno ve FAQ
EDIT: pozděěě
Ladik
Profil *
wow to je rychlost :)

díky moc prostuduju to
Ladik
Profil *
Tak mám stále někde chyby.. :(

bohužel nejsem znalý v php, tak vás někoho prosím o polopatické vysvětlení.

Zkusil jsem to dát do zdrojového kódu takhle, ale výsledek je stále stejný.. :(

díky za rady


<?php

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, $subject, $message, $headers = "")
       {  $subject = "=?utf-8?B?".base64_encode(autoUTF ($subject))."?=";
          $headers .= "MIME-Version: 1.0\n";
          $headers .= "Content-Type: text/plain; charset=\"UTF-8\"\n";
          $headers .= "Content-Transfer-Encoding: base64\n";
          $message = base64_encode (autoUTF ($message));
          return mail ($to, $subject, $message, $headers); }

if(empty($_POST['jmeno_prijmeni']) || 
	empty($_POST['ulice_cp']) ||
	empty($_POST['mesto']) ||
	empty($_POST['psc']) ||
	empty($_POST['mail']) ||
	empty($_POST['heslo_potrvd2']))
{
	echo"Bohužel nebyly zadány požadované údaje.";
}
else{
					if($_POST['heslo_potrvd'] == $_POST['heslo_potrvd2'])
					{		
					$jmeno_prijmeni=$_POST['jmeno_prijmeni'];
					$ulice_cp=$_POST['ulice_cp'];
					$mesto=$_POST['mesto'];
					$psc=$_POST['psc'];
					$mail=$_POST['mail'];
					$telefon=$_POST['telefon'];
					
					$chlorella_extrakt_pilulky=$_POST['chlorella_extrakt_pilulky'];
					
					$poznamka=$_POST['poznamka'];
					
					
			 				
					$to = "mujmail@seznam.cz";
					$subject = "Objednávka";
					$message = "
								Jméno: $jmeno_prijmeni
								Ulice: $ulice_cp
								Mìsto: $mesto
								PSÈ: $psc
								E-mail: $mail
								Telefon: $telefon
								
								Clorella extrakt - pilulky: $chlorella_extrakt_pilulky
								
								Poznamka: $poznamka
								";
								
					$headers = "from: $mail \n";
					$headers .= "X-mailer: phpWebmail \n";
					if( mail($to, $subject, $message, $headers) )
					    {
							echo "Požadavek se zpracovává.";
						}                                                                                    
					else                                                                                                
					    {
							echo "Požadavek nebyl zpracován, zkuste nas kontaktovat na telefonním èísle uvedeném v záložce Home";
						}
					}
					else
					{
						echo "Chybné heslo.";
					}
}
?> 
Alphard
Profil
Na 65. řádku musíte místo funkce mail() použít cs_mail().
Ladik
Profil *
I love you man :)

díky moc
rybarada
Profil
Jáké je pro tento soubor kódování?
Alphard
Profil
[#8] rybarada
Script se snaží odhadnout kódování vstupních dat a odeslat mail správně v jakémkoliv případě (v rozmných mezích). Obecně bych preferoval utf-8.
Pokud je všude použito utf, ztrácí funkce autoUTF() smysl a lze ji vynechat.

Ve FAQ je tento script aktualizovaný. Především jsou pro ukončení řádků použity sekvence \r\n.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: