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 :

Session se vide après redirection


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2013
    Messages
    200
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2013
    Messages : 200
    Points : 102
    Points
    102
    Par défaut Session se vide après redirection
    Bonjour,
    J'ai fait un tchat et je rame sur un problème depuis hier. Sur ma page de connexion, après authentification je met en session le login et le genre. Le problème c'est qu'après la redirection mes sessions sont vides.

    NB: j'ai bien demarré la session, quand je vérifie sur ma page d'authentification mes sessions sont tous OK

  2. #2
    Membre expert
    Avatar de Spartacusply
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    1 723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 1 723
    Points : 3 274
    Points
    3 274
    Par défaut
    Il faut démarrer la session sur chaque page de ton site.
    Un message utile vous a aidé ? N'oubliez pas le

    www.simplifions.fr - Simplifier vos comptes entre amis !

  3. #3
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2013
    Messages
    200
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2013
    Messages : 200
    Points : 102
    Points
    102
    Par défaut
    La session est démarrée à chaque page:

  4. #4
    Membre expert
    Avatar de Spartacusply
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    1 723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 1 723
    Points : 3 274
    Points
    3 274
    Par défaut
    Montre ton code.
    Un message utile vous a aidé ? N'oubliez pas le

    www.simplifions.fr - Simplifier vos comptes entre amis !

  5. #5
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2013
    Messages
    200
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2013
    Messages : 200
    Points : 102
    Points
    102
    Par défaut
    Page de connexion

    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
     
    <?php 
     session_start();
    require(dirname(__FILE__).'/script/connexionDB.php');
     
    //Connexion au tchat
    	if(!empty($_POST['sexe']) && !empty($_POST['login'])) {
     
    		$erreur = 'null';
     
    		$logOn = searchTchat($_POST['login']);
     
    		if(empty($logOn)){
     
    			$ip = $_SERVER['REMOTE_ADDR'];
    			$insert = addTchat($_POST['sexe'], $_POST['login'], $ip);
     
    			if(!empty($insert)) {
    				$info = searchTchat($_POST['login']);
    				$idConnecte = $info->id;
    			}
    			else {
    				$data = searchTchat($_POST['login']);
     
    					if($data->ip == $_SERVER['REMOTE_ADDR'] && time()-$data->timestamp < 60){
    						 $idConnecte = $data->id;
    					}
    					elseif(time()-$data->timestamp > 60){
    						  $idConnecte = $data->id;
    					 }
    					else { 
    						$erreur = 'Ce login est déjà utilisé.';
    					}
    			} 
    		}
    	}
     
    	if(isset($erreur)){
    		 // Si le login a été validé on met les données en sessions
    		 $_SESSION['login'] =  $_POST['login'];
    		 $_SESSION['sexe'] =  $_POST['sexe'];
    		 $_SESSION['id'] = $idConnecte; 
     
    	     header('location: tchat.php');
    	 }
    ?>
    Page affichage

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    session_start();
     
    require(dirname(__FILE__).'/script/connexionDB.php');
     
     echo $_SESSION['login']; 
     echo '&nbsp;&nbsp;';
     if($_SESSION['sexe'] == 'h') { 
          echo '<img src="images/male.png" width="12" height="12" alt="Homme" />';
      }
        else {
             echo '<img src="images/female.png" width="12" height="12" alt="Homme" />';
         }
    ?>

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Août 2011
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 55
    Points : 49
    Points
    49
    Par défaut
    Bonjour,

    J'ai exactement le même problème, qui n'est pas encore résolu (je suis venu là pour poser la question).

    D'après mes recherches, le script de la 1ere page où y'a la fonction header() continue de s’exécuter en arrière plan, alors que le script de la 2e page se lance.
    Vu qu'une variable de session ne peut pas être utilisée par 2 scripts en même temps, ça pose problème.

    Du coup il faudrait écrire le contenu de session (ce qui est fait par défaut une fois que tout le script est fini d'exécuter), appeler header, puis terminer le script.
    Ce qui donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    session_write_close();
    header('location:'.$goto_);    // La variable $goto_ est bien renseignée
    die();
    Sauf que chez moi ça marche pas...

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 21
    Points : 19
    Points
    19
    Par défaut
    Bonjour,

    J'ai eu exactement la même difficulté. Je l'ai résolu non pas avec la fonction die() mais avec la fonction exit() :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    header('location: tchat.php');
    exit();

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Août 2011
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 55
    Points : 49
    Points
    49
    Par défaut
    J'ai également testé avec la fonction exit(), sans succès.

    EDIT : Je viens de tester d'émuler des register globals, comme c'est indiqué dans le manuel php, mais ça change absolument rien dans mon cas.

    Si quelqu'un a des idées pour savoir d'où le problème peut venir, faut absolument pas hésiter à poster ^^

    EDIT Encore : Bon bah pour moi c'est résolu, j'avais oublié que j'avais fait ça, c'est que dans ma page login (puisqu'il s'agit de ça) il y a une petite ligne discrète qui fait un logout, et du coup c'est normal de plus avoir de session après... fallait juste mettre le session_start() après l'appel de ma fonction logout().
    Ce que je comprends pas c'est que malgré le logout, j'arrivais quand même à lire le contenu de la variable $_SESSION qui a été renseigné avant, mais j'avais un SID vide...

Discussions similaires

  1. Session vidée après une redirection.
    Par malicroix dans le forum Langage
    Réponses: 6
    Dernier message: 10/05/2013, 11h51
  2. Session vide après envoi du header
    Par ireolax dans le forum Langage
    Réponses: 2
    Dernier message: 26/06/2012, 13h44
  3. [http] perte de requette http après redirection
    Par okoax dans le forum Serveurs (Apache, IIS,...)
    Réponses: 6
    Dernier message: 05/05/2006, 10h31
  4. [Menu] Problème d'affichage après redirection
    Par Pfeffer dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 22/03/2006, 21h04
  5. [] Datagrid vide après modification des propriétés
    Par SpaceFrog dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 20/09/2002, 16h37

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