Autor Zpráva
kuku
Profil *
Dobrý den, chtěl bych poprosit někoho o radu jak mám vyřešit problém s diakritikou po odeslání s formulářem. Vím že na jakpsatweb je toho už spousty a mockrát se to již zde řešilo, ale já mám problém, že bohužel nejsem tak zdatný programátor a nevím jak to do svého kódu implementovat. Kdyby jsi zde našel někdo kdo by to dokázal popsat popřípadě nastínit jak na to, byl bych moc rád. Za každou radu předem moc díky a omluvte že opět řeším už vyřešené:

form
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="stylesheet" type="text/css" href="styl.css" />
<title>Odesílání emailu</title>
</head>
<body>
<h1>Odesílání emailu</h1>

<form action="posli.php" method="post">
<input class="tb2" name="email" size="25" value="Váš@mail"><br>
<input class="tb2" name="predmet" size="25" value="Předmět"><br>
<input class="tb2" name="spam" size="25"> = 1 + 1<br>
<textarea class="textarea" name="zprava" rows="6" cols="55">Zpráva...</textarea><br>
<input class="submit" type="submit" value="Odeslat">
</form>

</body>
</html>


posli.php
	<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Odesílání emailu</title>
</head>
<body>
<h1>Odesílání emailu</h1>

<?

$predmet = $_POST['predmet'];
$email = $_POST['email'];
$spam = $_POST['spam'];
$zprava = $_POST['zprava'];

if ($predmet!="" and $email!="" and $zprava!="" and $spam=="2")
{
Mail("info@studiofreyja.cz", $predmet, $zprava, "From: " . $email);
echo "<p><strong>Váš e-mail byl úspěšně odeslán</strong>.</p>";
}
else
{
echo "<p>Váš e-mail se <strong>nepodařilo odeslat</strong> pravděpodobně jste nevyplnili všechny údaje, nebo nevíte kolik je 1 + 1.</p>";
}
?>

</body>
</html>


Tohle jsem našel že by mělo pomoci, ale nevím jak to implementovat do svého skriptu :-(
<?php 
/* *************** diskuse.jakpsatweb.cz *** PHP FAQ ********************** */
function autoUTF($s)
{
    // detect UTF-8
    if (preg_match('#[\x80-\x{1FF}\x{2000}-\x{3FFF}]#u', $s))
        return $s;
    // detect WINDOWS-1250
    if (preg_match('#[\x7F-\x9F\xBC]#', $s))
        return iconv('WINDOWS-1250', 'UTF-8', $s);
    // assume ISO-8859-2
    return iconv('ISO-8859-2', 'UTF-8', $s);
}

function cs_mail ($to, $predmet, $zprava, $head = "")
       {  $predmet = "=?utf-8?B?".base64_encode(autoUTF ($predmet))."?=";
          $head .= "MIME-Version: 1.0\n";
          $head .= "Content-Type: text/plain; charset=\"utf-8\"\n";
          $head .= "Content-Transfer-Encoding: base64\n";
          $zprava = base64_encode (autoUTF ($zprava));
          return mail ($to, $predmet, $zprava, $head); }
/* ********************************************************************** **  */
ondra15
Profil
kuku:
Mail("info@studiofreyja.cz", $predmet, $zprava, "From: " . $email);

Slovo Mail přepiš na cs_mail
kuku
Profil *
Moc děkuju, stidím se, že jsem na to nepřišel.
ondra15
Profil
kuku:
Moc děkuju, stidím se,“. Nic se neděje, ještě zlepši trošku tu češtinu a bude úplně všechno jak má být..
Sajga
Profil
Dobrý večer, budu teď asi za trubku, ale jsem laik a trošku se mi z toho motá hlava. Mám úplně stejně vytvořený formulář jako kolega kuku, ale nevím si rady s tím, kam přesně vložit do posli.php tento kód:

function autoUTF($s)
{
// detect UTF-8
if (preg_match('#[\x80-\x{1FF}\x{2000}-\x{3FFF}]#u', $s))
return $s;
// detect WINDOWS-1250
if (preg_match('#[\x7F-\x9F\xBC]#', $s))
return iconv('WINDOWS-1250', 'UTF-8', $s);
// assume ISO-8859-2
return iconv('ISO-8859-2', 'UTF-8', $s);
}

function cs_mail ($to, $predmet, $zprava, $head = "")
{ $predmet = "=?utf-8?B?".base64_encode(autoUTF ($predmet))."?=";
$head .= "MIME-Version: 1.0\n";
$head .= "Content-Type: text/plain; charset=\"utf-8\"\n";
$head .= "Content-Transfer-Encoding: base64\n";
$zprava = base64_encode (autoUTF ($zprava));
return mail ($to, $predmet, $zprava, $head); }

Předem moc děkuji za trpělivou odpověď, Zuzka.
AM_
Profil
Sajga:
V podstatě kamkoliv, ideálně na začátek souboru. Každopádně mezi značky <?php ?> (tedy ne do HTML!)
Sajga
Profil
AM:
Udělala jsem to takto:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1250" />
<meta http-equiv="Refresh" content="0;URL=kontakt.htm" />
<title>Odesílání emailu</title>
</head>
<body>
<h1>Odesílání emailu</h1>

<?
function autoUTF($s)
{
    // detect UTF-8
    if (preg_match('#[\x80-\x{1FF}\x{2000}-\x{3FFF}]#u', $s))
        return $s;
    // detect WINDOWS-1250
    if (preg_match('#[\x7F-\x9F\xBC]#', $s))
        return iconv('WINDOWS-1250', 'UTF-8', $s);
    // assume ISO-8859-2
    return iconv('ISO-8859-2', 'UTF-8', $s);
}

function cs_mail ($to, $predmet, $zprava, $head = "")
       {  $predmet = "=?utf-8?B?".base64_encode(autoUTF ($predmet))."?=";
          $head .= "MIME-Version: 1.0\n";
          $head .= "Content-Type: text/plain; charset=\"utf-8\"\n";
          $head .= "Content-Transfer-Encoding: base64\n";
          $zprava = base64_encode (autoUTF ($zprava));
          return mail ($to, $predmet, $zprava, $head); }
          
$predmet = $_POST['predmet'];
$email = $_POST['email'];
$spam = $_POST['spam'];
$zprava = $_POST['zprava'];

          
if ($predmet!="" and $email!="" and $zprava!="" and $spam=="2")
{

cs_mail("zuzana.kohlerova@seznam.cz",$_POST["predmet"],$_POST["zprava"],"From: " . $email);
echo "<p><strong>Váš e-mail byl úspěšně odeslán</strong>.</p>";
}
else
{
echo "<p>Váš e-mail se <strong>nepodařilo odeslat</strong> pravděpodobně jste nevyplnili všechny údaje, nebo nevíte kolik je 1 + 1.</p>";
}
?>
</body>
</html> 


Bohužel mi ale na e-mail vůbec nic nechodí ...
AM_
Profil
pokud to vypíše, že byl e-mail odeslán, a nepřijde, tak bude chyba někde po cestě - špatně nastavený mail v PHP, chytly to spam filtry, e-mail se cestou ztratil nebo zasekl a teprve dorazí.
Sajga
Profil
AM:
E-mail by měl být v pořádku (zuzana.kohlerova@seznam.cz), s tím ostatním asi nic nenadělám, že?
Alphard
Profil
cs_mail("zuzana.kohlerova@seznam.cz",$_POST["predmet"],$_POST["zprava"],"From: $email\n");

Která hláška se vypsala? Jinak viz [#8] AM.
Sajga
Profil
Alphard:
Napsalo mi to: Váš e-mail byl odeslán. E-mail ale nedorazil ...
Alphard
Profil
A když tu hlášku dáte do podmínek takhle?
if ($predmet!="" and $email!="" and $zprava!="" and $spam=="2")
{

  if(cs_mail("zuzana.kohlerova@seznam.cz",$_POST["predmet"],$_POST["zprava"],"From: $email\n"))
  {
    echo "<p><strong>Váš e-mail byl úspěšně odeslán</strong>.</p>";
  }
}
else
{
  echo "<p>Váš e-mail se <strong>nepodařilo odeslat</strong> pravděpodobně jste nevyplnili všechny údaje, nebo nevíte kolik je 1 + 1.</p>";
}
Sajga
Profil
Alphard:
Naprosto perfektní, moc děkuji za vytržený trn z paty!!!
Davex
Profil
Alphard:
Technicky vzato by podle SMTP, RFC 822 a MIME měly být všechny nové řádky vytvořeny kombinací CRLF - tedy \r\n. Teď je to i ve FAQ nekonzistentní - můžeš to prosím sjednotit?
Alphard
Profil
[#14] Davex
Můžu. Dám to pořádku.

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: