Téma: Overenie správnosti vyplnenia formulára
Úloha: Formulár na odosielanie e-mailu s predchádzajúceho cvičenia upravte tak, aby sa pri odosielaní kontrolovala správnosť vyplnenia e-mailovej adresy a predmetu. Taktiež použite jednoduchú protispamovú ochranu pomocou „capcha“.
Podmienky: Vytvorený dokument umiestnite na svoj blog v položke PHP „Zadanie č.13 Odosielanie e-mailu“ ako položku „upravený skript na odosielanie e-mailu“
Teória :
Minule sme sa venovali vytvoreniu formulára pre odoslanie e-mailovej správy. Problémom uvedeného príkladu ale bolo, že údaje v správe nemuseli byť správne vyplnené, ba polia vo formulári mohli byť prázdne a e-mail bol napriek tomu odoslaný. Posielanie nevyplených správ, nesprávne vyplnených alebo posielanie spamu sú však nedovolené a je to potrebné nejako ošetriť. V ďalšom uvádzame niekoľko príkladov ako sa to dá v php kóde ošetriť:
1. Overenie správnosti mailovej adresy
<?php
if (isset($_POST["email"]))
{
if (eregi("^[[:alnum:]][a-z0-9_.-]*@[a-z0-9.-]+\.[a-z]{2,4}$",$_POST['email']))
echo "Zadaný email je OK.";
else
echo "Chybný email!";
}
?>
<FORM ACTION="mail.php" method=post><BR>
Zadajte e-mail: <INPUT type="text" name="email"><br>
<INPUT type="submit" value=" Odoslať ">
</FORM>
inou variantou môže byť tento príklad:
<?php
if ($_POST["email"]!="")
{
if (ereg("^(.+)@(.+)\\.(.+)$", $_POST["email"]))
echo "Zadaný email je OK.";
else
echo "Chybný email!";
}
?>
<FORM ACTION="mail.php" method=post><BR>
Zadajte e-mail: <INPUT type="text" name="email"><br>
<INPUT type="submit" value=" Odoslať ">
</FORM>
2. Overenie či je vypísaný predmet správy a ostatné údaje a jednoduchou antispamovou ochranou tzv. capcha
formulár email.php:
<form action="posli.php" method="post"> <input name="email" size="25" value="Váš@mail"><br> <input name="predmet" size="25" value="Predmet"><br> <input name="spam" size="25"> <strong>= 1 + 1 </strong>[antispam. ochrana, napíš výsledok]<br> <textarea name="sprava" rows="6" cols="55">Správa...</textarea><br> <input type="submit" value="Odoslať"> </form>
skript posli.php:
<?php
$predmet = $_POST['predmet'];
$email = $_POST['email'];
$spam = $_POST['spam'];
$sprava = $_POST['sprava'];
if ($predmet != "" and $email != "" and $sprava != "" and $spam == "2")
{
Mail("mkrupa@epu.sosthe.sk", $predmet, $sprava, "From: ". $email);
echo "<p><strong>Váš e-mail bol úspešne odoslaný</strong></p>";
}
else
{
echo "<p>Váš e-mail sa <strong>nepodarilo odoslať!</strong> Pravdepodobne ste nevyplnili všetky údaje, alebo neviete koľko je 1 + 1</p>";
}
?>
