Autor Zpráva
HonzaDury
Profil *
Dobrý den, na netu jsem si našel jak odeslat kontaktní formulář na email. Vše mi funguje, ale v proměnných mám oslovení, jméno a příjmení. Chtěl bych aby tyto 3 proměnné se oběvili ve zprávě. Nejsem vůbec dobrý na php, tak proto prosím o radu vás. Zde mám výpis kodu.

<form action="posli.php" method="post" >
Oslovení<br>
<input type="text" name="osloveni" class="formular" value="">
Příjmení*<br>
<input type="text" name="prijmeni" class="formular" value="">
Jméno*<br>
<input type="text" name="jmeno" class="formular" value="">
E-mail*<br>
<input type="text" name="email" class="formular" value="">
Text Vaší zprávy*<br>
<textarea name="text" class="text_zpravy" rows="13" cols="53"></textarea>
<input type="submit" value="" class="odeslat" >
</form>


posli.php

<?
$osloveni = $_POST['osloveni'];
$jmeno = $_POST['jmeno'];
$prijmeni = $_POST['prijmeni'];
$email = $_POST['email'];
$text = $_POST['text'];

if ($jmeno!="" and $prijmeni!="" and $email!="" and $text!="")
{
Mail("happy.gilmore@seznam.cz", $osloveni, $jmeno, $prijmeni, $text, "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</p>";
}
?>

předem moc děkuji za odpověď
TomasJ
Profil
Mail("happy.gilmore@seznam.cz", "predmet emailu", "$osloveni $jmeno $prijmeni\n$text", "From: " . $email); 

Mail("Příjemce", "předmět", "zpráva", "Od (od koho)", "další parametry");
To \n (mezi $prijmeni a $text), dělá v emailu nový řádek.
HonzaDury
Profil *
Moc děkuji. Vše funguje. Jen ještě jedna drobnost, špatně se mi zobrazuje diakritika. Co je třeba dát do posli.php, aby se mi zobrazovali háčky čárky apod?
panther
Profil
HonzaDury:
nastav správné hlavičky mailu, více v manuálu.
HonzaDury
Profil *
Kurnik vůbec mi to nefunguje :-/

$ Headers = 'MIME-Version: 1.0' . "\ r \ n" ;
$ Headers .= 'Content-Type: text / html; charset = iso-8859-1' . "\ r \ n" ;
Ben
Profil *
Anebo se podívej sem
HonzaDury
Profil *
jj na to jsem se taky díval, nakopíroval jsem do zdrojového kodu ty kody, které tam jsou uveřejněné a pořád nic. Nevím co dělám špatně :-/
TomasJ
Profil
posli.php
<?php
function autoUTF($s)
{
    if (preg_match('#[\x80-\x{1FF}\x{2000}-\x{3FFF}]#u', $s)) // detect UTF-8
    {
        return $s;
    }
    elseif (preg_match('#[\x7F-\x9F\xBC]#', $s)) // detect WINDOWS-1250
    {
        return iconv('WINDOWS-1250', 'UTF-8', $s);
    }
    else // 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 .= "\nMIME-Version: 1.0\r\n";
    $head .= "Content-Type: text/plain; charset=\"utf-8\"\r\n";
    $head .= "Content-Transfer-Encoding: base64\r\n";
    $zprava = base64_encode(autoUTF($zprava));
    return mail($to, $predmet, $zprava, $head);
}

$osloveni = $_POST['osloveni'];
$jmeno = $_POST['jmeno'];
$prijmeni = $_POST['prijmeni'];
$email = $_POST['email'];
$text = $_POST['text'];

if ($jmeno!="" and $prijmeni!="" and $email!="" and $text!="")
{
cs_mail("happy.gilmore@seznam.cz", "predmet emailu", "$osloveni $jmeno $prijmeni\n$text", "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</p>";
} 
?>


Řešení funguje, já tuhle funkci používám též.
HonzaDury
Profil *
Tak až takhle jsem to nerozepisoval :-O Ale dík moc funguje bezproblému
HonzaDury
Profil *
<?php
function autoUTF($s)
{
if (preg_match('#[\x80-\x{1FF}\x{2000}-\x{3FFF}]#u', $s)) // detect UTF-8
{
return $s;
}
elseif (preg_match('#[\x7F-\x9F\xBC]#', $s)) // detect WINDOWS-1250
{
return iconv('WINDOWS-1250', 'UTF-8', $s);
}
else // 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 .= "\nMIME-Version: 1.0\r\n";
$head .= "Content-Type: text/plain; charset=\"utf-8\"\r\n";
$head .= "Content-Transfer-Encoding: base64\r\n";
$zprava = base64_encode(autoUTF($zprava));
return mail($to, $predmet, $zprava, $head);
}

$osloveni = $_POST['osloveni'];
$jmeno = $_POST['jmeno'];
$prijmeni = $_POST['prijmeni'];
$email = $_POST['email'];
$text = $_POST['text'];

if ($jmeno!="" and $prijmeni!="" and $email!="" and $text!="")
{
cs_mail("xx@xxx.cz", "E-mail z webových stránek xxx", "Zpráva od: $osloveni $jmeno $prijmeni\n___________________________________________________________\n\nText zprávy:\n\n$text\n\n\n___________________________________________________________\nZpracoval xxxx.", "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. Zkuste to prosím znovu.</p>";
}
?>

prosím Vás ještě jedna drobnost. Jak zformátovat text v posli.php? Například fonty, tučnost atd.? Vůbec mi to nejde :-(
Davex
Profil
HonzaDury:
Jak zformátovat text v posli.php? Například fonty, tučnost atd.?
Poslat s MIME typem text/html.
HonzaDury
Profil *
Wow, tak tohle slyším poprvé. Musím pozjišťovat vo co vlastně jde :-)
Davex
Profil
HonzaDury:
Už to tu jednou bylo, takže jsem předpokládal, že jsi jen přehlédl

$head .= "Content-Type: text/plain; charset=\"utf-8\"\r\n"; 
HonzaDury
Profil *
Tak teďka jsem úplně zamotaný. Teď už to vůbec nechápu :-( to Co jsi poslal, tak v tom mám akorát změnit plain na html? A co tím vlastně docílím? Já byhc právě potřeboval naformátovat text.
Davex
Profil
HonzaDury:
Docílíš tím toho, že se tělo zprávy bude považovat za HTML kód a ne za prostý text, takže začnou fungovat HTML tagy, které tam pak můžeš použít.
HonzaDury
Profil *
Super dík moc. Jen ještě jedna malá věc. Jde nějak napojit na posli.php nějaký soubor a nebo nějaký příkaz, aby ten co posílá zprávu, dostal automaticky potvrzovací email?
Jednoduše řečeno: Já pošlu nějakou zpravů přes formulář a na můj email, který jsem zadal do formuláře mi příjde potvrzovací email, že zpráva byla zaslána.
HonzaDury
Profil *
Nikdo neví? Zkoušel jsem i googlit ale nic jsem nenašel :-(
Alphard
Profil
HonzaDury:
Můžete poslat druhý mail v závislosti na návratové hodnotě toho prvního, ale samozřejmě to není 100%.
klara.muzikova@email.cz
Profil *
Zdravím,

po dlouhém hledání na netu jsem konečně objevila funkční emailový formulář, ale mám problémy s češtinou, zkoušela jsem už ledacos, ale pořád nic. A taky bych ráda hlášku po odeslání nevypisovala na novou stránku, ale třeba pod formulář nebo jako alert. Pomůže někdo?

V HTML mám takto:
<form action="vzkaz22.php" method="post">
Váš e-mail: <input name="email" size="25" value="@"><br>
Předmět: <input name="predmet" size="25" value=""><br>
Protispamová ontrola: <input name="spam" size="25"> <strong>= 1 + 1</strong><br>
Zpráva: <textarea name="zprava" rows="6" cols="55">&nbsp;</textarea><br>
<input type="submit" value="Odeslat">
</form>

V PHP takto:
<?

$predmet = $_POST['predmet'];
$email = $_POST['email'];
$spam = $_POST['spam'];
$zprava = $_POST['zprava'];
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=utf-8' . "\r\n";

if ($predmet!="" and $email!="" and $zprava!="" and $spam=="2") // Pokud není políčko předmět, mail, zprava prázné a spam se rovná (==) 2, pokračuj v kódu
{
Mail("klara.muzikova@email.cz", $predmet, $zprava, "From: " . $email, $headers);

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>";
}
?>

Předem díky moc za odpověď,
Klára

Vaše odpověď

Mohlo by se hodit

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: