Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonjour,
J'ai un petit problème avec mon authentification et cela que sous IE 7 O_o !
Sous ie6 et Firefox je peux parfaitement me connecter à mon backend.
Le code pour l'auth est le suivant :
$authAdapter = new Zend_Auth_Adapter_DbTable($dbAdapter); $authAdapter->setTableName('admins') ->setIdentityColumn('admin_id') ->setCredentialColumn('admin_password') ->setIdentity($id) ->setCredential(sha1($password)); $result = $auth->authenticate($authAdapter);
Si l'authentifcation est réussi je suis redirigé vers une page d'admin... sinon un message d'erreur apparait. Sous ie7 je suis redirigé sur ma page d'admin mais vu qu'il croit que je suis pas connecté il me redirige sur ma page d'authentification O_o!!
Merci d'avance :p
Dernière modification par Ajite (29-08-2008 13:01:38)
Hors ligne
cela ne peux pas venir de la connexion à la base c'est un problème dans le reste de ton code dans la gestion de la redirection ou dans les paramètre que tu reçois c'est donc ça qu'il faut nous fournir
car là on peu pas t'aider
A+JYT
Hors ligne
Ok merci je te donne ça
Mon action de login
public function loginAction() { $dbAdapter = Zend_Registry::get('db'); $auth = Zend_Auth::getInstance(); #si l'auth est déjà connecté if ($auth->hasIdentity()) { $this->view->message = 'Vous êtes déjà connecté. '; $this->_redirect(Config::getValue('url').'admin/auth/index');//on le redirige sur la page d'accueil return; } //on mets le formulaire de la méthode login Form $form = $this->loginForm(); $this->view->form = $form; if ($this->_request->isPost()) { # Filters for $_POST Values $f = new Zend_Filter_StripTags(); $username = $f->filter($this->_request->getPost('form_username')); //on enlèves les tags aux champs suivants $password = $f->filter($this->_request->getPost('form_password')); if($form->isValid($_POST)) { //si le formulaire est valide $user = Admins::getValue('admin_username', $username);//alors on init l'user a un user dans la bdd if(count($user) > 0) { //si l'user existe $id = $user->admin_id; //alors $id = l'id de l'user //sinon } else { //message d'erreur $this->view->error = 'Erreur d\'identifiant ou d\'adresse mail.'; return; } try { //on essaye de se connecter $authAdapter = new Zend_Auth_Adapter_DbTable($dbAdapter); $authAdapter->setTableName('admins') ->setIdentityColumn('admin_id') ->setCredentialColumn('admin_password') ->setIdentity($id) //on compare l'id, donc la session contiendra l'id de l'user ->setCredential(sha1($password)); //on file un sha1 du password //si on test avec les données $result = $auth->authenticate($authAdapter);//on est connecté } catch (Zend_Auth_Adapter_Exception $e) { //on attrape une exception $this->view->error = 'Erreur d\'identifiant ou d\'adresse mail.'; //on affiche l'error :) } } if ($auth->hasIdentity()) { //si l'utilisateur est bien connecté $this->_redirect(Config::getValue('url').'admin/auth/index'); // on le redirige } else { $this->view->error = 'Problème de connexion'; } } }
mon init des pages au il faut être identifié
$auth = Zend_Auth::getInstance(); if (!$auth->hasIdentity()) { //si l'admin n'a pas d'identité $this->_redirect(Config::getValue('url').'admin/auth/login'); //on le redirige }
Merci d'avance; )
Hors ligne
Merci pour votre aide,
J'y ai déjà pensé mais j'ai essayé plusieurs ie7 (sur plusieurs postes) en le configurant pour qu'il accepte tous les cookies et pourtant ca ne fonctionne pas T_T
Je ne vois vraiment pas et cette application sera malheureusement utiliser sous ie6 ou ie7 donc bon...
Si vous avez des pistes merci d'avance
Hors ligne
Une autre piste est de voir la validation du formulaire. Si tu as un image comme bouton de validation, les tests à faire niveau php ne sont pas toujours pareil (y'a des histories de _x, et _y...)
Hors ligne
Hum merci mais je n'ai pas d'image j'ai le formulaire suivant si ca peut aider
protected function loginForm() { $form = new Zend_Form();//on crée le formulaire $form->setMethod('post') ->setAction('login'); $username = $form->createElement('text', 'form_username') //un champs de type text ->setLabel('Nom d\'utilisateur :') ->setRequired(true)//obligatoire ->addValidator('NotEmpty', true, array('messages' => 'Ce champs est requis.')); //et non vide $password = $form->createElement('password', 'form_password')//un champs de type text ->setLabel('Mot de passe :') ->setRequired(true) //obligatoire ->addValidator('NotEmpty', true, array('messages' => 'Ce champs est requis.')); //et non vide $form->addElement($username) //on ajoute les éléments au formulaire ->addElement($password); $form->clearDecorators() //on détruit le formulaire ->setDecorators( array( 'FormElements', 'Form' ) ) ->setElementDecorators(array('ViewHelper','Label',array('HtmlTag', array('tag' => 'div')))) //dit que les formulaires seront <label>Blabla</label><div><input /></div> ->setElementDecorators(array(array('ViewHelper', array('tag' => "")), array('Errors', array('tag' => "")), array('Label', array('tag' => NULL, 'separator'=>'')), array('HtmlTag', array('tag' => "div")))); $submit = $form->createElement('submit', 'form_login'); //on crée le champs submit $submit->setLabel('Connexion'); $form->addElement($submit);//on l'ajoute return $form; }
Merci encore ^^'! (je débloque T_T)
Hors ligne
pt etre qu'en faisant des print_r($_SESSION); tu trouveras le problème.
Sinon, par curiosité, a quoi ca sert ton :
$this->view->message = 'Vous êtes déjà connecté. ';
Puisque à la ligne d'après, tu fais un redirect ??
Hors ligne
Ah rien c'était pour faire un test ^^ !
Sinon j'ai fais un print_r
Array ( [Zend_Auth] => Array ( [storage] => ) ) 1
Donc rien alors que sous firefox j'ai
Array ( [Zend_Auth] => Array ( [storage] => 1 ) ) 1
Merci encore
EDIT : Si j'enlève toutes les redirections je vois que je suis connecté sur la page de login mais des que je change (comme quand je suis redirigé) seulement sous IE7 je perds ma session
Dernière modification par Ajite (28-08-2008 15:55:49)
Hors ligne
Bonjour,
il faut peut être regarder au niveau du nom de ta session, il me semble qu'il y des bugs avec ie quand on met des underscore "_"
Hors ligne
Merci,
Mais le "_" c'est par default me il me semble. J'ai essayé de créer une session exemple $_SESSION['id'] avec une valeur mais je le perds à la page suivante T_T
Merci encore
Hors ligne
Si tu perds ta session, c'est que tu as un problème de cookie avec ton IE.
Aujourd'hui, les conf de bases sont faite pour que l'identifiant de session soit transmise par cookie.
A moins que tu es une configuration bien particulière de ton PHP.
Hors ligne
J'ai changé le site de serveur.. Tout fonctionne bien.
C'est bien un problème de serveur !
Merci à vous (taiiin tout ce temps pour ca :'()
Hors ligne
Ton serveur était tout de même bizarrement configuré..
un phpinfo aurait put t'éclaircir aussi (section session)
Hors ligne
Pages: 1