Mikuláš je tu! Získaj 90 % extra kreditov ZADARMO s promo kódom CERTIK90 pri nákupe od 1 199 kreditov. Len do nedele 7. 12. 2025! Zisti viac:
NOVINKA: Najžiadanejšie rekvalifikačné kurzy teraz s 50% zľavou + kurz AI ZADARMO. Nečakaj, táto ponuka dlho nevydrží! Zisti viac:

Diskusia – 9. diel - Vylepšenia kontaktného formulára v PHP

Späť

Upozorňujeme, že diskusie pod našimi online kurzami sú nemoderované a primárne slúžia na získavanie spätnej väzby pre budúce vylepšenie kurzov. Pre študentov našich rekvalifikačných kurzov ponúkame možnosť priameho kontaktu s lektormi a študijným referentom pre osobné konzultácie a podporu v rámci ich štúdia. Toto je exkluzívna služba, ktorá zaisťuje kvalitnú a cielenú pomoc v prípade akýchkoľvek otázok alebo projektov.

Komentáre
Posledné komentáre sú na spodnej časti poslednej stránky.
Avatar
hrncal.junior:15.3.2018 17:06

No chci docílit toho, aby kromě příjemncům přišel e-mail i tomu, co vyplní formulář.i

Avatar
Jan Lupčík
Tvůrce
Avatar
Odpovedá na hrncal.junior
Jan Lupčík:15.3.2018 17:35

Tak použij něco takového:

$prijemci = "[email protected], [email protected], ";
$prijemci .= $_POST["email"];
mb_send_mail($prijemci, $predmet, $textZpravy, $hlavicka);
Odpovedať
TruckersMP vývojář
Avatar
Odpovedá na Jan Lupčík
hrncal.junior:15.3.2018 18:15

Díky moc, jsem úplný blb. Cpal jsem jabka z hruškama a divím se, že to nefunguje. Už mi to frčí jak má.

Avatar
Roman Duchoň:16.4.2018 16:47

Nějaké základy už jsem pochytal jinde, jedu si tu kurzy, abych si ty základy rozšířil a tenhle díl nemá chybu! :-)
XSS (jsem nevěděl, že se to tak jmenuje) už mi samo o sobě vrtalo hlavou a přemýšlel jsem, jak mu zabránit, takže htmlspecialchars() se hodí.
header('Location: stranka.php'); s použítím GET je pro mě taky suprová novinka.
Až jsem z toho zaražen a mám obavy, že víc takových informací a budu muset celé doposud vytvořené stránky smazat a udělat odznova...
Ale jednu otázku bych přece jen měl - co se stane, když při "přesměrování" nepoužiji ve funkci exit?

Avatar
Jiřina Trojánková:29.4.2018 19:25

Ahoj, poraďte prosím, když napíšu: header('Location: #message'); tak mě to po odeslání hodí na správné místo, ale nevypíše hlášku. Když napíšu: header('Location: #message?uspech=a­no'); tak mě to ani nehodí na správnou sekci, ani nevypíše hlášku, ale vypise se uspech=ano v url.. Nedava mi to smysl..
<code> <?php
mb_internal_en­coding("UTF-8");
$hlaska = '';
if (isset($_GET['us­pech']))
$hlaska = 'Email byl úspěšně odeslán, brzy vám odpovíme.';
if ($_POST)
{
if (isset($_POST['fir­stname']) && $_POST['firstname'] &&
isset($_POST['las­tname']) && $_POST['lastname'] &&
isset($_POST['e­mail']) && $_POST['email'] &&
isset($_POST['pho­ne']) && $_POST['phone'] &&
isset($_POST['mes­sage']) && $_POST['message'])
{
$hlavicka = 'From:' . $_POST['email'];
$hlavicka .= "\nMIME-Version: 1.0\n";
$hlavicka .= "Content-Type: text/html; charset=\"utf-8\"\n";
$adresa = 'jirina.trojan­[email protected]';
$predmet = 'Nová zpráva z mailformu';
$uspech = mb_send_mail($a­dresa, $predmet, $_POST['message'], $hlavicka);
if ($uspech)
{
$hlaska = 'Email byl úspěšně odeslán, brzy vám odpovíme.';
header('Location: #message');
//http://www.tes­t.com/index.htm?na­me1=value1&na­me2=value2
exit;
}
else
$hlaska = 'Email se nepodařilo odeslat. Zkontrolujte adresu.';
}
else
$hlaska = 'Formulář není správně vyplněný!';
}
?></code>

Avatar
Pavel Kvasil
Člen
Avatar
Pavel Kvasil:21.5.2018 16:45

Zdravím,
super návod, jako .php laikovi velmi přínosný. Mám, prosím, dva dotazy.

/1/ jak mohu řádkovat text v emailu, pokud to jeho těla vložím více položek formuláře? Např.:

$textzpravy = 'jmeno : ' . $_POST['jmeno'];
$textzpravy .= '; prijmeni : ' . $_POST['prijmeni'];
$textzpravy .= '; zprava : ' . $_POST['zprava'];
$uspech = mb_send_mail($a­dresa, $predmet, $textzpravy, $hlavicka);

jde mi o to, aby v mailu byli jednotlivé položky formuláře na samostatném řádku.

/2/ hláška o úspěšném odeslání mi zůstává viditelná i po obnovení stránky?! Jak mohu script upravit tak, aby se hláška zobrazila třeba jako systémová hláška Windows? Nebo aby byla otevřena samostatná stránka, kterou bych mohl upravit de vzhledu původních stránek s formulářem? Načetl jsem tady u vás, že je možné použít běžné html tagy, ale to bylo pořád v rámci stránky s formulářem?!

Díky moc a hezký den.
Pavel K.

Editované
Avatar
Ivo Silber
Člen
Avatar
Ivo Silber:24.5.2018 16:40

Tyto stránky jsou super :)

Avatar
Pavel Janda
Člen
Avatar
Pavel Janda:28.5.2018 22:35

Ahoj, celkem mi to funguje - mailuje, leč podstatný problém.
Jako SMTP mám v ini souborech nastaven smtp.google.com a jako mailový účet svůj gmail.účet, takže to posílá maily přes google. Nicméně ať už je v $hlavicka přítomno cokoli (tj mail zadaný z formuláře), vždy je v mailu jako odesílatel uveden můj mail. Tj. absolutně nefunguje ona záměna zobrazeného odesílatele pomocí "From:" v příkazu mb_send_mail. Provozuji na lokálně nainstalovaném XAMPP, na Win7.
Zkusil jsem si na jednoduchém webhostingu - ale tam nemám možnost nastavení PHP, takže tam to samozřejmě nelze.
Pokud místo gmailu použiji seznam (tj. smtp.seznam.cz a svůj seznam účet, tak dokonce ani nemohu uvést v From něco jiného než vlastní seznam účet - pokud parametr "From" vynechám tak můj seznam účet musí být v sendmail.ini jako "Force sender", jinak v obou případech se v error logu dozvím , že mám smůlu, že jiného odesílatele než vlastní účet použít nesmím....

Dotaz tedy zní zda nedělám nějakou blbinu (jakou asi), či zda je to tak jak se zdá, že zkrátka zaměnit odesílatele mailu zkrátka asi nelze ... ?

Díky za případný komentář.

Avatar
Odpovedá na Pavel Janda
Michal Štěpánek:28.5.2018 23:56

Odesílatel podle mě musí být ten, jehož službu k odeslání používáš, protože tě "něco" musí autentifikovat. Nelze nijak jednoduše poslat z webu mail z adresy "email@tojemu­jemail.cz" a k odeslání použít účet na google...

Odpovedať
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Pavel Janda
Člen
Avatar
Odpovedá na Michal Štěpánek
Pavel Janda:29.5.2018 11:57

Díky za reakci, to jasné, jenže !

  • celý příklad (lekce 8 - 9 ) je postaven právě na tom, že na mou adresu (... adresu "tvůrce" webu" ) přijdou maily s "odesílateli" (tj. From...) zadanými v poli "email" kontaktního formuláře.

Přímo ve výkladu je také jasně uvedeno, že pomoci parametru From v mb_send_mail se přesně tohoto má dosáhnout a že, cituji "Email potom vypadá jako že přišel z této adresy, i když ho odeslalo PHP z vašich stránek".

No a celý problém je, že takto to nefunguje a že logicky maily chodí z mého mailu, přes který se to celé honí...
Uvedenou záměnu adres zkrátka nedocílím. I když bych rád a ostatně logika existence parametru From by tomu napovídala...

Tak zatím stále nevím. Asi by pomohlo vyjádření autora - to by ale pak nedělal nic jiného a už takhle si s tím seriálem dal opravdu hodně práce.

Posledné komentáre sú na spodnej časti poslednej stránky.
Robíme čo je v našich silách, aby bola tunajšia diskusia čo najkvalitnejšia. Preto do nej tiež môžu prispievať len registrovaní členovia. Pre zapojenie sa do diskusie sa zaloguj. Ak ešte nemáš účet, zaregistruj sa, je to zadarmo.

Zobrazené 10 správy z 150.