Bonjour tout le monde
Je suis en train de développer un système pour vérifier si le login et une adresse email ou un pseudo pour un site.
j'ai bien lu le cours Validation d'adresse e-mail en PHP
Ensuite j'ai adopté cette fonction à mon besoin!
Le problème c que le premier résultat est fausse et reste c bon !!
Voici mon code avec les commentaires.
Tout d'abord la fonction: retourne la bonne clause Where pour une requete SELECT avec cette façon :
- si le login et un email => USER_EMAIL ='".$elogin."' AND PASSWORD LIKE '".$epass."' AND ID_STAT=1
-si c'est un pseudo => USERNAME ='".$elogin."' AND PASSWORD LIKE '".$epass."' AND ID_STAT=1 AND CREATED_TSTAMP < '".$dt_ancien_ins."'
avec $dt_ancien_ins une date.
ensuite le traitement de l'affichage et enfin le résultat avec le problème mentioné en rouge.
PS: Je joins un petit fichier pour l'exemple
mes echo
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 function getClauseByloginType ($elogin,$epass,$dt_ancien_ins) { $atom = '[-a-z0-9!#$%&\'*+\\/=?^_`{|}~]'; // caractères autorisés avant l'arobase $domain = '([a-z0-9]([-a-z0-9]*[a-z0-9]+)?)'; // caractères autorisés après l'arobase (nom de domaine) $regex = '/^' . $atom . '+' . // Une ou plusieurs fois les caractères autorisés avant l'arobase '(\.' . $atom . '+)*' . // Suivis par zéro point ou plus // séparés par des caractères autorisés avant l'arobase '@' . // Suivis d'un arobase '(' . $domain . '{1,63}\.)+' . // Suivis par 1 à 63 caractères autorisés pour le nom de domaine // séparés par des points $domain . '{2,63}$/i'; // Suivi de 2 à 63 caractères autorisés pour le nom de domaine // test de l'adresse e-mail if (preg_match($regex, $elogin)) { return " USER_EMAIL ='".$elogin."' AND PASSWORD LIKE '".$epass."' AND ID_STAT=1 "; } else { return " USERNAME ='".$elogin."' AND PASSWORD LIKE '".$epass."' AND ID_STAT=1 AND '".$dt_ancien_ins."'"; } }//End getCaluseByLoginType
Voici le resultat remarquer le premier result en rouge !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 $dt_ancien_ins = "2012-12-18"; $email1 = "isemail1@yahoo.fr "; $email2 = "isemail2@yahoo.fr"; $email3 = "isemail1_3@hotmail.fr"; $email4 = "isemail1.isemail1.isemail1@gmail.com"; $email5 = "isemail1-3@ochan"; $login1 ="log_in1"; $login2 ="log.in2"; ; $login3 ="cfr.com"; $v = getClauseByloginType($email1,"",$dt_ancien_ins); echo $v."<br /> <br /> <br />"; $v1 = getClauseByloginType($email2,"",$dt_ancien_ins); echo $v1."<br /> <br /> <br />"; $v2 = getClauseByloginType($email3,"",$dt_ancien_ins); echo $v2."<br /> <br /> <br />"; $v3 = getClauseByloginType($email4,"",$dt_ancien_ins); echo $v3."<br /> <br /> <br />"; $v4 = getClauseByloginType($email5,"",$dt_ancien_ins); echo $v4."<br /> <br /> <br />"; $v5 = getClauseByloginType($login1,"",$dt_ancien_ins); echo $v5."<br /> <br /> <br />"; $v6 = getClauseByloginType($login2,"",$dt_ancien_ins); echo $v6."<br /> <br /> <br />"; $v7 = getClauseByloginType($login3,"",$dt_ancien_ins); echo $v7."<br /> <br /> <br />"; exit();
merci bien en avance.USERNAME ='isemail1@yahoo.fr ' AND PASSWORD LIKE '' AND ID_STAT=1 AND '2012-12-18'
USER_EMAIL ='isemail2@yahoo.fr' AND PASSWORD LIKE '' AND ID_STAT=1
USER_EMAIL ='isemail1_3@hotmail.fr' AND PASSWORD LIKE '' AND ID_STAT=1
USER_EMAIL ='isemail1.isemail1.isemail1@gmail.com' AND PASSWORD LIKE '' AND ID_STAT=1
USERNAME ='isemail1-3@ochan' AND PASSWORD LIKE '' AND ID_STAT=1 AND '2012-12-18'
USERNAME ='log_in1' AND PASSWORD LIKE '' AND ID_STAT=1 AND '2012-12-18'
USERNAME ='log.in2' AND PASSWORD LIKE '' AND ID_STAT=1 AND '2012-12-18'
USERNAME ='cfr.com' AND PASSWORD LIKE '' AND ID_STAT=1 AND '2012-12-18'
cette fontion ma rendu fou ce matin
Partager