Diskuze: Kontaktní formulář a jeho odeslání
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.


Zobrazeno 8 zpráv z 8.
K personalizaci obsahu a reklam, poskytování funkcí sociálních médií a analýze naší návštěvnosti využíváme soubory cookie. Informace o tom, jak náš web používáte, sdílíme se svými partnery pro sociální média, inzerci a analýzy. Partneři tyto údaje mohou zkombinovat s dalšími informacemi, které jste jim poskytli nebo které získali v důsledku toho, že používáte jejich služby.
Používáme nezbytné cookies pro fungování webu a s tvým souhlasem také analytické a marketingové cookies.
Zajišťují základní funkce, bezpečnost a služby, které sis vyžádal. Nelze je vypnout.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| ITnetwork | ITnetwork | Provoz webu, relace, přihlášení a uložení nastavení cookies. | PHPSESSID, auth_token, sid, itn_consent_impression, __Host-itn_consent | Relace až 1 rok |
| Google Tag Manager | Správa značek a načítání měřicích nástrojů webu. | Žádné | Neukládá se | |
| Google Fonts | Načítání typografie webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google Hosted Libraries | Načítání potřebných knihoven a stylů webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google reCAPTCHA | Ochrana formulářů a webu před zneužitím. | _GRECAPTCHA, rc::a, rc::b, rc::c, rc::f | Relace až 180 dní | |
| YouTube | Přehrávání vloženého video obsahu. | localStorage, IndexedDB; cookies after playback interaction | Relace až trvalé úložiště | |
| Vimeo | Vimeo | Přehrávání vloženého video obsahu. | __cf_bm, _cfuvid, vuid, localStorage, IndexedDB | Relace až 2 roky |
| Facebook Login | Meta | Přihlášení pomocí účtu třetí strany. | Úložiště řízené poskytovatelem | Relace až 1 rok |
| GoPay | GoPay | Zpracování uživatelem vyžádané platby. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
Pomáhají nám porozumět používání webu a zlepšovat ho.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Analytics 4 | Měření návštěvnosti a používání webu. | _ga, _ga_* | Až 2 roky | |
| Microsoft Clarity | Microsoft | Měření návštěvnosti a používání webu. | _clck, _clsk, _cltk | Relace až 1 rok |
Slouží k měření kampaní, personalizaci reklamy a marketingové komunikaci.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Ads | Měření kampaní, reklama a remarketing. | _gcl_au, _gcl_ls | Relace až 90 dní | |
| Meta Pixel | Meta | Měření kampaní, reklama a remarketing. | _fbp, _fbc, localStorage | Až 90 dní |
| Sklik | Seznam.cz | Měření kampaní, reklama a remarketing. | retargeting, sid, szn:* | Relace až trvalé úložiště |
| LinkedIn Insight | Měření kampaní, reklama a remarketing. | bcookie, li_gc, lidc, __cf_bm | Relace až 1 rok | |
| Ecomail | Ecomail.cz | Měření kampaní, reklama a remarketing. | ecmid, Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
| Atribuce kampaní ITnetwork | ITnetwork | Přiřazení návštěvy a objednávky ke kampani. | campaign_clid[*], user_session_context | Až 1 rok |
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.


Máš to trochu "divoké". Pokud jsem to dobře pochopil, chceš zobrazit
název společnosti místo emailu (on tam stejně je - musí - ale není tak
důrazný).
Hlavičku pro mb_send_mail() upravíš takto:
<?php
//Nyní se zobrazí odesílatel jako obsah $_POST['company']
$hlavicka = 'From: ' . $_POST['company'] . ' <' . $_POST['email'] . '>';
$hlavicka .= '\nMIME-Version: 1.0\n';
$hlavicka .= 'Content-Type: text/html; charset="utf-8"\n';
Poté ještě trochu upravíš samotnou funkci pro odeslání:
<?php
mb_send_mail($adresa, $predmet, $_POST['zprava'], $hlavicka);
Netestoval som, ale pri prvej úprave, ktorú navrhuješ sa možno nebude dať na e-mail odpovedať bez modifikácie adresáta. Prípadne sa s tým e-mailovy klient vysporiada, ale pošle na obidve adresy.
Ak si chceš pripojiť názov užívateľovej firmy, pripoj ju k správe. V hlavičkách od koho e-mail prišiel nemá čo robiť:
$_POST['zprava'] .= "From: $_POST['company']";
Neviem čo sleduješ tým množstvom výrazov v podmienke, ale stačilo by
if(!empty($_POST['jmeno']) && !empty($_POST['email']) && !empty($_POST['company']) && !empty($_POST['zprava']) && $_POST['rok'] == date('Y'))
Prípadne všetko nahádzať do issetu. Ten totiž zvláda aj viacero argumentov.
Ochrana to ale nie je postačujúca. Medzerami sa cez ňu dostanem. Funkcia trim() medzery oreže. Tiež by sa zišlo kontrolovať tvar e-mailu a minimálny počet znakov.
Tak ještě jednou
Já
jsem prostě jen chtěl podle toho návodu, který jsem na tomto webu našel,
vytvořit formulář, který bude obsahovat políčko k vyplnění názvu firmy
a my tak dostaneme rovnou informaci o tom, ze které firmy nám kdo
píše...
A právě jak jsem to začal přidávat, tak jsem to přidával asi blbě, takže to začalo haprovat...
Ale nakonec se zdá, že než se v tom vrtat a trávit s tím čas navíc (já jsem totiž doufal, že ten návod, co jsem našel, bude fungovat bez problémů), tak raději budu návštěvníky odkazovat na jiný kontaktní formulář, který funguje a je na něm ochrana v podobě MathGuard (v souvislosti s touto ochranou formulářů se mi zdá, že vývoj této ochrany asi byl ukončen)....
<?php
mb_internal_encoding("UTF-8");
$hlaska = '';
if (isset($_GET['uspech']))
$hlaska = 'Your message was sent. We will reply as soon as possible.';
if ($_POST) // V poli _POST něco je, odeslal se formulář
{
if (isset($_POST['jmeno']) && $_POST['jmeno'] &&
isset($_POST['email']) && $_POST['email'] &&
isset($_POST['company']) && $_POST['company'] &&
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";
$company = 'From:' . $_POST['company'];
$adresa = '[email protected]';
$predmet = 'Contact from Powderdosing.info';
$zprava = $_POST['zprava'] . "From: $_POST['company']";
$uspech = mb_send_mail($adresa, $predmet, $zprava, $hlavicka);
if ($uspech)
{
$hlaska = 'Your message was sent. We will reply as soon as possible.';
header('Location: contact2.php?uspech=ano');
exit;
}
else
$hlaska = 'Email se nepodařilo odeslat. Zkontrolujte adresu.';
}
else
$hlaska = 'Formulář není správně vyplněný!';
}
?>
Co todle pomůže to? Nemusela by se modifikovat hlavička emailu a tu
společnost budeš mít napsanou dole, ovšem myslím si, že když ti bude
psát nějaká společnost (zástupce), tak se ve zprávě podepíše. Nebo se
pletu? 
Aha, dobře. To mé řešení si zkus, mělo by to být něco na tvůj požadavek (trochu jinak řešeno - mail ti přijde "od" té společnosti).
Zobrazeno 8 zpráv z 8.