PHP formulář diakritika

Místo pro dotazy a rady ohledně programovacích jazyků (C++, C#, PHP, ASP, Javascript, VBS..) a tvorby webových stránek

Moderátor: Mods_senior

Zamčeno
854005
Level 2
Level 2
Příspěvky: 241
Registrován: 24 říj 2012 18:29

PHP formulář diakritika

Příspěvek od 854005 »

Dobré odpoledne, rád bych Vás tu, spoludiskutující, požádal o pomoc. Téma mého problému je zcela klasické, jedná se totiž o diakritiku ve formuláři, který se posílá z webu přes PHP. Než mi začnete nadávat, že to tu bylo již stokrát, tak bych rád upozornil, že jsem si vyhledal několik návodů a taky vyzkoušel, nicméně mi ani jeden nefungoval. Proto bych potřeboval poradit, co dělám blbě. Povedlo se mi nakódovat Předmět, ale tělo zprávy ne. Kódování stránky Windows 1250 (a nerad bych ho měnil, protože mi UTF nikdy nefunguje tak, jak má).

Kód: Vybrat vše

<?php
$mail = 'adresa@domena.koncovka';
$predmet = 'ěščřžýáíé46';
$encodedsubject = base64_encode ($predmet);
$predmet = "=?windows-1250?B?$encodedsubject?=\r\n";
$zprava = "e-mail: $Email".PHP_EOL."\n";
$zprava .= "Příjmení: $Prijmeni".PHP_EOL."\n";
$zprava .= "Jméno: $Jmeno".PHP_EOL."\n";
$zprava .= "Titul: $Titul".PHP_EOL."\n";
$zprava .= "Datum narození: $Datum_narozeni".PHP_EOL."\n";
$zprava .= "Číslo OP: $Cislo_OP".PHP_EOL."\n";
$zprava .= "Název pracoviště: $Nazev_pracoviste".PHP_EOL."\n";
$zprava .= "Adresa pracoviště: $Adresa_pracoviste".PHP_EOL."\n";

// atd. další položky $.zprava

 
if (mail($mail, $predmet, $zprava))
{
    echo 'E-mail byl úspěšně odeslán.<br>';
}
else
{
    echo 'E-mail se bohužel nepodařilo odeslat.<br>';
}
?>
Prozatím děkuji.
Uživatelský avatar
CZechBoY
Master Level 9.5
Master Level 9.5
Příspěvky: 8813
Registrován: 20 srp 2008 14:02
Bydliště: Brno
Kontaktovat uživatele:

Re: PHP formulář diakritika

Příspěvek od CZechBoY »

Zdravím,
no určitě jste přečetl hodně návodů, ale žádný jste nepoužil ... :-/

Zkuste to takhle

Kód: Vybrat vše

<?php
$mail = 'adresa@domena.koncovka';
$predmet = 'ěščřžýáíé46';
$encodedsubject = base64_encode ($predmet);
$predmet = "=?windows-1250?B?" . $encodedsubject . "?=\r\n";
$zprava = "e-mail: " . $Email . "\r\n";
$zprava .= "Příjmení: " . $Prijmeni . "\r\n";
$zprava .= "Jméno: " . $Jmeno . "\r\n";
$zprava .= "Titul: " . $Titul . "\r\n";
$zprava .= "Datum narození: " . $Datum_narozeni . "\r\n";
$zprava .= "Číslo OP: " . $Cislo_OP . "\r\n";
$zprava .= "Název pracoviště: " . $Nazev_pracoviste . "\r\n";
$zprava .= "Adresa pracoviště: " . $Adresa_pracoviste . "\r\n";

$headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: text/plain; charset=windows-1250\r\n";

// atd. další položky $.zprava

 
if (mail($mail, $predmet, $zprava, $headers))
{
    echo 'E-mail byl úspěšně odeslán.<br>';
}
else
{
    echo 'E-mail se bohužel nepodařilo odeslat.<br>';
}

 
PHP, Nette, MySQL, C#, TypeScript, Python
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW
854005
Level 2
Level 2
Příspěvky: 241
Registrován: 24 říj 2012 18:29

Re: PHP formulář diakritika

Příspěvek od 854005 »

Takhle jo. Jenže žádný návod nemyslí na blbce a když přidám pouze

Kód: Vybrat vše

$headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: text/plain; charset=windows-1250\r\n";
 
tak to nejde.

Už se nikde nepsalo, že tam nemá být $zprava = "e-mail: $Email".PHP_EOL."\n";

ale

$zprava = "e-mail: " . $Email . "\r\n";

Takže zádrhel byl ne v hlavičce, ale v těch tečkách a uvozovkách v těle zprávy.


Tedy děkuji ještě jednou.

--- Doplnění předchozího příspěvku (07 Pro 2014 17:06) ---

Ještě dodatek: kdybych nezkoušel návody, asi bych neměl nakódovaný předmět, ne? :-)
Uživatelský avatar
CZechBoY
Master Level 9.5
Master Level 9.5
Příspěvky: 8813
Registrován: 20 srp 2008 14:02
Bydliště: Brno
Kontaktovat uživatele:

Re: PHP formulář diakritika

Příspěvek od CZechBoY »

Bez těch headers ti to fakt funguje?
Ta konkatenace stringů je vesměs jedno v tomhle případě...
PHP, Nette, MySQL, C#, TypeScript, Python
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW
854005
Level 2
Level 2
Příspěvky: 241
Registrován: 24 říj 2012 18:29

Re: PHP formulář diakritika

Příspěvek od 854005 »

Bez headers to funguje, ale ne česky.
Uživatelský avatar
CZechBoY
Master Level 9.5
Master Level 9.5
Příspěvky: 8813
Registrován: 20 srp 2008 14:02
Bydliště: Brno
Kontaktovat uživatele:

Re: PHP formulář diakritika

Příspěvek od CZechBoY »

Takže když se to odešle v češtině tak email přijde v angličtině?
PHP, Nette, MySQL, C#, TypeScript, Python
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW
854005
Level 2
Level 2
Příspěvky: 241
Registrován: 24 říj 2012 18:29

Re: PHP formulář diakritika

Příspěvek od 854005 »

No když zkopíruju ten Váš skript do puntíku přesně, tak to již samozřejmě přijde v pořádku česky :).
Uživatelský avatar
CZechBoY
Master Level 9.5
Master Level 9.5
Příspěvky: 8813
Registrován: 20 srp 2008 14:02
Bydliště: Brno
Kontaktovat uživatele:

Re: PHP formulář diakritika

Příspěvek od CZechBoY »

No a kde je problém?
PHP, Nette, MySQL, C#, TypeScript, Python
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW
854005
Level 2
Level 2
Příspěvky: 241
Registrován: 24 říj 2012 18:29

Re: PHP formulář diakritika

Příspěvek od 854005 »

Problém jako takový nikde, jen jsem si chtěl najít, kde jsem dělal chybu, abych už to příště věděl :-). Nic víc.
Zamčeno

Zpět na „Programování a tvorba webu“