Autor Zpráva
ASSASIN
Profil
Ahoj

mám tento skript...všechno funguje víceméně v pořádku až na to,že my nechodí české znaky..mohli by jste mi prosím poradit a opravit mů kód...potřebuji ho opravit proto,jeliž jsem už zkoušel to vyřešit sám ale výsledek mého snažení byl jenom horší..tzn..udělal se mi ze znaků rosypaný čaj..

Na stránkách mám kodování utf-8

Pokud někdo víte budu rád.

<?php

$to = "mail@seznam.cz";
$extra = "From: $mail Reply-To: $mail ";
$subject = "Vzkaz od ".$name."";
$mess = "Jméno: ".$name." Email: ".$mail." Telefon: ".$telefon." Mám zájem o: ".$te." Zpráva : ".$message." Pùvodní web: ".$web."";

mail ($to, $subject, $mess, $extra);

?>
<html><head>
<META HTTP-EQUIV="Refresh" CONTENT="0;URL=kontakty.html">
YoSarin
Profil
ASSASIN
No, zkus hledat, řeší se to tu dnes a denně.
Subject mailu se posílá v iso-8859-2 -> převeď ho do něj pomocí iconv()
Do hlaviček přidej
Content-Type: text/plain; charset=utf-8
Stránka s formulářem by taky měla být v utf-8 (to asi je).
Problém může nastat při posílání mailu na adresu kterou hlídá spamassasin - pak bude pravděpodobně označena za spam (kvůli nezakódovaným znakům v hlavičce) udělej tohle:
$subject = iconv("UTF-8", "ISO-8859-2", "Vzkaz od $name");

$subject = "=?ISO-8859-2?B?".base64_encode($subject)."?=";

<OT>Teoreticky by to šlo i s Q (quoted_printable()), ale to spamassasin z nějakého důvodu nebere (nemá to kódování asi rád) </OT>
Nejlépe by bylo pomocí iconv() převést do iso-8859-2 i text mailu a celý mail pak posílat s "charset=iso-8859-2".

Taky nezapomeň, že hlavičky (to co ty máš v $extra) by měly být oddělené pomocí "\r\n".
ASSASIN
Profil
Nějak to přestávám chápat mohl by jsi mi to nátorně předvést úpravou toho kódu prosím?
YoSarin
Profil
To jsem netušil, že to píšu až natolik zmatečně...
<?php

$to = "mail@seznam.cz";
$extra = "From: $mail \r\n Reply-To: $mail \r\n Content-Type: text/plain; charset=iso-8859-2";
$subject = iconv("UTF-8", "ISO-8859-2", "Vzkaz od $name");
$subject = "=?ISO-8859-2?B?".base64_encode($subject)."?=";
$mess = iconv("UTF-8", "ISO-8859-2", "Jméno: $name\nEmail: $mail\nTelefon: $telefon\nMám zájem o: $te\nZpráva:\n$message\nPùvodní web: $web");

if(!mail ($to, $subject, $mess, $extra))
die("Mail se nepodařilo odeslat, je nám líto"); //kontrola stli se ten mail poslal

?>
<html><head>
<META HTTP-EQUIV="Refresh" CONTENT="0;URL=kontakty.html">


Snad jsem tam nenapsal žádnou chujovinu.
ASSASIN
Profil
Tak ted pro zmenu neprijdou vyplnene polozky maximalne jedna...
tady je formular k nahlednuti ale myslim ze je to v nem vse dobre...

http://pharmatraining.cz/prospekty.html

Tahle situace se my uz take jednou stala,vratil jsem zpet..preci jenom je lepsi kdyz mi chdi spatne diakritika,nez kdyz to nejde vubec...vazne nevim v cem je chyba...
YoSarin
Profil
ASSASIN
a jak plníš ty proměnné $mess, $name, $mail, ... ?
Pomocí $_POST['']?
ASSASIN
Profil
No method post mam jenom u <form action="sendobj.php" method="post">,takze vsechna data z formularu posilam jako post..nebo NE?
YoSarin
Profil
ASSASIN
no, všechna data z toho formu asi jo... :-)
Jen sem strč ten kousek kódu kde to z těch $_POST[''] dostáváš do těch proměnných se kterýma potom pracuješ v tom mail()
ASSASIN
Profil
??? zase nechápu...jsem asi úplně natvrdlý..vzdyt post je aplikovany na vsechny polozky...z toho formulare...mam je tady nasazet v php soubotu do toho ()mail?
Alphard
Profil
jde o nastavení register_globals
jednoduše dej n azačátek scriptu:
$mail = $_POST['mail'];
$name = $_POST['name'];
a tohle pro všechny proměnné z formuláře
ASSASIN
Profil
a nemohou být maximálně pouze 4?
ASSASIN
Profil
Skvělé už to funguje bezvadně
Díky vám všem za ochotu...
Toto téma je uzamčeno. Odpověď nelze zaslat.

0