bonjour,
j'ai fais un simple formulaire, ainsi qu'un controller de login, tout ce qu'il y a de plus simple quoi. cela fonctionne sous FF et opera voir chromium, mais bizarrement le post n'est pas renvoyé vers ma page login sous ie678, safari et chrome android... pourtant l'objet est crée dans ma page login!?!
un peu de code car je ne suis peut-etre pas claire
en gros j'appel mon formulaire dans la fonction init, pis je traite le resultat du post dans ma fonction index de la class login.
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60 class LoginController extends Zend_Controller_Action { public function init() { // recuperation des variables utiles $controller = $this->getRequest()->getParam('controller'); $translation = Zend_Registry::get('translator'); $this->view->translator = $translation; // creation du sous-menu $this->view->submenu = array( index => $translation->_("message35"), subscribe => $translation->_("message15") ); // renvoi le sous-menu à la vue $this->renderScript('common/submenu.phtml', 'submenu'); // par défaut un appel à render() annule le rendu automatique // restauration du rendu via le helper viewRenderer. // (cette action rend une vue) $this->_helper->viewRenderer->setNoRender(false); //affiche le formulaire de connexion $form = new Form_LoginForm(); $this->view->form = $form; } public function indexAction() { if ($this->_request->isPost()) { $formData = $this->_request->getPost(); $auth = Zend_Auth::getInstance(); $db = Zend_Db_Table_Abstract::getDefaultAdapter(); $dbAdapter = new Zend_Auth_Adapter_DbTable($db); $dbAdapter->setTableName('users') ->setIdentityColumn('login') ->setCredentialColumn('passwd'); $dbAdapter->setIdentity($formData['username']) ->setCredential(md5($formData['password'])); $result = $auth->authenticate($dbAdapter); if ($result->isValid()) { $data = $dbAdapter->getResultRowObject(null, 'password'); $auth->getStorage()->write($data); $identity = Zend_Auth::getInstance()->getIdentity(); $session = new Zend_Session_Namespace('id'); $session->id = $identity->id; // Définition du timezone en fonction de l'utilisateur $conf = new Model_DbTable_Conf(); $id = $session->id; $info = $conf->find($id)->current(); $session->timezone = $info->timezone; $this->_redirect('/main'); }else{ $translation = Zend_Registry::get('translator'); echo $translation->_("message14"); } } }
mon formulaire... tout bete quoi
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43 <?php class Form_LoginForm extends Zend_Form { public function __construct($options = null) { parent::__construct($options); $translation = Zend_Registry::get('translator'); $username = new Zend_Form_Element_Text("username"); $username->setLabel($translation->_("message3")) ->addFilter('StripTags') //Enlève les caractères HTML ->addFilter('StringTrim')// Enlève les espaces dans la chaîne de caractère ->addFilter('StringToLower') ->addValidator('NotEmpty') // Vérifie si la chaine existe ->addValidator('StringLength', false, 5, 15) //Vérifie la longeur de la chaine de caractère ->addValidator('Alnum') ; $password = new Zend_Form_Element_Text("password"); $password->setLabel($translation->_("message4")) ->addFilter('StripTags') //Enlève les caractères HTML ->addFilter('StringTrim')// Enlève les espaces dans la chaîne de caractère ->addValidator('NotEmpty') // Vérifie si la chaine existe ->addValidator('StringLength', false, 5, 10) //Vérifie la longeur de la chaine de caractère ->addValidator('Alnum') ; // We want to display a 'failed authentication' message if necessary; // we'll do that with the form 'description', so we need to add that // decorator. $this->setDecorators(array('FormElements', array('HtmlTag', array('tag' => 'dl', 'class' => 'zend_form')), array('Description', array('placement' => 'prepend')),'Form' )); $login = new Zend_Form_Element_Submit("login"); $login->setLabel($translation->_("message6")); $this->addElements(array($username,$password,$login)); } }
je recapitule donc:
sous ff et opera etc...
je rentre mon login
je post
je suis validé
puis redirigé vers mon controller "main"
sous ie et safari etc...
je rentre mon login
je post
je me retrouve sur le controller index, comme si par defaut on me ramenait à la racine du site
j'ai bien cherché du coté d'une perte de session mais je ne vois pas. lorsque je suis redirigé sur la page index l'entête http est 200 ...
si qqn à une idée parceque la je séche
merci d'avance et pardon pour ce post brouillon
Partager