Bonjour à tous
Je suis débutant sur cakephp et j'ai rencontré un problème très bizarre je tourne en rond depuis un certain temps maintenant :
J'ai créé une app cakephp (2.4.7) avec auth acl et session en suivant les tutoriaux sur le site officiel de cakephp --> http://book.cakephp.org/2.0/fr/tutorials-and-examples/simple-acl-controlled-application/simple-acl-controlled-application.html.
Quand je me connecte, ça marche nickel sur tous les navigateurs sauf IE !
Normalement j'ai un form de connexion classique dans ma page d'accueil et si je suis connecté je vois à la place "prénom nom" et après j'ai un menu contextuel associé à l'utilisateur identifié etc...
En fait j'ai essayé ceci dans ma fonction login du controller user :
debug($this->Session->read('Auth.User'));
Et je n'ai rien quand je saisie quelque chose dans mon formulaire sous IE (quelle que soit la version) mais ça marche dans tous les autres navigateurs (Chrome, Firefox, Opera, Safari).
Ma fonction login :
public function login() {
if ($this->request->is('post')) {
if ($this->Auth->login()) {
$this->Session->setFlash("Connexion réussie","notif");
return $this->redirect('/');
} else {
$this->Session->setFlash('Vos identifiants ne correspondent pas.', 'notif', array('type' => 'danger', 'icon' => 'glyphicon-remove-sign'));
}
}
}
Quand je commente la redirection je vois bien apparaître à la place de mon formulaire "prénom nom" mais dès que je change de page je vois à nouveau mon formulaire de connexion. Si je tape n'importe quoi dans le form j'ai bien le flash "Vos identifiants ne correspondent pas" qui apparaît. Donc Auth fonctionne et trouve l’occurrence dans la BDD mais n'enregistre rien dans la session. et bien sûr rien dans les logs...
Avez vous déjà eu un problème similaire ? Je suis perdu. Merci
edit : Voilà ce que me renvoie un debug de $_SESSION quand je soumet mon form de connexion, les étoiles c'est normal.
sur internet explorer
array(
'Config' => array(
'userAgent' => '0fa5994f13e032be1ebf432701c8740d',
'time' => (int) 1401211039,
'countdown' => (int) 10
)
)
sur les autres...
array(
'Config' => array(
'userAgent' => '610fe0211e10291e32229fa4303b178d',
'time' => (int) 1401211044,
'countdown' => (int) 10
),
'Auth' => array(
'User' => array(
'id' => '4',
'username' => ' ******',
'role' => 'admin',
'firstname' => ' ******',
'lastname' => ' **********',
'phone' => '74.24',
'office' => 'Lorem ipsum',
'online' => true,
'department_id' => '1',
'mail' => 'test@test.test',
'group_id' => '2',
'Department' => array(
'id' => '1',
'name' => ' ******',
'description' => 'Lorem ipsum description',
'user_count' => '2',
'order' => '2',
'slug' => 'lorem-ipsum',
'link' => array(
'controller' => 'users',
'action' => 'department',
'slug' => 'lorem-ipsum-service'
)
),
'Group' => array(
'id' => '2',
'name' => 'manager',
'created' => null,
'modified' => null
)
)
),
'Message' => array()
)
Comme on peut le voir 'Auth' et 'Message' ne sont pas présent dans $_SESSION sous IE mais pourquoi ???
Je sèche, j'essaye tout un tas de truc mais sans succès pour le moment. Si quelqu'un a la moindre piste je lui en serait très reconnaissant.
Bon, j'ai finalement trouvé la solution, elle était d'ordre environnementale. En effet je travaillais sur un serveur de dév avec un nom du style "lorem_ipsum" y'avait 2 problèmes : le _ qui fout la m**** dans IE apparemment pour une raison que j'ignore et j'ai l'impression que la config du serveur n'y est pas pour rien car une fois le problème du _ résolu ça ne marchais toujours pas. j'étais en PHP 5.3.1/MySQL 5.5.37 sur mon serveur de dev et sur le serveur de prod en 5.3.27/MySQL 5.1.49.
Bref ça marche maintenant mais si quelqu'un a une explication plus précise je suis toujours preneur. Merci