IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Zend_Acl & Zend_Auth PHP Discussion :

Zend_Session après authentification


Sujet :

Zend_Acl & Zend_Auth PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 16
    Par défaut Zend_Session après authentification
    Bonjour,

    Désespéré après des heures de recherche sur google, je me tourne vers vous pour exposer mon problème :

    Je développe actuellement un site sous Zend Framework, et je travaille sur le module d'authentification, très basique :
    - un formulaire de login (view : login.phtml)
    - un memberController avec une action processLogin (vers laquel le formulaire redirige)
    - un model member, qui représente ma table member en base de donnée mysql
    - la table de la base de donnée dispore de 5 champs (id, email, pass, nom, prenom)

    Mon problème se situe au niveau du Controller, dans l'action processLogin :
    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
    <?php
     
    require_once 'models/Member.php';
     
    class MemberController extends Zend_Controller_Action
    {
        //Default action - not implemented
        public function indexAction()
        {
        }
     
     
        //ProcessLogin (called when the login form is validated)
        public function processLoginAction()
        {     
            //Get posted informations : the login (email) and password
            //Filter this informations for security issues
            $emailAddress = Zend_Filter::get($this->getRequest()->getPost('emailAddress'), 'StripTags');
            $passwordFilter = new Zend_Filter();
            $passwordFilter->addFilter(new Zend_Filter_HtmlEntities())
                           ->addFilter(new Zend_Filter_StripTags());
            $userPassword = $passwordFilter->filter($this->getRequest()->getPost('userPassword'), 'StripTags');      
     
     
            //Trying to log on with the given email adress and password
            $memberId=Member::login($emailAddress,$userPassword);
     
     
            //If the login success, we get a numeric member id
            //So we create a session and we stock informations about the member in it
            //Then we notify the user of the login success and we redirect him
            if (is_numeric($memberId)) 
            {
                $memberSession = new Zend_Session_Namespace('member');
                $memberSession->member = new Member($memberId);
     
                $this->_helper->flashMessenger->addMessage("Welcome");//" {$memberSession->member->firstName}.");
                $this->_redirect('/index/index');
            }
     
            //Else we just notify the user of the error and we redirect him to the login
            else 
            {
                $this->_helper->flashMessenger->addMessage("I'm sorry but there was a problem logging you in. Please try again.");
                $this->_redirect('/index/login');
            }
     
        }
     
    }
    Le login, qui utilise Zend_Auth, se passe sans problème, mais au moment où je veux stocker les informations du membre dans la session, je me mange une exception :

    an unexpected error occured.
    Unexpected Exception: Zend_Session::start() - fopen(Member.php) [function.fopen]: failed to open stream: No such file or directory


    #0 C:\wamp\www\EasyDon\library\Zend\Session\Namespace.php(116): Zend_Session::start(true)
    #1 C:\wamp\www\EasyDon\library\Zend\Controller\Action\Helper\FlashMessenger.php(73): Zend_Session_Namespace->__construct('FlashMessenger')
    #2 C:\wamp\www\EasyDon\library\Zend\Controller\Action\HelperBroker.php(330): Zend_Controller_Action_Helper_FlashMessenger->__construct()
    #3 C:\wamp\www\EasyDon\library\Zend\Controller\Action\HelperBroker.php(191): Zend_Controller_Action_HelperBroker::_loadHelper('FlashMessenger')
    #4 C:\wamp\www\EasyDon\application\controllers\IndexController.php(9): Zend_Controller_Action_HelperBroker->getHelper('flashMessenger')
    #5 C:\wamp\www\EasyDon\library\Zend\Controller\Action.php(499): IndexController->indexAction()
    #6 C:\wamp\www\EasyDon\library\Zend\Controller\Dispatcher\Standard.php(242): Zend_Controller_Action->dispatch('indexAction')
    #7 C:\wamp\www\EasyDon\library\Zend\Controller\Front.php(927): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http))
    #8 C:\wamp\www\EasyDon\public\index.php(36): Zend_Controller_Front->dispatch()
    #9 {main}
    Ce qui nous ramène aux 2 lignes suivantes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $memberSession = new Zend_Session_Namespace('member');
    $memberSession->member = new Member($memberId);
    Si je crée juste le namespace, pas de problème.
    Si je créer juste le member, pas de problème.
    Si j'accède aux attributs du member, pas de problème.
    Si j'ajoute une variable texte dans la session, aucun problème !
    Ex :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $memberSession = new Zend_Session_Namespace('member');
    $memberSession->member = "toto";

    Ce qui m'amène à penser que mon problème est que je veux stocker un objet dans la session. Serais-ce imposible ?

    Je ne pense pas, mais je n'ai pas la solution pour le faire ... Et c'est là que je compte sur vous


    En vous remerciant par avance,

    Charles

  2. #2
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 502
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 502
    Par défaut
    Bonjour,

    Juste pour être sur, dans ton boostrap tu as bien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    Zend_Session::start()
    ensuite, comment fais tu la différence entre les deux classes suivante ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
      $memberId=Member::login($emailAddress,$userPassword);
    ....
      $memberSession->member = new Member($memberId);

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 16
    Par défaut
    Si je met le session_start() ca change rien, il me semble que la session est automatiquement démarré lors de la création d'une variable de session.

    Sinon pour les classes pas de distinction, c'est la même ... Il vient de là le problème ? La méthode login est statique.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 16
    Par défaut
    Hello,

    Bon finallement j'ai laissé tombé ... J'ai fait comme dans les tutos officiels et ca marche mieux ... Mais bon résultat j'ai pas l'objet member dans ma session ^^

    Merci pour votre aide.

    Charles

  5. #5
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 502
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 502
    Par défaut
    Citation Envoyé par Charl Voir le message
    Si je met le session_start() ca change rien, il me semble que la session est automatiquement démarré lors de la création d'une variable de session.

    Sinon pour les classes pas de distinction, c'est la même ... Il vient de là le problème ? La méthode login est statique.
    Non, si tu ne mets pas Zend_Session::Start dans ton fichier index.php(bootstrap), tu ne pourras pas utiliser les sessions dans ton application.

Discussions similaires

  1. [OWA 2007] Message d'erreur après authentification
    Par phoenix75 dans le forum Exchange Server
    Réponses: 0
    Dernier message: 29/02/2008, 10h31
  2. ouvrir une page après authentification
    Par musmus dans le forum Langage
    Réponses: 2
    Dernier message: 06/05/2007, 12h26
  3. Réponses: 10
    Dernier message: 06/12/2005, 12h23
  4. [C#] Retrouevr le userName après authentification
    Par sokette dans le forum ASP.NET
    Réponses: 2
    Dernier message: 22/09/2005, 10h43
  5. Réponses: 6
    Dernier message: 25/08/2004, 09h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo