Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
bonjour
je viens de tester l'ajout d'un nouveau utilisateur
il faux que le mot de passe soit vérifier et tout les champs sont remplis ça c'est fais
/*apres le getpost de ces variable*/ if ($nom != '' && $login != '' && $pwd != '' && $pwd2 != '' && $service != ''&& $droit!='') /*test sur le remplissage des champs { if($pwd !=$pwd2)///verification de mot de passe { echo"Verifiez les donnees entreés : mot de passe non identique!!"; } else {///ajout $data = array( 'nom' => $nom, 'login' => $login, 'pwd' => $pwd, 'num_serv' =>$service, 'droit' => $droit, ); $util = new Utilisateur(); $util->insert($data); $this->_redirect('/'); return; } } else///les champs ne sont pas remplis { echo" Vous devez remplir tous les champs !"; } }
maintenent je veux que le mot de passe soit unique pour chaque utilisateur ainsi que le login
j'ai creer une requete qui comporte le login et le pwd de table utilisateur
$infos="SELECT login,pwd FROM `consultation1`.`utilisateur` "; $this->infos = $GLOBALS['db']->fetchAll($infos);
puis dans mon test j'ai ajouter au code precedent
if ($nom != '' && $login != '' && $pwd != '' && $pwd2 != '' && $service != ''&& $droit!='') /*test sur le remplissage des champs { if($pwd !=$pwd2)///verification de mot de passe { echo"Verifiez les donnees entreés : mot de passe non identique!!"; foreach($this->infos as infos) { if(info['login']==$login || infos['pwd']==$pwd) echo " login ou mot de passe existant"; }endforeach } else { {///ajout $data = array( 'nom' => $nom, 'login' => $login, 'pwd' => $pwd, 'num_serv' =>$service, 'droit' => $droit, ); $util = new Utilisateur(); $util->insert($data); $this->_redirect('/'); return; } } else///les champs ne sont pas remplis { echo" Vous devez remplir tous les champs !"; } }
ce code génère une erreur de if et else???
et est ce que je peux faire foreach comme que j'ai écris ???
merci de m'aider
Hors ligne
il y a un erreur dans le foreach et aussi dans le if.
foreach($this->infos as $info) { if($info['login']==$login || $info['pwd']==$pwd) echo " login ou mot de passe existant"; }
Dernière modification par fizzbanana (01-04-2008 14:09:26)
Hors ligne
Ton code ne veut strictement rien dire, y a des erreurs de partout,
Ca commence par un commentaire "/*test sur le remplissage des champs" qui n'est pas fermé, donc tout ton code est commenté
Donc déja à partir de la deuxieme ligne ça risque pas d'être interprété .
- Des double crochets ouvrants.
else { {///ajout
Un foreach traité n'importe comment (correction ci dessous)
foreach($this->infos as $info) { if($info['login']==$login || $info['pwd']==$pwd) echo " login ou mot de passe existant"; }//endforeach
Le pire c'est
else { {///ajout $data = array( 'nom' => $nom, 'login' => $login, 'pwd' => $pwd, 'num_serv' =>$service, 'droit' => $droit, ); $util = new Utilisateur(); $util->insert($data); $this->_redirect('/'); return; } } else///les champs ne sont pas remplis { echo" Vous devez remplir tous les champs !"; } }
C'est stictement incompréhensible, essaye d'abord de faire un code propre indenté, de ne pas ouvrir de crochet n'importe quand et n'importe ou.
Bref impossible de t'aider avec ton code .
Concernant l'utilité de ton code, c'est du n'importe quoi d'interdire d'utiliser le mot de passe d'un autre, c'est inimaginable de pouvoir penser faire un truc pareil!
Pour le pseudo ok ! mais vérifier l'existance du mot de passe est une abération !
Encore "de plus" , tu charges complètement un tableau avec tous les user/mdp en mémoire juste pour tester si le mdp/user entré existe déja!
Tu ne penses pas qu'il serait mieux de faire en SQL :
Select count(*) from matable where motdepasse = mot_depasse_entré OR login=login_entré
Si ça te retourne plus de 1, c'est que l'un des deux existe déja ! Pas la peine de parser toute la table en php , le SQL est la pour ça!
Bref ...
Dernière modification par sebondus (01-04-2008 13:45:19)
Hors ligne
merci de tes remarque c'est que j'ai ecrit n'est pas actuellement dans mon controllers car je l'est tester et je l'ai effacer je l'ai réécris sur le forum directement tu as raison il y a des fautes désolé j' ai été pressée
ok je suis convaincue pour le mot de passe
maintenant je vais tester sur le login et je vais exécuter ta requête pour le login et non le mot de passe . et je vais voir le resultat
merci encore et désolé encore:D
Hors ligne
Ne sois pas désolé
Hors ligne
salut
j'ai un probleme voici ma requete
$infos="Select count(*) from `consultation1`.`utilisateur` where login ='".$login."' "; $this->infos = $GLOBALS['db']->fetchAll($infos);
mais je ne sais pas comment recuperer le resultat de cette requet dans une variable pour la tester est ce que c'est >1 ou non comment attribuer le resultat à un evariable???
merci de m'aider
Hors ligne
$select = $GLOBALS['db']->select() ->from(`consultation1`.`utilisateur`, array('nombre_meme_login' => 'COUNT(*)')) ->where('login=?', $login); $stmt = $select->query(); $result = $stmt->fetchAll();
http://framework.zend.com/manual/fr/zend.db.select.html
Dernière modification par sebondus (01-04-2008 14:45:50)
Hors ligne
big merci sebondus
merci beaucoup sa marché bien maintenant je ne peux pas ajouter deux utilisateurs qui on le meme login merci encore
Dernière modification par yosra (01-04-2008 14:58:18)
Hors ligne
voici ma fonction complete et sans faute et marche
$util = new Utilisateur(); if ($this->_request->isPost()) { Zend_Loader::loadClass('Zend_Filter_StripTags'); $filter = new Zend_Filter_StripTags(); $nom = $filter->filter($this->_request->getPost('nom')); $nom= trim($nom); $login = trim($filter->filter($this->_request->getPost('login'))); $pwd = trim($filter->filter($this->_request->getPost('pwd'))); $pwd2 = trim($filter->filter($this->_request->getPost('pwd2'))); $service = trim($filter->filter($this->_request->getPost('serv'))); $droit = trim($filter->filter($this->_request->getPost('droit'))); ////////***Les test**////////// $select = $GLOBALS['db']->select() ->from(`consultation1`.`utilisateur`, array('nombre_meme_login' => 'COUNT(*)')) ->where('login=?', $login); $stmt = $select->query(); $result = $stmt->fetchAll(); if ($nom != '' && $login != '' && $pwd != '' && $pwd2 != '' && $service != ''&& $droit!='') { if($pwd !=$pwd2 ) echo"Verifiez les donnees entreés : mot de passe non identique!!"; else if ($result >1) echo "Login existant"; else { $data = array( 'nom' => $nom, 'login' => $login, 'pwd' => $pwd, 'num_serv' =>$service, 'droit' => $droit, ); $util = new Utilisateur(); $util->insert($data); $this->_redirect('/'); return; } } else { echo" Vous devez remplir tous les champs !"; } } // set up an "empty" fournisseur $this->view->utilisateur = $util->createRow();; // additional view fields required by form $this->view->action = 'ajouterutil'; $this->view->buttonText = 'Ajouter'; }
Dernière modification par yosra (01-04-2008 15:12:57)
Hors ligne
if ($result >1)
Ca veut dire que s'il est = 1 , ça passe alors que le login existe ...
Hors ligne
si j'ai compris c'est que tu veux dire c'est quand on a un utilisateur qui a ce même login il enregistre comme même
c'est logique donc je modifie ça
if ($result >1)
par
if ($result >=1)
j'ai tester d'un login qui existe une seule fois dans ma table déjà faite et l'insertion n'est pas faite avec code
if ($result >1)
mais croyez moi qu'il a refuser d'ajouter pourquoi meme que le résultat =1??
Dernière modification par yosra (01-04-2008 15:31:59)
Hors ligne