WebNews.cz - počítače, komunikace, mobily, internet, finance

Mapa serveru | Administrace

Odeslání libovolného formuláře e-mailem (2.)

Michal Terč - Profil - 18.06.2001
Pokračování článku detailně popisujicí odeslání libovolného HTML formuláře na váš e-mail pomocí PHP. V tomto díle je popsána kontrola na vyplnění povinných údajů.

V minulém díle jsme si vytvořili základní skript pro odesílání libovolného formuláře e-mailem. Jak jste si ale mohli všimnout, ve skriptu nebyla žádná kontrola na jeho vyplnění, což umožňuje návštěvníkovi našich stránek odeslat formulář nevyplněný. Proto dnes náš skript rozšíříme o možnost kontroly vyplnění povinných polí.

Ve skriptu jsme začínali názvy prvků, které mají být vypsány v těle mailu, znakem #. Pro povinná pole zavedeme syntaxi, že jejich název bude začínat znakem @ (samozřejmě můžeme zvolit jakýkoliv jiný). Část skriptu pro kontrolu vyplnění povinných polí pak bude vypadat takto:

// kontrola, zda jsou vyplněny povinné parametry
if (!$komu) $errlist .= ", Komu";
if (!$email) $errlist .= ", Email";

while (list($promenna, $hodnota) = each($HTTP_POST_VARS))
{
if ((substr($promenna, 0, 1) == "@") && ($hodnota == ""))
$errlist .= ", " . substr($promenna, 1);
}

// pokud nejsou vyplněny povinné parametry
if ($errlist)
{
echo "<font size=\"6\"><b>Chyba!</b></font>";
echo "<p>Nejsou vyplněny všechny požadované údaje:<br>";
echo "<b>".substr($errlist, 1)."</b></p>";
echo "<p><a href='javascript:history.go(-1)'>Zpět</a></p>";
exit; // ukončíme zpracování scriptu
}

Část pro sestavení těla mailu se pak změní následovně:

// projdeme všechny přijaté parametry
$telo = "Email: $email\n";
reset($HTTP_POST_VARS);
while (list($promenna, $hodnota) = each($HTTP_POST_VARS))
{
// nahradíme konce řádků znakem \n
$hodnota = str_replace(chr(13) . chr(10), "\n", $hodnota);
$hodnota = str_replace(chr(10) . chr(13), "\n", $hodnota);
$hodnota = str_replace(chr(13), "\n", $hodnota);
$hodnota = str_replace(chr(10), "\n", $hodnota);

// pokud parametr začíná na # nebo @, tak zapsat hodnotu do textu mailu
if (((substr($promenna, 0, 1) == "@") || (substr($promenna, 0, 1) == "#")) && ($hodnota != ""))
{ $telo .= substr($promenna, 1) . ": $hodnota\n"; }
}

Zbytek skriptu už zůstane stejný. V příštím díle si povíme, jak odeslat formulář e-mailem ve formátu HTML.

Na výsledek našeho snažení se můžete podívat zde.


Kompletní zdrojové soubory příkladu - sendform.zip (4 kB)
Základní include využité v příkladu - inc.zip (7 kB)

Tisk článku - Poslat článek - (4561 zobrazení)
Redakce | | | ISSN 1213-9335 | © 2005 Developed by terc.cz