Pagina de start a forumului Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc
Comunitatea PHP Romania
 

Ce am gresit
Vezi mesajul original

 
       Pagina de start a forumului Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc -> PHP Avansat
Subiectul anterior :: Subiectul următor  
Autor Mesaj
saitek



Data înscrierii: 23/Sep/2007
Mesaje: 452

Trimis: Vin Oct 05, 2007 8:41 pm    Titlul subiectului: Ce am gresit  

Cod:
<?php
function valid_mail($email) {
if (!ereg("{1,64}@{1,255}", $email)) {
return false;
}
$email_array = explode("@", $email);
$local_array = explode(".", $email_array);
for ($i = 0; $i < sizeof($local_array); $i++) {
if (!ereg("^(({0,63})|(\"{0,62}\"))$", $local_array)) {
return false;
}
}
if (!ereg("^\+\?$", $email_array)) {
$domain_array = explode(".", $email_array);
if (sizeof($domain_array) < 2) {
return false;
}
for ($i = 0; $i < sizeof($domain_array); $i++) {
if (!ereg("^(({0,61})|(+))$", $domain_array)) {
return false;
}
}
}
return true;
}
if (valid_mail(strip_tags($_POST))) {
   include "config_mails.php";
$email=$_POST['email'];
$query="INSERT INTO $table (mail) VALUES ('$email')";
if (!mysql_query($query)) {
die(mysql_error());
} else {
echo "Adresa de email a fost adugata in baza de date";
}
} else {
echo "Au aparut erori ne pare rau";
}

mysql_close($conexiune);

?>

Functia nu e facuta de mine da ar trebuii sa mearga,ce am gresit de nu merge :roll:
Sus  
flubber



Data înscrierii: 14/Mar/2006
Mesaje: 238
Locație: Bucuresti

Trimis: Vin Oct 05, 2007 8:49 pm    Titlul subiectului:  

de ce nu folosesti o expresie regulata simpla, like:
http://www.codewalkers.com/c/a/Miscellaneous/Email-Validation-with-PHP/ ?
Sus  
kleampa



Data înscrierii: 10/Iul/2005
Mesaje: 2168
Locație: Bucuresti

Trimis: Vin Oct 05, 2007 10:36 pm    Titlul subiectului:  

Cod: function is_valid($email) {
   if ( !eregi("^[a-z0-9\._-]+@+[a-z0-9\._-]+\.+[a-z]{2,3}$",$email)) return false;
   else return true;
}
Sus  
adix



Data înscrierii: 02/Oct/2007
Mesaje: 123

Trimis: Vin Oct 05, 2007 10:59 pm    Titlul subiectului:  

kleampa a scris: Cod: function is_valid($email) {
   if ( !eregi("^[a-z0-9\._-]+@+[a-z0-9\._-]+\.+[a-z]{2,3}$",$email)) return false;
   else return true;
}

de fapt metoda ta de validare a unui mail e total eronata.
daca de exemplu am un mail pe un domeniu ".name"?

(www) . (ilovejackdaniels) . com/php/email-address-validation/

Aici o metoda completa de a valida un email.
Sus  
carco



Data înscrierii: 27/Mai/2004
Mesaje: 2796
Locație: Bucuresti

Trimis: Sâm Oct 06, 2007 7:43 am    Titlul subiectului:  

eu folosesc pt. validare email urmatoare expresie:
Cod:
$emailRegExp = '/^[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,6}$/i'

adica expresia lui kleampa doar ca tld-ul este acceptat si cu lungimi de 6 caractere (museum)
Cod:
if(preg_match($emailRegExp,$email)) {
    // adresa valida
} else {
   // adresa invalida
}

(o sa rateze persoanele care au bazaconii in adresa de mail, adica x/u]x[.@example.com, dar asta e, n-au avut noroc cei cu adrese "la misto")

Nu are sens nici sa verifici prea mult pt. ca oricum nu poti spune 100% ca adresa este valida (doar daca nu folosesti metoda de "activare", adica trimiti un cod la acea adresa si el il confirma) si atunci faci o verificare doar de forma pentru a evita ca utilizatorul sa scrie _din greseala_ adresa invalida. Daca vrea sa dea o adresa aiurea, o poate face oricum.
Sus  
saitek



Data înscrierii: 23/Sep/2007
Mesaje: 452

Trimis: Sâm Oct 06, 2007 1:33 pm    Titlul subiectului: thx  

