|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre du Club
![]() Développeur Web Inscription : décembre 2005 Messages : 110 ![]() |
Bonjour,
Je suis en train de me heurter à un petit problème qui entraîne quelques questions derrière lui. Je travaille sur la page d'authentification de mon appli. J'ai donc mes 2 champs login et password, mon controller, mes fonctions loginAction et logoutAction, etc, etc... En fonction du résultat de l'authentification, et également en fonction du type d'utilisateur qui vient de s'authentifier, mon controller redirige sur différents modules, et en tout les cas pas sur la vue qui porte le nom de l'action. En l'occurence, je n'ai pas de vue login.phtml. Le souci est que je dois transmettre différentes variables aux vues. Je pense par exemple à des variables telles qu'un message d'erreur, ou bien les nom/prénom de l'utilisateur. Lorsque l'on fait une redirection ( $this->_redirect('...'); ), les variables initialisées avec la technique $this->view->maVariable = "valeur"; ne sont pas transmises. Pour régler le problème, on m'a conseillé d'utiliser les sessions. Or je risque d'avoir besoin de ça à de nombreuses reprises dans mon appli, et je trouve un peu lourdingue d'utiliser les sessions à chaque fois, et pas très propre d'utiliser une autre solution qui serait de passer les variables par les url. Personne n'a d'autre solution ? Comment avez-vous gérer la chose ? Merci ! |
|
|
00
|
|
|
#2 |
![]() ![]() Inscription : juin 2003 Messages : 4 893 ![]() |
Pour l'affichage du message d'erreur, je trouve que c'est propre de mettre cette information dans l'URL puisque on respecte bien le principe d'une URL qui affiche une information et donc si on modifie l'URL on aura un autre affichage
Et pour le nom de l'utilisateur, si j'ai bien compris il s'agit de l'utilisateur qui est connecté donc c'est normal que l'information se trouve dans la session, non ?
__________________
Modérateur PHP |
|
|
00
|
|
|
#3 |
|
Membre du Club
![]() Développeur Web Inscription : décembre 2005 Messages : 110 ![]() |
Pour l'utilisateur oui, mais je pense que j'aurai pas mal d'autres cas de redirections (en dehors des messages d'erreurs)...
Je trouve que ça fait un peu bricolage de tout caser dans les sessions ou d'avoir des urls à rallonge de 3km de long ![]() Merci pour ta réponse |
|
|
00
|
|
|
#4 |
|
Membre éclairé
![]() |
Les sessions sont faites pour ça....
Dans tous les cas c'est de loin une solution plus propre que de mettre ça en url... |
|
00
|
|
|
#5 |
|
Membre du Club
![]() Développeur Web Inscription : décembre 2005 Messages : 110 ![]() |
Ok merci à vous deux, je n'ai d'autres choix que de faire ça alors
![]() |
|
|
00
|
|
|
#6 |
|
Candidat au titre de Membre du Club
![]() Inscription : novembre 2003 Messages : 17 ![]() |
Bonjour,
je suis confronté au même probleme, mais dans mons cas j'ai utilisé la methode forward avec des parametres. Sinon, j'avais pensé à utiliser zend registry pour faire de ma vue un singleton et au debut de chaque controller me servir de ce singleton comme vu. Au final, ça passe par des sessions mais c'est transparent. |
|
|
00
|
|
|
#7 |
|
Membre du Club
![]() Développeur Web Inscription : décembre 2005 Messages : 110 ![]() |
Pour ma part j'ai finalement utilisé les sessions. C'est pas mal sauf qu'il ne faut pas oublier d'inclure les classes dont on se sert dans la session avant de déclarer la session, sinon ça ne fonctionne pas.
|
|
|
00
|
|
|
#8 |
|
Membre Expert
![]() Thierry NFC & DevWeb Inscription : avril 2006 Messages : 1 175 ![]() |
Je prends la discussion en route.
Pour ma part, j'ai aussi choisit la solution des variables de SESSION pour l'authentification de mes utilisateurs. J'ai eu un peu de mal à mettre au point un mécanisme "transportable", mais maintenant, je l'utilise pour toute sorte de client web, y compris les mobiles. C'est une merveille. Néanmoins, je te met en garde sur l'utilisation de COOKIES pour "reconstruire" ta session en cas de fermeture du navigateur. Dans le cas de machines qui sont susceptibles d'être utilisées par plusieurs personnes, il faut être prudent. Et certain Navigateur en particulier les mobiles ont tendances à avoir les COOKIES assez persistant ![]() Riete |
|
|
00
|
|
|
#9 |
|
Membre éclairé
![]() |
|
|
00
|
|
|
#10 |
|
Membre Expert
![]() Thierry NFC & DevWeb Inscription : avril 2006 Messages : 1 175 ![]() |
Je n'ai pas eu de soucis à part les Cookies. Cela demande juste pas mal de rigueur au niveau code pour éviter la persistance parasite de certaines variables d'un script à l'autre.
|
|
|
00
|
|
|
#11 |
|
Membre éclairé
![]() |
oki
|
|
00
|
|
|
#12 | ||
|
Candidat au titre de Membre du Club
![]() Inscription : novembre 2003 Messages : 17 ![]() |
je viens de penser à un autre moyen, un peu compliqué mais bon.
Je crois que les helper d'action sont persistant donc le helper viewrenderer est persistant. On lui instancie une vue avec la methode setview : Code :
A verifier..... |
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com