Cvičenie č.14 – Overenie správnosti vyplnenia formulára

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>";
}
?>

Postup pri práci : Upravte vzorový skript tak, aby spĺňal podmienky úlohy