[ tigarrrrr @ 28.01.2007. 16:10 ] @
Znam da ce nekima da se podigne kosa na glavi kad procitaju ali moram pitat,procito sam dosta o validaciji e-maila ali nikako da proradi a gori mi pod nogama,tri dana trazim i oprobavam i nista.
Naime imam kod za slanje e-maila i on radi ali bih hteo da mi proveri jeli posiljalac upisao sve jer ovako je dovoljno da samo stisne posalji i ja dobijem praznu meil,
Evo kod:

EMAIL.PHP :
<html>
<head>
<title>..:: Kontakt Forma ::..</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css">
<!--
.form {
font-family: "Times New Roman", Times, serif;
font-size: 12px;
background-color: #ECE9D8;
}
body {
background-image: url(../bilder/higru.gif);
}
-->
</style>
</head>

<body>
<div align="center">
<form name="form1" method="post" action="send.php">
<table width="62%" border="0" cellspacing="2" cellpadding="2">
<tr>
<td width="31%">Name:</td>
<td width="69%"><input name="ime" type="text" class="form" id="ime" size="30"></td>
</tr>
<tr>
<td>Email:</td>
<td><input name="email" type="text" class="form" id="email" size="30"></td>
</tr>
<tr>
<td>Nachricht:</td>
<td><textarea name="komentar" cols="50" rows="5" class="form" id="komentar"></textarea></td>
</tr>
<tr>
<td colspan="2"><div align="center">
<input name="send" type="submit" class="form" id="send" value="Senden!" onClick="alert('E-Mail senden.??');">
</div></td>
</tr>
</table>
</form>
</div>
</body>
</html>


SEND.PHP :
<?php
$name = $_REQUEST['ime'];
$email = $_REQUEST['email'];
$komentar = $_REQUEST['komentar'];

$tvemail = "[email protected]";
$subject = "..:: frage von Homepage ::..";

mail($tvemail,$subject,"
..:: frage von Homepage ::..
Name: ".$ime."
Email: ".$email."
Nachricht:".$komentar."
--------------------------
By web") or die("<br />
emails nicht gesendet.!!!<br />
");
echo "<font color='green'>e-mail <b>erfolgreich gesendet.</b></font>";
?>

Inace sam i ovo nasao na ovom forumu :-)
Ako je neko raspolozen da mi samo mi samo pokaze ili napise kod za validaciju (ja jos nisam toliko naucio) bio bih mu punoo zahvalan.
Pozdrav.
[ centaur @ 28.01.2007. 16:24 ] @
Funkcija koja proverava da li je email adresa pravilno formatirana:
Code:

function checkmail($email)
{
$mailsampe="^[a-zA-Z0-9\.\-\_]+@[a-zA-Z0-9\-]+\.[a-zA-Z0-9\.\-]+$";
      if (ereg($mailsampe,$email))
        {
            return true;
        }else{
            return false;
        }
}


A ovo je vec trivijalno:

Code:

if ($ime=="" or $komentar=="" or $email=="")
  {
    //radi nesto jer uslov nije ispunjen
  }

 if (checkmail($email)===true)
   {
     //Salji mail
    }else{
    //Ne salje mail jer email nije lepo formatiran
   }


Sve ovo je napisano iz glave i nije provereno!!!

[Ovu poruku je menjao centaur dana 28.01.2007. u 19:15 GMT+1]
[ Mr. Jack @ 28.01.2007. 20:12 ] @
> $mailsampe="^[a-zA-Z0-9.-_]+@[a-zA-Z0-9-]+.[a-zA-Z0-9.-]+$";

Ova provera se nije bas proslavila imao sam problema s njom npr
[email protected] ne prolazi a adresa je validna.

sa ovom proverom nikad nisam imao problema:

Code:

function email_ok($email)
{
    if(!eregi("^[[:alnum:]][a-z0-9_.-]*@[a-z0-9.-]+.[a-z]{2,6}$",$email))
    {
        return false;
    }
    return true;
}


Neka posalje jos neko ako ima pouzdanu proveru za e-mail.
[ centaur @ 28.01.2007. 20:48 ] @
Hm,pa ovoj tvojoj (moja defiinitvno nije OK) bi mogla da se doda provera da li postoji MX record za dati host.
Recimo nešto ovako:
Code:

$emailhost=explode('@',$email);
$host=$emailhost[1];
if (!getmxrr($host,$mxhosts))
{
   //Ne postoji MX zapis
}else{
//Postoji MX zapis (nalazi se u nizu $mxhosts)
}


Link ka funkciji:http://www.php.net/manual/en/function.getmxrr.php
[ Mr. Jack @ 28.01.2007. 21:16 ] @
> Hm,pa ovoj tvojoj (moja defiinitvno nije OK) bi mogla da se doda
> provera da li postoji MX record za dati host.

nisam bas siguran da je ta provera dobra ideja, procitaj 'note' u php manual-u za funkciju getmxrr.
[ centaur @ 28.01.2007. 22:14 ] @
Zato sam i ostavio link ka funkciji.Pa ko voli...
[ glavince @ 28.01.2007. 22:34 ] @
eregi("^[A-Z0-9._%-]+@[A-Z0-9._%-]+\.[A-Z]{2,6}$", $email)
to znaci min :
2 karaktera @ 2 karaktera . dva slova
[ Miroslav Ćurčić @ 28.01.2007. 23:20 ] @
Pokupio sam s nekog foruma:
Code:
/^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/

nisam nešto mnogo testirao ali zasad radi.
[ Jbyn4e @ 29.01.2007. 08:24 ] @
Ja sam na jednom mestu koristio checkdnsrr da bih proverio da li mail ima svoj mail server (odgovarajuci MX record), a mislim da je to bio primer cak na www.php.net kod te funkcije (http://www.php.net/checkdnsrr)
Kod je ovako:
Code:

list($nista, $mailDomain) = split("@", $_POST['Email']);
// izvlaci mail domen
if (!checkdnsrr($mailDomain.".", "MX")) {
echo "Neispravan e-mail.";
exit;
}
// ako nema tog MX recorda, znaci da ne postoji mail ...


[ 357_97 @ 29.01.2007. 10:12 ] @
Ne bas skoro sam nasao sam ovaj site gde je moguce proveriti validnost e-mail-a ali ne pomocu reg. izraza vec se proverava da li e-mail adresa uopste postoji... Ono sto me je malo razocaralo je to sto nema nekog detaljnijeg objasnjenja, koje se sve adrese mogu proveriti i kako celi sistem funkcionise, tako da je to vise kao crna kutija. Cackajuci to provalio sam da adrese tipa [email protected] nemogu proveri! Stoga ko zeli neka se igra sa ovim.
[ tigarrrrr @ 29.01.2007. 10:38 ] @
Hvala svima na odgovorima,moj meil proradio sa code od "centaur"
Naravno ako neko ima jos kakvih tehnika neka napise ;-)
[ Miroslav Ćurčić @ 29.01.2007. 12:05 ] @
Ne nude svi mail serveri mogućnost provere dali postoji konkretan registrovan user.
Zato se ne koristi takva provera tipa "e-mail adresa uopste postoji".
[ mika @ 30.01.2007. 10:43 ] @
A što razvijate sopstvenu skriptu kada već postoji gotova funkcija za to:

http://www.php.net/manual/en/function.filter-var.php

Code:

$emailAddress="[email protected]

if(filter_var($emailAddress, FILTER_VALIDATE_EMAIL) == FALSE) {  

   //Throw new exception

} else {

   //valid email address
}
[ Miroslav Ćurčić @ 30.01.2007. 15:22 ] @
Zato što: "Call to undefined function: filter_var()"

Koliko sam skont´o ova funkcija postoji tek od verzije 5.2.
Inače, bar po manualu, zanimljiva funkcija.
[ vladimirn @ 01.02.2007. 15:23 ] @
Code:

$adresa = $_REQUEST['email'];
$p = '/^[a-z0-9!#$%&*+-=?^_`{|}~]+(\.[a-z0-9!#$%&*+-=?^_`{|}~]+)*';
$p.= '@([-a-z0-9]+\.)+([a-z]{2,3}';
$p.= '|info|arpa|aero|coop|name|museum|com|net|edu|org)$/ix';

$ispravanMail= preg_match($p, $adresa);
              
if ($ispravanMail) {
//radi nesto
} else {
//radi nesto drugo
}


Evo ja to ovako radim.
[ tigarrrrr @ 03.02.2007. 13:08 ] @
Video sam na netu da neki postavljaju pre slanja e-maila da se upisu nekakvi brojevi to je koliko sam ja skapiro kao generator koji svaki put kad se stranica ucita daje druge brojeve i moze se mail poslat samo ako se pravilno upisu ti brojevi,u cemu je fora,zasto je to bitno?
[ Nemanja Avramović @ 03.02.2007. 14:04 ] @
Google: "CAPTCHA"
http://en.wikipedia.org/wiki/Captcha