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.
Člen
Zobrazeno 8 zpráv z 8.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
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.