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

  1. #1
    Nouveau membre du Club
    Deconnection avec (_logout) - Mise à jour de la table session
    Bonjours cher tous.

    je développe présentement un projet via MKFramework. tout ce passe très très bien. sauf un point.

    Dans mon projet, j'ai créé une table session(SessionID,EtatSession,DebutSession,FinSession,UsersId). le but est de tracer les accès à mon système.

    Quand je me connecte, il renseigne correctement la table session en mentionnant que l'état est 'connecté'. mais quand je me déconnecte en utilisant _logout(), il ne se passe rien.

    Ce que je veux :
    -Si j'appelle la fonction _logout(), qu'il mette à jour ma table session pour la session ouverte (EtatSession='Deconnecter',FinSession=' dateheure du moment de deconnection')

    Voila ce que j'ai fait:

    Code php :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
    //--------------------------------------------------------------------------------------------
    public function _logout(){
             $tMessage=$this->SessionDeconProcessSave();
    		//_root::getAuth()->logout();
    	}
     
     
     
     
    private function SessionDeconProcessSave(){
    		if(!_root::getRequest()->isPost() ){ //si ce n'est pas une requete POST on ne soumet pas
    			return null;
    		}
     
            $tSessions=model_sessions::getInstance()->findBySessionId($_SESSION['UsersId']);
     
    		$iId=$tSessions->SessionID;;
    		if($iId==null){
    			$oSessions=new row_sessions;	
    		}else{
    			$oSessions=model_sessions::getInstance()->findById($iId );
    		}
     
            /*$sLogin=_root::getParam('login');
            $tUser=model_users::getInstance()->findAgent($sLogin);*/
    		$tColumn=array('EtatSession','FinSession');
    		foreach($tColumn as $sColumn){
                    if($sColumn=='EtatSession'){
                      $oSessions->$sColumn ='Deconncter';
                    }elseif($sColumn=='FinSession'){
                      $oSessions->$sColumn = date("Y-m-d H:i:s");
                      $_SESSION['debut']=date("Y-m-d H:i:s");
                    }
    			    //$oSessions->$sColumn=_root::getParam($sColumn,null) ;
    		      }
     
     
    		if($oSessions->save()==false){
     
    			return $oSessions->getListError();
     
    		}
     
    	}


    quelqu'un peut-il m'orienter. Merci d'avance

  2. #2
    Rédacteur

    Quand vous vous déconnectez, vous le faites via un formulaire en POST ?

    Code php :Sélectionner tout -Visualiser dans une fenêtre à part
    if(!_root::getRequest()->isPost() ){


    si c'est le cas, vous pouvez ajouter du log pour vérifier jusqu'où il va

    avec

    Code php :Sélectionner tout -Visualiser dans une fenêtre à part
    _root::getLog()->log('on passe ici');


    et dans le fichier conf/site.ini.php activez le log application

    Code ini :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    [log]
    application=1


    il créera un fichier dans data/log
    Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
    Mes cours/tutoriaux

  3. #3
    Nouveau membre du Club
    problème résolu
    merci imikado;
    en fait j'ai fait quelques petites modification sur mes fichiers et tout marche à merveille

    Code php :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
    //-------------------------dans mon modèle---------------------------------------------------
    public function findBySessionId($uId){
    		//return $this->findOne('SELECT * FROM '.$this->sTable.' WHERE SessionID = (SELECT MAX(SessionID) FROM sessions GROUP By UsersId) AND UsersId=? ',$uId );
            $nIdCon = $this->findOneSimple('SELECT MAX(SessionID) as IDMAX FROM '.$this->sTable.' WHERE UsersId=? ',$uId );
            return $nIdCon->IDMAX;
    	}
     
    //-----------------------------dans mon main------------------------------------------------------------------------------------------------
     
    public function _logout(){
             $tMessage=$this->SessionDeconProcessSave($_SESSION['userId']);
    		_root::getAuth()->logout();
    	}
     
     
     
     
    private function SessionDeconProcessSave($usid){
    		/*if(!_root::getRequest()->isPost() ){ //si ce n'est pas une requete POST on ne soumet pas
    			return null;
    		}*/
     
            //$oSSid=model_sessions::getInstance()->findBySessionId($usid);
     
    		$iId=model_sessions::getInstance()->findBySessionId($usid);
    		if($iId==null){
    			$oSessions=new row_sessions;	
    		}else{
    			$oSessions=model_sessions::getInstance()->findById($iId );
    		}
     
            /*$sLogin=_root::getParam('login');
            $tUser=model_users::getInstance()->findAgent($sLogin);*/
    		$tColumn=array('EtatSession','FinSession');
    		foreach($tColumn as $sColumn){
                    if($sColumn=='EtatSession'){
                      $oSessions->$sColumn ='Deconncter';
                    }elseif($sColumn=='FinSession'){
                      $oSessions->$sColumn = date("Y-m-d H:i:s");
                    }
    			    //$oSessions->$sColumn=_root::getParam($sColumn,null) ;
    		      }
     
     
    		if($oSessions->save()==false){
     
    			return $oSessions->getListError();
     
    		}
     
    	}


    voici, tout marche. si cela peu inspirer quelqu'un .

    Merci !

###raw>template_hook.ano_emploi###