Deci in prim-ul rand as vrea sa va multumesc tuturor ca ati ati raspuns,si ca am rezolvat cu functia de aici http://www.ilovejackdaniels.com/php/email-address-validation/ si chiar merge foarte bine :wink: ,eu nu voiam in special sa verific adresa de email da am folosit ca o "chestie" de protectie,sa nu se puna sa faca query-uri aiurea cu ex:"dsadad" totusi asta limiteaza unpic,si am mai scris o functie sa verifice daca adresa de email este unica.
Cod:
<?php
include "config_mails.php";
$email=$_POST['email'];
function email_unic($email) {
global $host, $user, $pass, $dbase, $table;
$connection = @mysql_connect($host,$user,$pass);
@mysql_select_db($dbase);
$query = @mysql_query("SELECT id FROM ".$table." WHERE email='".$email."'",$connection);
if (@mysql_num_rows($query) != 0) {
return true;
} else {
return false;
}
}
function check_email_address($email) {
// First, we check that there's one @ symbol, and that the lengths are right
if (!ereg("^[^@]{1,64}@[^@]{1,255}$", $email)) {
// Email invalid because wrong number of characters in one section, or wrong number of @ symbols.
return false;
}
// Split it into sections to make life easier
$email_array = explode("@", $email);
$local_array = explode(".", $email_array[0]);
for ($i = 0; $i < sizeof($local_array); $i++) {
if (!ereg("^(([A-Za-z0-9!#$%&'*+/=?^_`{|}~-][A-Za-z0-9!#$%&'*+/=?^_`{|}~\.-]{0,63})|(\"[^(\\|\")]{0,62}\"))$", $local_array[$i])) {
return false;
}
}
if (!ereg("^\[?[0-9\.]+\]?$", $email_array[1])) { // Check if domain is IP. If not, it should be valid domain name
$domain_array = explode(".", $email_array[1]);
if (sizeof($domain_array) < 2) {
return false; // Not enough parts to domain
}
for ($i = 0; $i < sizeof($domain_array); $i++) {
if (!ereg("^(([A-Za-z0-9][A-Za-z0-9-]{0,61}[A-Za-z0-9])|([A-Za-z0-9]+))$", $domain_array[$i])) {
return false;
}
}
}
return true;
}
if (email_unic($email)){
if (check_email_address($email)) {
   $query="INSERT INTO $table (mail) VALUES ('$email')";
if (!mysql_query($query)) {
die(mysql_error());
} else {
echo 'Adresa de email a fost adugata in baza de date!';
}
} else {
echo 'Introduceti o adresa de email valida!';
}
} else {
echo 'Adresa de email este deja in baza noastra de date!';
}
mysql_close($conexiune);
?>

again thx :oops:
Sus  
saitek



Data înscrierii: 23/Sep/2007
Mesaje: 452

Trimis: Sâm Oct 06, 2007 2:11 pm    Titlul subiectului:  

Masa acuma am vazut,nu merge cum trebuei mereu zice ca adresa de email este deja in baza de date,ca eu cand am terminat am scris numa mailqmail.com care il avea in database si am vazut ca zice adresa de email este deja in baza de date am zis ca ii ok :lol: da dupa aia am vazut ca nu....incerc sa ii dau de cap,si revin cu edit,sau daca vede cineva undei "buba" sa zica,da cred ca o sa o vada toti.

//offtopic
ca nu o stat nimeni pana la 7 dimineata sa beie o bautura numita "cocktali" care era o amestecatura stupida :))
Sus  
dechim



Data înscrierii: 10/Mai/2005
Mesaje: 700
Locație: Drobeta Turnu Severin

Trimis: Sâm Oct 06, 2007 9:19 pm    Titlul subiectului:  

Incearca sa inlocuiesti :
$query = @mysql_query("SELECT id FROM ".$table." WHERE
email='".$email."'",$connection);
cu :
$query = @mysql_query("SELECT id FROM ".$table." WHERE
email LIKE BINARY '".$email."'",$connection);

Pe de alta parte chestia asta e pleonasm
if (@mysql_num_rows($query) != 0)

mysql_num intoarce numarul de randuri selectate sau FALSE in caz de insucces.
if (@mysql_num_rows($query) )
Poate n-am dreptate dar am incercat!!!
Sus  
PHPRomania Bot
Bot Member


Data înscrierii: 27/Dec/2007
Mesaje: 1
Locaţie: Server Google
Trimis: Mie Dec 26, 2007 7:01 pm   Titlul subiectului: Ad  

Sus  
 
       Pagina de start a forumului Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc -> PHP Avansat
Pagina 1 din 1


Powered by phpBB 2.0.22 © 2001, 2002 phpBB Group
Varianta în limba română: Romanian phpBB online community