Diskuze: Problém s češtinou - prosím o radu

PHP PHP Problém s češtinou - prosím o radu American English version English version

Avatar
HyPaC
Člen
Avatar
HyPaC:

Ahojte, zkouším si PHP osahat a narazil jsem na problém, který mi způsobuje formulář, nebo script, kterým jej obsluhuji. Mám HTML stránku (v utf-8), obsluhuji pomocí php scriptu, který si myslím mám také v utf-8, redirect mám pomocí HTML stránky opět v utf-8. Stránka se ukazuje správně, po odeslání, nebo při chybě vyplnění formuláře je redirect stránka také zobrazena správně, přesto na mail mi přijdou české znaky v jiném kódování. Každá rada bude dobrá :) díky moc.

Struktura obrázku:

1/ .html formulář
2/ .php (php část)
3/ .php (html část)
4/ .html redirect
5/ email

Odpovědět 27.5.2015 8:31
Rozhodl jsem se, že budu žít věčně ;-) .. no a když mi to náhodou nevyjde, tak umřu :-P
Avatar
tomasmanhal
Člen
Avatar
Odpovídá na HyPaC
tomasmanhal:

Problém může být i v emailovém klientovi. Thunderbird mi taky špatně zobrazoval diakritiku, kdežto Gmail ji zobrazoval správně.

Druhý tip, verze kterou používám na webech já a funguje mi:

<?php

    mb_internal_encoding("UTF-8");

    $hlaska = '';
    if ($_POST)
    {
        if (isset($_POST['jmeno']) && $_POST['jmeno'] &&
      isset($_POST['email']) && $_POST['email'] &&
      isset($_POST['zprava']) && $_POST['zprava'] &&
      isset($_POST['rok']) && $_POST['rok'] == date('Y'))
        {
            $hlavicka = 'From:' . $_POST['email'];
            $hlavicka .= "\nMIME-Version: 1.0\n";
            $hlavicka .= "Content-Type: text/html; charset=\"utf-8\"\n";
            $adresa = 'něco@email.cz';
            $predmet = 'Nová zpráva z něco.cz!';
            $uspech = mb_send_mail($adresa, $predmet, $_POST['zprava'], $hlavicka);
            if ($uspech)
            {
                $hlaska = 'Email byl úspěšně odeslán, brzy vám odpovíme.';
            }
            else
                $hlaska = 'Email se nepodařilo odeslat. Zkontrolujte adresu.';
        }
        else
            $hlaska = 'Formulář není správně vyplněný!';
    }

?>

Formulář vypadá následovně:

    <h5>Kontaktní formulář</h5>
    <?php
        if ($hlaska)
          echo( "<p>". $hlaska ."</p>" );
    ?>
    <div class="form">
      <!-- Contact form (not working)-->
  <form method="POST" class="form-horizontal">

  <div class="form-group">
    <label class="control-label col-md-3" for="name">Jméno</label>
    <div class="col-md-9">
      <input name="jmeno" class="form-control" id="name" type="text"/>
    </div>
  </div>

  <div class="form-group">
      <label class="control-label col-md-3" for="email">Email</label>
    <div class="col-md-9">
      <input name="email" class="form-control" id="email" type="email" />
    </div>
  </div>

  <div class="form-group">
      <label class="control-label col-md-3" for="rok">Aktuální        rok</label>
    <div class="col-md-9">
      <input name="rok" class="form-control" type="number" />
    </div>
  </div>
  <div class="form-group">
      <label class="control-label col-md-3" for="comment">Zpráva</label>
      <div class="col-md-9">
        <textarea name="zprava" id="comment" class="form-control" rows="3"></textarea>
      </div>
  </div>
  <div class="col-md-9 col-md-offset-3">
    <button type="submit" class="btn btn-default">Odeslat</button>
    <button type="reset" class="btn btn-default">Resetovat</button>
  </div>

</form>
</div>

Styly ve formuláři ignoruj, vykrojil sem to z konkrétního projektu :-D

Editováno 27.5.2015 8:50
Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
Nahoru Odpovědět  +1 27.5.2015 8:49
Kdyby nám dodali k životu zdrojový kód, vše by bylo jednodušší...
Avatar
Odpovídá na HyPaC
Michal Štěpánek:

Dlouho jsem v PHP nedělal, ale používal jsem v odesílání mailu toto

$zprava = StrTr($zprava,"ŠšŽžĽľŤťŚŹśźĄą","©ą®ľĄµ«»¦¬¶Ľˇ±");

a fungovalo mi to bez problémů

Nahoru Odpovědět 27.5.2015 11:13
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
HyPaC
Člen
Avatar
Odpovídá na tomasmanhal
HyPaC:

Díky moc! Vzal jsem od obou něco a jede to.

Nahoru Odpovědět 31.5.2015 21:26
Rozhodl jsem se, že budu žít věčně ;-) .. no a když mi to náhodou nevyjde, tak umřu :-P
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 4 zpráv z 4.