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

MkFramework Discussion :

Perte de SESSION dû à l'installation d'un nouveau routeur


Sujet :

MkFramework

  1. #21
    Rédacteur
    Avatar de imikado
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 239
    Points : 19 100
    Points
    19 100
    Billets dans le blog
    17
    Par défaut
    Je comprends mieux votre cas, une chose m'echappe :

    dans le fichier test.php que je vous ai envoyé, on fait quelquechose de tres basique en php avec les sessions,
    et malgré votre changement d'ip, on devrait avoir , un chiffre qui s'incremente de 1 , vu (par rapport à vos screenshot) que votre session id (l'id qui sert coté serveur à retrouver le cookie) reste le meme, ou alors sur les screenshots vous vous etes trompé


    Sinon pour regler votre soucis, vous pouvez forcer un cookie au login avec un id que vous avez defini, coté serveur, creer une table session, ou vous stoquerez votre session en base avec l'id contenu dans le cookie

    vous voyez l'idée ?

    pour localStorage:
    1. ce n'est pas accessible coté php (et c'est de ce coté que vous avez besoin des infos)
    2. fichier json c'est la meme reponse que poru la base de donnée, c'est posible, mais il faut mettre un cookie coté client pour avoir le lien entre le client et sa session


    DItes moi si c'est clair pour vous ?
    Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
    Mes cours/tutoriaux

  2. #22
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2014
    Messages : 53
    Points : 46
    Points
    46
    Par défaut
    Citation Envoyé par imikado Voir le message
    Je comprends mieux votre cas, une chose m'echappe :

    dans le fichier test.php que je vous ai envoyé, on fait quelquechose de tres basique en php avec les sessions,
    et malgré votre changement d'ip, on devrait avoir , un chiffre qui s'incremente de 1 , vu (par rapport à vos screenshot) que votre session id (l'id qui sert coté serveur à retrouver le cookie) reste le meme, ou alors sur les screenshots vous vous etes trompé
    Sur les screnshots, j'appui deux fois sur f5 successivement. Donc la page s'actualise deux fois c'est pourquoi la variable s'incremente deux fois mais ce n'est pas visible. Quand j'appui une seule fois, la variable ne s'incremente qu'une seule fois, mais le changement de l'adresse ip est lent. C'était juste pour cet exemple que j'ai fait ça, pour que vous compreniez mais je vois que cela vous pose un soucis. Donc je pourrais refaire le screenshot avec un seul appui sur f5 jusqu'au changement d'ip si c'est necessaire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sinon pour regler votre soucis, vous pouvez forcer un cookie au login avec un id que vous avez defini, coté serveur, creer une table session, ou vous stoquerez votre session en base avec l'id contenu dans le cookie
     
    vous voyez l'idée ?
     
    pour localStorage: 
    1. ce n'est pas accessible coté php (et c'est de ce coté que vous avez besoin des infos)
    2. fichier json c'est la meme reponse que poru la base de donnée, c'est posible, mais il faut mettre un cookie coté client pour avoir le lien entre le client et sa session 
     
     
    DItes moi si c'est clair pour vous ?
    Oui je vois bien l'idée mais c'est le comment qui me pose un peu problème. Concernant la manière de s'y prendre, je prefererai le fichier json bien que la BDD ne me pose pas aussi de problème particulier si ça peut régler le soucis avec les sessions. Mais je pense que c'est plus sécuriser avec la bdd n'est ce pas?!

  3. #23
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2014
    Messages : 53
    Points : 46
    Points
    46
    Par défaut
    Bonjour,
    J'espère (enfin) avoir résolu le problème à l'aide d'un fichier JSON. J'ai effectué des modfications dans deux fichier
    -Voici les méthodes que j'ai modifier dans le fichier plugin/plugin_auth.php
    1-La fonction "isConnected"
    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
     
    public function isConnected(){
    		if(!$this->_isConnected()){
    			return false;
    		}
     
    		if(isset($_SESSION['oAccount'])){
    			$this->setAccount(unserialize($_SESSION['oAccount']));
    		}else{
    			// indiqué le chemin de votre fichier JSON, il peut s'agir d'une URL
    			if(isset($_COOKIE["nomFichierJson"])){
    				$nomFichier = $_COOKIE["nomFichierJson"];
    				$json = file_get_contents($nomFichier);
    				$parsed_json = json_decode($json);
    				if(session_id()==$parsed_json->session_id){
    					foreach ($parsed_json->sessionObjet as $key => $value) {
    						$_SESSION[$key]=$value;
    					}
    					//var_dump($parsed_json->sessionObjet);exit;
    					$this->setAccount(unserialize($_SESSION['oAccount']));
     
    				}
    			}
    			else{
    				return false;
    			}
    		}
     
     
    		//ajouter critere supp pour verification de l'authentification
    		return true;
    	}

    2-la methode verifLoginPass
    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
     
    public function verifLoginPass($tElements,$sLogin,$sPass){
    		if(isset($tElements[$sLogin][$sPass])){
    			$this->_connect();
    			$this->setAccount($tElements[$sLogin][$sPass]);
     
    			$tableau_pour_json = ['session_id'=>session_id(),'sessionObjet'=>serialize($_SESSION)];
     
    			$contenu_json =json_encode($tableau_pour_json);
     
    			// Nom du fichier à créer
    			$nom_du_fichier = $sLogin.'-log.json';
    			setcookie("nomFichierJson", $nom_du_fichier, time() + (86400 * 30), "/");
     
     
    			// Ouverture du fichier
    			$fichier = fopen($nom_du_fichier, 'w+');
     
    			// Ecriture dans le fichier
    			fwrite($fichier, $contenu_json);
     
    			// Fermeture du fichier
    			fclose($fichier);
     
    			$_SESSION['test2']=15;
     
    			return true;
    		}
    		return false;
    	}
    3-la fonction "logout"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public function logout(){
    		$this->_disconnect();
    		unset($_COOKIE["nomFichierJson"]);
    		_root::redirect('auth::login');
    	}
    -Voici la méthode que j'ai modifier dans le fichier /home/niokomomrl/intranet/lib/framework/abstract/abstract_auth.php
    (J'ai juste commenté la verification sur l'adresse ip et sur le naviguateur comme indiqué par Imikado plus haut)
    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
     
    	public function _isConnected(){
     
    		/*if( !isset($_SESSION['ip']) or $_SESSION['ip']!=sha1($_SERVER['REMOTE_ADDR']) 
    			or !isset($_SESSION['userAgent']) or $_SESSION['userAgent']!=sha1($_SERVER['HTTP_USER_AGENT']) ){ 
    			return false;
    		}else
    		*/
     
    		 if(
    			(int)_root::getConfigVar('auth.session.timeout.enabled')==1 
    			and (!isset($_SESSION['timeout']) or ((int)$_SESSION['timeout']-time() ) < 0)){
    			//on regenere un nouvel id de session
    			session_regenerate_id(true);
    			return false;
    		}else if(
    			_root::getConfigVar('security.xsrf.checkReferer.enabled') ==1 
    			and isset($_SERVER['HTTP_REFERER'])){
     
    			if(isset($_SERVER['HTTPS']) ){
    				$sPattern='https://'.$_SERVER['SERVER_NAME'];
     
    			}else{
    				$sPattern='http://'.$_SERVER['SERVER_NAME'];			
    			}		
    			$urllen=strlen($sPattern);
     
    			if( substr($_SERVER['HTTP_REFERER'],0,$urllen)!=$sPattern ){
    				return false;
    			}
     
    		}
     
    		 if((int)_root::getConfigVar('auth.session.timeout.enabled')==1){
    		 	$_SESSION['timeout']=(time()+(int)_root::getConfigVar('auth.session.timeout.lifetime') );
    		 }
     
    		 /*ini_set('session.use_strict_mode', 0);
     
    		 var_dump($_SERVER['REMOTE_ADDR']);
     
    		 print_r($_SESSION);exit;*/
     
    		 //var_dump("salut");
     
    		return true;
    	}

Discussions similaires

  1. [JSP][session] perte de session et sendRedirect
    Par blaz dans le forum Servlets/JSP
    Réponses: 6
    Dernier message: 30/03/2007, 09h32
  2. Perte de Session d'une page à l'autre
    Par Flam dans le forum Langage
    Réponses: 3
    Dernier message: 15/03/2006, 14h34
  3. [Struts]Redirection globale en cas de perte de session
    Par Mercenary Developer dans le forum Struts 1
    Réponses: 10
    Dernier message: 03/02/2006, 14h40
  4. [navigateur]Problême de pertes de sessions sous IE (.js)
    Par Invité4 dans le forum Général JavaScript
    Réponses: 26
    Dernier message: 21/11/2005, 17h53
  5. [VB.NET] Perte de session entre 2 projets
    Par TekP@f dans le forum ASP.NET
    Réponses: 3
    Dernier message: 02/05/2005, 09h12

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