 |
Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc Comunitatea PHP Romania
|
| Subiectul anterior :: Subiectul următor |
| Autor |
Mesaj |
saitek
Data înscrierii: 23/Sep/2007
Mesaje: 450
|
| 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: 237
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: 2127
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: 450
|
| 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: 450
|
| 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: 656
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 |
|
| |
|