Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
HyPaC
Člen
Avatar
HyPaC:27.5.2015 8:31

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
Odpovídá na HyPaC
Tomáš Maňhal:27.5.2015 8:49

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ě[email protected]';
            $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í
+2,50 Kč
Řešení problému
 
Nahoru Odpovědět
27.5.2015 8:49
Avatar
Odpovídá na HyPaC
Michal Štěpánek:27.5.2015 11:13

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 Tomáš Maňhal
HyPaC:31.5.2015 21:26

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.