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

Langage PHP Discussion :

Variables de session intactes malgré fermeture de la page


Sujet :

Langage PHP

Vue hybride

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

    Informations forums :
    Inscription : Mai 2009
    Messages : 11
    Par défaut Variables de session intactes malgré fermeture de la page
    Bonsoir,

    J'ai recémment modifié un site web dont la page d'index renvoi sur une autre page au cas ou les variables de session sont inexistantes, la redirection refuse pourtant de fonctionner lorsque je ferme la page apres m'etre enregistré.

    j'obtiens alors la page d'index sans que mes identifiants de compte n'apparaissent, j'ai d'abord cru que le probleme venait de la redirection, j'ai essayé en javascript puis e utilisant les headers avant de realiser en faisant un echo $_SESSION['client_id'] et ['client_motpasse'] que ces derniers etaient toujours actifs.

    Lorsque j'ai lancé un session_destroy j'ai obtenu un message d'erreur m'indiquant que je ne peux pas detruire une session non initialisée.

    Je suis un peu perdu et toute aide serait la bienvenue, merci d'avance.

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 11
    Par défaut
    Merci beaucoup de ta reponse Fox, je vais essayer de preciser mon probleme.
    ma page debute par ce code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <? 
    session_start() ;
    if ((!$_POST['identifiant'] && !$_POST['motpasse']) && (!$_SESSION['client_login'] && !$_SESSION['client_motpasse']))
    {	
      	echo"<SCRIPT LANGUAGE=\"JavaScript\">
    document.location.href=\"site_2\" 
    </SCRIPT>";	}
    //fin if
    else
    { etc...
    le probleme c'est que la redirection ne marche pas! Lorsque j'inclus dans mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     echo $_SESSION['client_login']; 
     echo $_SESSION['client_motpasse'];
    J'obtiens mon login et mon mot de passe.
    J'ai essayé de placé un <body leftmargin="0" topmargin="0" marginwidth="0" marginheight="0" ondisposed="changelocation();">
    avec dans le fichier fonctions.js:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    function changeLocation(){
    document.location.href="logout3.php";
    }
    le fichier logout3.php contient: 
    $_SESSION=array();
    session_destroy();
    Mais ca ne fonctionne toujours pas!

    merci d'avance.

  3. #3
    Membre confirmé Avatar de bigltnt
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    227
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 227
    Par défaut
    Ton message d'erreur pour session_destroy() vient du fait que session_start() n'a pas été appelé auparavant.

    Essaye ça pour la déconnexion:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    @session_start();
    $_SESSION = array();
    session_write_close ();

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 11
    Par défaut
    Merci pour la reponse mais cette solution ne fonctionne pas non plus, je me suis assuré que session.lifetime etait sur 0 dans le php.ini, mon probleme pourrait il etre du au fait que mon repertoire racine sur le serveur est un sous domaine du site que je refait?

  5. #5
    Membre chevronné
    Avatar de djayp
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 295
    Par défaut
    Salut !:

    Quelques corrections syntaxiques pourront peut-être résoudre le problème.

    Pour vérifier qu'une variable existe, il est préférable d'utiliser la fonction isset() et pour vérifier qu'elle est vide il existe la fonction empty().
    Ensuite, pour faire ta redirection, tu peux utiliser la fonction header() comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    header("location:http://...../site_2/");
    exit();
    Voilà A+

  6. #6
    Membre confirmé Avatar de bigltnt
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    227
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 227
    Par défaut
    Essaye ca ca marche chez moi:

    fichier = "index.php"

    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
     
    <?php
    	//	En cas de redirection
    	function redirection( $url ) {
    		header( 'Location: ' . $url );
    		session_write_close();
    		exit();
    	}
     
    	//	Demarrage de la session
    	session_start();
     
    	//	gestion de la deconnexion
    	if ( isset( $_SESSION[ 'client_login' ] ) && isset( $_GET[ 'deconnexion' ] ) ) : $_SESSION = array(); redirection( './index.php' ); endif;
     
    	if ( !isset( $_SESSION[ 'client_login' ] ) ) {
    		//	L'utilisateur n'est pas authentifié
     
    		if ( !empty( $_POST ) && isset( $_POST[ 'identifiant' ], $_POST[ 'motpasse' ] ) ) {
    			//	Le formulaire est envoyé
    			$test = false;
     
    			//	On test le couple login / password
    			if ( $_POST[ 'identifiant' ] == 'bigltnt' && $_POST[ 'motpasse' ] == 'plop' ) {
    				$_SESSION[ 'client_login' ] = $_POST[ 'identifiant' ];
    				redirection( './index.php' );
    			} else {
    				$message = 'Login et/ou mot de passe invalide(s)';
    			}
    		}
     
    		//	Message d'erreur
    		if ( isset( $message ) && !empty( $message ) ) : echo '<p style="color: red">' . $message . '</p>'; endif;
     
    		//	Pas de données envoyées, on produit le formulaire
    		echo 	'<form action="./index.php" method="post">'
    			.	'<input type="text" name="identifiant"/>'
    			.	'<input type="password" name="motpasse"/>'
    			.	'<input type="submit" value="Envoyer"/>'
    			.	'</form>';
     
    	} else {
    		//	L'utilisateur est authentifié
    		echo 'Authentification reussie<br/>';
    		echo '<a href="./index.php?deconnexion=true">Se deconnecter</a>';
    	}
    ?>
    Si ca ne marche pas alors ton problème est peut-etre un vari problème

    Et effectivement +1 au message de djayp sur tes controles

Discussions similaires

  1. vider une session a la fermeture de la page
    Par paintbox dans le forum Langage
    Réponses: 7
    Dernier message: 26/11/2010, 10h05
  2. Variable de session, ou define à chaque chargement de page ?
    Par ChriGoLioNaDor dans le forum Langage
    Réponses: 3
    Dernier message: 06/01/2010, 18h09
  3. Réponses: 11
    Dernier message: 13/05/2008, 15h16
  4. variable de session qui se vide entre deux pages
    Par mnem0 dans le forum Langage
    Réponses: 6
    Dernier message: 21/11/2007, 15h53
  5. variable de session
    Par divableue dans le forum ASP
    Réponses: 2
    Dernier message: 23/10/2003, 16h04

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