Autor Zpráva
petrnemec
Profil *
Zdar pánové,

věřím tomu, že mi dokážete pomoci... už sedm hodin procházím všechny český a světový fora a nejsem schopnej dohledat řešení, kterýmu bych porozuměl a dal ho dohromady.

Ve flashi mám vytvořený (formulář, z nějž odesílám data do php skriptu, ktrý následně odešle e-mail. Výstup z flashe utf-8, kodovani php taky utf-8 a ve výsledku mi dojde rozsipanej čaj:

ť��ŞýåíÊ=

ť��ŞýåíÊ=

��ŞýåíÊ=

��ŞýåíÊ

(rozkryptovaný text by obsahoval diakritické znaky č. abecedy).

Kod ve flashi:

contact_name.text = contact_mesto.text = contact_ulice.text = contact_telefon.text = contact_email.text = contact_www.text = contact_gps.text =
contact_cena.text = message_status.text = "";

send_button.addEventListener(MouseEvent.CLICK, submit);
reset_button.addEventListener(MouseEvent.CLICK, reset);

var timer:Timer;
var var_load:URLLoader = new URLLoader;
var URL_request:URLRequest = new URLRequest( "send_email.php" );
URL_request.method = URLRequestMethod.POST;

function submit(e:MouseEvent):void
{
if( contact_name.text == "" || contact_mesto.text == "" ||
contact_ulice.text == "" || contact_telefon.text == "" ||
contact_email.text == "" || contact_www.text == "" ||
contact_gps.text == "" || contact_cena.text == "" )
{
message_status.text = "Všechny pole musí být vyplněna.";
}
else if( !validate_email(contact_email.text) )
{
message_status.text = "Prosím zadejte korektní informace.";
}
else
{
message_status.text = "odesílám...";

var email_data:String = "name=" + contact_name.text
+ "&mesto=" + contact_mesto.text
+ "&ulice=" + contact_ulice.text
+ "&telefon=" + contact_telefon.text
+ "&email=" + contact_email.text
+ "&www=" + contact_www.text
+ "&gps=" + contact_gps.text
+ "&cena=" + contact_cena.text;

var URL_vars:URLVariables = new URLVariables(email_data);
URL_vars.dataFormat = URLLoaderDataFormat.TEXT;

URL_request.data = URL_vars;
var_load.load( URL_request );
var_load.addEventListener(Event.COMPLETE, receive_response );
}
}

function reset(e:MouseEvent):void
{
contact_name.text = contact_mesto.text = contact_ulice.text = contact_telefon.text = contact_email.text =
contact_www.text = contact_gps.text = contact_cena.text = message_status.text = "";
}

function validate_email(s:String):Boolean
{
var p:RegExp = /(\w|[_.\-])+@((\w|-)+\.)+\w{2,4}+/;
var r:Object = p.exec(s);
if( r == null )
{
return false;
}
return true;
}

function receive_response(e:Event):void
{
var loader:URLLoader = URLLoader(e.target);
var email_status = new URLVariables(loader.data).success;

if( email_status == "yes" )
{
message_status.text = "Krok 1/2 proběhl v pořádku.";
timer = new Timer(500);
timer.addEventListener(TimerEvent.TIMER, on_timer);
timer.start();
}
else
{
message_status.text = "Chyba! Odesílání se nezdařilo.";
}
}

function on_timer(te:TimerEvent):void
{
if( timer.currentCount >= 10 )
{
contact_name.text = contact_mesto.text = contact_ulice.text = contact_telefon.text = contact_email.text = contact_www.text =
contact_gps.text = contact_cena.text = message_status.text = "";
timer.removeEventListener(TimerEvent.TIMER, on_timer);
}
}


Kod v php:

<?php



$contact_name = $_POST['name'];
$contact_mesto = $_POST['mesto'];
$contact_ulice = $_POST['ulice'];
$contact_telefon = $_POST['telefon'];
$contact_email = $_POST['email'];
$contact_www = $_POST['www'];
$contact_gps = $_POST['gps'];
$contact_cena = $_POST['cena'];


if( $contact_name == true )
{
$sender = $contact_email;
$receiver = "info@suzaplay.cz";
$client_ip = $_SERVER['REMOTE_ADDR'];
$email_body = "Ze serveru byla odeslána objednávka. \n\nData: \n\n$contact_name \n\n$contact_mesto \n\n$contact_ulice \n\n$contact_telefon \n\n$contact_email \n\n$contact_www \n\n$contact_gps \n\n$contact_cena \n\nIP: $client_ip \n\nZkontrolujte server - k záznamu budou pravdepodobne nahrány fotografie!";

$extra = "From: $sender\r\n" . "Reply-To: $sender \r\n" . "X-Mailer: PHP/" . phpversion();

if( mail( $receiver, "Ze serveru byla odeslána objednávka - $contact_name", $email_body, $extra ) )
{
echo "success=yes";
}
else
{
echo "success=no";
}
}

?>

Vážně bych neotravoval, ale nejsem schpnej najít pro tupany srozumitelnej návod jak to vyřešit... z flashe to podle mě vystupuje dobře, protože když změním index (ve kterém je flash) a php soubor na kodovani iso-8859-2 příjde mi hlavička mailu s diakritikou (hlavička taktéž pochází z inputu flashe) ale zbytek mailu opět rozsypanej...

Prosím o pomoc s nějakým rozumným řešením... prohledal jsem skutečně vše, takže odkazy typu "v tohle vláknu to je..." mi asi nepomůžou... potřeboval bych jednoduchej srozumitelnej návod...


Díky moc
AM_
Profil
Problém zřejmě není mezi PHP a flashem, ale v samotném mail()u, kterému nikde kódování nezadáváš. V hlavičce mailu musí být příslušný "content-type:text/plain;charset=utf-8" a předmět mailu musíš převést např. funkcí mb_encode_mimeheader; nebo použít pohodlný způsob posílání mailů v podobě třídy PHPMailer.
petrnemec
Profil *
Přiznám se, že kdybych našel nějaké pohodlné řešení (PHPMailer) tak už bych ho dávno využil... jenže.... díky tomu, že se potřebuji vrátit do flashe a přebírat input z něj bych to asi dohromady nedal... to je moje omezenost (s php nejsem až takovej kamarád)... hlavičk (Header) už jsem taky vyplněnou měl a stále to ničemu nepomohlo... Pokud by se Vám někomu chtělo mě tu hlavičku správně předvyplnit a hodit ji sem "zlíbal" bych Vám ruce... Díky
XMireczech
Profil *
hlavicka z kterou mi mail v UTF-8 chodi spravne:
$headers = "From: Contractor.cz <contractor@contractor.cz>\n"
. "X-Sender: contractor@contractor.cz\n"
. "X-Priority: 1\n"
. 'Reply-To: ' . 'contractor@contractor.cz' . "\n"
. 'Return-Path: <' . 'contractor@contractor.cz' . "\n"
. 'Content-Type: text/plain; charset="utf-8"' . "\n"
. "Content-Transfer-Encoding: 8bit\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: