»Korisnik: »Password:   Zapamtime? 
Forum HOME / WEB PROGRAMIRANJE / PHP i MySQL / Izrada mejl forme
Objavljeno:  09 Feb 2010 03:08
Mejl forme su jako korisne za mnoge vrste sajtova. Nekim sajtovima je bitno da posetilac koji zli da ih kontaktira napise neke podatke o sebi, ili da odgovori na neka pitanja pre nego im posalje pitanje, ili poruku koju zeli da im posalje. Ako samo ostave mejl posetilac im onda ne bi odgovorio na neka ptanja koja su tom sajtu bitna.

U nastavku cu dati jednu prostiju mejl formu:
Code:

<html><head>
<title>mejl forma</title>
<script type=text/javascript>
count = "1000";
function limiter(){
     tex = document.myform.poruka.value;
     len = tex.length;
     if (len > count){
          tex = tex.substring(0,count);
         document.myform.comment.value =tex;
         return false;
     }
    document.myform.limit.value = count - len;
}
</script>
</head><body>
<?
$greska=$_GET['g'];
switch ($greska) {
  case 1:
    echo 'Izvinite doslo je do greske u programu, pokusajte ponovo.<br><br>';
  break;
  case 2:
    echo 'Greska! Morate popuniti sva polja da bi poruka bila poslata.<br><br>';
  break;
  case 3:
    echo 'Greska! Predugacko ime i przime ili naslov, ili pogresan znak.<br><br>';
  break;
  case 4:
    echo 'Predugacka poruka. Molimo unesite manju poruku.<br><br>';
  break;
  case 5:
    echo 'Greska. Pogresno ste napisali mejl.<br><br>';
  break;
}
if (!$_POST['submit']){
  echo '<form name="myform" method="POST" action="">
    <p>Ime i prezime: <input type="text" name="ime" size="20" MAXLANGTH="36"></p>
    <p>Upisi svoj mejl: <input type="text" name="mejl" size="20"></p>
    <p>Naslov poruke: <input type="text" name="naslov" size="20" MAXLANGTH="100"></p>
    <p>Poruka:<br>
    <textarea rows="6" name="poruka" cols="55" onkeyup=limiter()></textarea><br>
        Preostali znaci: <input type=text name=limit size=4>
        </p>
    <p><input type="submit" value="Posalji" name="submit">
    <input type="reset" value="Reset">
    </p>
  </form>
  </body></html>';
}else{
  $ime=$_POST['ime'];
  $mejl=$_POST['mejl'];
  $naslov=$_POST['naslov'];
  $poruka=strip_tags($_POST['poruka']);
  if (!$ime or !$mejl or !$naslov or !$poruka) {
      header ("location: mejlforma.php?g=2");
      exit;
  }
  if (!preg_match("/^[a-zA-Z ]{6,36}$/", $ime) or !preg_match("/^[a-zA-Z ,]{6,36}$/", $naslov)){
      header ("location: mejlforma.php?g=3");
      exit;
  }
  if (strlen($poruka)>1000){
      header ("location: mejlforma.php?g=4");
      exit;
  }
  if (!filter_var($mejl, FILTER_VALIDATE_EMAIL) or strlen($mejl) > 60){
      header ("location: mejlforma.php?g=5");
      exit;
  }
  $mail_header='From: '.$ime."\r\n".'Reply-To: '.$mejl."\r\n".'X-Mailer: PHP/'.phpversion();
  $mail_header=$mail_header."Content-Type: text/html; charset=utf-8;\n\n\r\n";
  if (@mail ('[email protected]', $naslov, $poruka, $mail_header)) echo 'Poruka je uspesno poslata';
  else header ("location: mejlforma.php?g=1");
}
?>

Ovde imamo znaci jednu uprosceniju formu. Da bi se ova forma mogla beybedno primenjivati neophdno je jos dodati zastitu od slanja prevelikog broja poruka u vrlo kratkom vremenskom periodu. To se moze uraditi na primer ubacivanjem KAPCHA ili drugi, koji se u zadnje vreme sve vise praktikuje a to je onemogucavanje sa jedne IP adrese da se recimo u roku od 2 minuta, ili minut itd, posalje samo jedna poruka.

Takodje moze se ovde ubaciti mogucnost da ako na primer slucajno posetilac upise pogresno nesto u polju, kad mu se javi greska da ne mora opet sve iz pocetka ponovo pisati i ono sto je dobro napisao, vec samo ono sto nije. Takodje moze da se jos unapredi vizuelno doterivanje forme koriscenjem na primer CSS elemenata, itd

Svako ko hoce moze se ukljuciti u jos vecem usavrsavanju ovog koda kako bi smo dobili jednu savrsenu mejl formu.