2009-07-24 6 views
1

J'utilise le script app_error pour traiter les liens cassés sur mon site, et dans l'action error404() J'écris une valeur de session comme ceci:lecture valeur session dans le gâteau beforeFilter() php

$this->controller->Session->write("visitor", $visitorId); 

Cette tout fonctionne comme je peux lire avec succès la session si je recharge app_error. Une fois que je l'ai écrit cette valeur de session rediriger le navigateur vers un contrôleur:

$this->controller->redirect($redirectURL,301);  

Ce que je suis alors en train de faire est de vérifier cette valeur de session dans le rappel beforeFilter() dans app_controller, mais il ne semble pas être capable de détecter cette valeur. J'ai essayé

$this->Session->read("visitor"); 

et il ne récupère rien. J'ai également essayé la méthode de vérification.

Quelqu'un peut-il voir quelque chose d'évident ici? J'ai debug mis à 0 (production) donc il utilise le error404() par défaut.

+0

Peut-être que cela pourrait aider: http://stackoverflow.com/questions/1252067/cakephp-problems-with-errorhandler-not-extending-appcontroller –

Répondre

1

MGRH. Est-ce que votre session entière est détruite ou n'êtes-vous pas capable de lire cet index? Je suppose que toute votre session est en train d'être détruite. La page que vous redirigez sur le même domaine (et sous-domaine, le cas échéant)? La plupart du temps, lorsque j'ai un problème comme celui-ci, le gâteau détruit agressivement la session, surtout si votre niveau Security.level est défini sur high/medium.

Si votre session est en train d'être détruite, assurez-vous que les deux domaines sont les mêmes. Si tel est déjà le cas, essayez de réduire votre niveau de sécurité pour vous assurer que vous n'êtes pas intercepté par session.referer_check.

Sinon, vous devriez pouvoir lire depuis la session dans beforeFilter().

2

Essayez de régler la valeur de la session comme ceci:

$this->Session->write("VisitorInfo.visitor","value"); 

Ensuite, vous avez l'habitude des problèmes de lecture à partir app_controller à l'aide:

$this->Session->read('VisitorInfo');