a remplacer par
Code : Sélectionner tout - Visualiser dans une fenêtre à part $error = $e->message;
Code : Sélectionner tout - Visualiser dans une fenêtre à part $error = $e->getMessage()
a remplacer par
Code : Sélectionner tout - Visualiser dans une fenêtre à part $error = $e->message;
Code : Sélectionner tout - Visualiser dans une fenêtre à part $error = $e->getMessage()
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework - Cours et tutoriels pour apprendre PHP - Forum PHP
apres plusieur test je peut dire que ca fonctionne pas mal
le seul truc c'est si je met
ca me retourne une true alors que c'est un champs qui n'est pas obligatoire
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 $verif_rue_maccess = Mols_Verif_Form('#^[a-z0-9 ]+$#i', false, $rue_maccess, $rue_maccess); $erreur .= $verif_rue_maccess;
et pour les champs password
quoi que je fasse
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 $verif_pwd_maccess = Mols_Verif_Form('#^[a-z0-9]+$#i', true, $pwd_maccess, $pwd_maccess); $erreur .= $verif_pwd_maccess; echo $verif_pwd_maccess; $verif_confirmation_pwd_maccess = Mols_Verif_Form('#^[a-z0-9]+$#i', true, $confirmation_pwd_maccess, $confirmation_pwd_maccess); $erreur .= $verif_confirmation_pwd_maccess;
ex : mon*mot-depasse/
ba ca me retourne la valeur comme si il n'y avais eu aucun test.
Merci encore bcp ..
Il nous manque la version actuelle de ta fonction.
Cela me dérange un peu de faire un try d'un throw explicite... Je n'en vois pas l'intérêt :/
Tu peux avoir le même résultat (gestion d'erreurs) avec un if/else classique.
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework - Cours et tutoriels pour apprendre PHP - Forum PHP
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 function Mols_Verif_Form($regex, $forced, $content, $error=NULL) { // Par défaut la valeur de retour est le contenu lui même $return = $content; // On va essayer plusieurs tests. try { if( empty($content) && $forced ) throw new Exception('Variable Vide'); if( ! preg_match($regex, $content) ) throw new Exception('Ne correspond pas'); } // Si on capture une erreur catch(Exception $e) { // La valeur de retour sera alors TRUE $return = TRUE; $error = $e->getMessage(); } return $return; }
Note que le paramètre $error n'est pas en entrée-sortie donc tu n'auras jamais de retour à ce niveau.
Si tu as un gestionnaire d'exceptions, alors il est possible que tu ne voies pas de problème en effet.
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework - Cours et tutoriels pour apprendre PHP - Forum PHP
j'ai mis un try catch d'un throw explicite pour eviter d'avoir 3 ou 4 niveau de if ou d'etre obligé de faire 50 return dans une fonction.
Une fonction possède 1 entrée et 1 sortie.
Pour ce qui est du "$error", je te rappel mon cher Responsable PHP que php5 passe les parametres en référence et non en copie (contrairement à php4) donc $error est en entrée autant qu'en sortie.
Pour ce qui est du "variable forcée", remplace
par
Code : Sélectionner tout - Visualiser dans une fenêtre à part if( ! preg_match($regex, $content) )
Tu dit que pour le mot de passe par exemple, il ne te fait aucune vérification ? avec la regex
Code : Sélectionner tout - Visualiser dans une fenêtre à part if( ! preg_match($regex, $content) && $forced )
et en mot de passe
Code : Sélectionner tout - Visualiser dans une fenêtre à part #[a-z]+#
il te retourne pas d'erreur ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part toto674959-_-/
Et désolé pour le $e->message, je sais pas ce que j'ai parfois j'enchaine les boulettes ^^
Pour mon cher Yogui, compare ces 2 codes et dit moi lequel est le plus propre à ton avis
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
28
29 if( !empty($variable) ) { if( ! strpos('@', $variable) ) { if( preg_match('#^[a-z0-9]+$#i', $variable) ) { if( !empty($tableau[$variable) ) { echo($tableau[$variable]); } else { echo('erreur indice tableau invalide'); } } else { echo('erreur alphanumérique non respecté'); } } else { echo('erreur arobase'); } } else { echo('erreur variable vide'); }Pour ma part je trouve le premier un peu trop... paysage de montagne... Je préfaire la plaine du second...
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
28 try { if( empty($variable) ) { throw new Exception('erreur variable vide'); } if( strpos('@', $variable) ) { throw new Exception('erreur arobase'); } if( !preg_match('#^[a-z0-9]+$#i', $variable) ) { throw new Exception('erreur alphanumérique non respecté'); } if( empty($tableau[$variable) ) { throw new Exception('erreur indice tableau invalide'); } echo($tableau[$variable]); } catch(Exception $e) { echo( $e->getMessage() ) }
Regardes ce code :Pour ce qui est du "$error", je te rappel que php5 passe les parametres en référence et non en copie (contrairement à php4) donc $error est en entrée autant qu'en sortie.
ca donne
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 <?php function test($inparam) { $inparam = 4; } $test = 2; echo "Test avant : $test <br/>"; test($test); echo "Test apres : $test"; ?>
Test avant : 2
Test apres : 2
Les objets sont passés en référence depuis PHP5, mais pas toutes les variables... Merci pour la démo koopajah
Sinon en effet, c'est intéressant comme technique mais si le développeur a mis en place une gestion automatique des exceptions, ton système tombe à l'eau.
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework - Cours et tutoriels pour apprendre PHP - Forum PHP
Je comprends pas pourquoi la? Le gestionnaire qui catche l'exception c'est de toute facon le tout premier catch() rencontré, donc quel que soit le système d'exception placé a plus haut niveau ca n'interferera pas du tout avec ces exceptions là.
D'ailleurs Korko Fain tu pourrais meme te faire ta propre classe d'exception qui serait capable de stocker le pattern utilisé a ce moment la, la chaine surlaquelle le pattern était appliqué, faire des logs, etc etc. Ca te permettrait en plus de ne catcher QUE les exceptions que tu as définie sans toucher aux autres (ce dont parle peut etre Yogui?)
Oui non rien, je me suis embrouillé tout seul.
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework - Cours et tutoriels pour apprendre PHP - Forum PHP
ca fonctionne presque nikel
sauf que lorsque je met
f
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 unction Mols_Verif_Form($regex, $forced, $content, $error=NULL) { // Par défaut la valeur de retour est le contenu lui même $return = $content; // On va essayer plusieurs tests. try { if( empty($content) && $forced ) throw new Exception('Variable Vide'); if( ! preg_match($regex, $content) && $forced ) throw new Exception('Ne correspond pas'); } // Si on capture une erreur catch(Exception $e) { // La valeur de retour sera alors TRUE $return = TRUE; $error = $e->getMessage(); } return $return; }et que $prenom_maccess = 'dsfsdfdsàfds-/dsf';
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 $verif_prenom_maccess = Mols_Verif_Form('#^[a-z]+$#i', false, $prenom_maccess, $prenom_maccess); $erreur .= $verif_prenom_maccess;
ca ne me retroune pas d'erreur
Dsl et encore merci
Sinon vous m'avez l'air d'etre des bon ouf, j'ai du mal a tout comprendre ce que vous avez mis mais bon
en tous cas mille merci
tu as mis forced à false ^^
Oui bon ok juste les objets alors ^^
Bon alors juste devant ça :
Mais alors juste devant tu rajoute un
Code : Sélectionner tout - Visualiser dans une fenêtre à part $error=NULL
&
Ce qui te donne
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 function Mols_Verif_Form($regex, $forced, $content, &$error=NULL) { // Par défaut la valeur de retour est le contenu lui même $return = $content; // On va essayer plusieurs tests. try { if( empty($content) && $forced ) throw new Exception('Variable Vide'); if( ! preg_match($regex, $content) && $forced ) throw new Exception('Ne correspond pas'); } // Si on capture une erreur catch(Exception $e) { // La valeur de retour sera alors TRUE $return = TRUE; $error = $e->getMessage(); } return $return; }
il passe a l'as en faisant $prenom = 'fdsfdsé"')à';
en ete a false
sinon en true y'a pas de prob
Merci les gars pour votre aide
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager