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 vidée après une redirection.


Sujet :

Langage PHP

  1. #1
    Candidat au Club
    Femme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2011
    Messages : 5
    Points : 2
    Points
    2
    Par défaut Session vidée après une redirection.
    Bonjour,

    J'ai regardé sur plusieurs forum, mais bien qu'ayant noté plusieurs soucis mentionnés ressemblant au mien, aucune solution n'a marché. Je vous soumets donc mon petit problème (sur lequel je suis depuis deux jours et qui menace de me rendre dingue, soyons honnête), au cas où vous auriez une idée . Je précise que ce souci ne se pose que quand je transferts mon site sur mon hébergeur, et pas du tout en local où tout fonctionne à merveille (comme d'habitude, pourquoi faire simple ...)

    Je créé donc un site php et je rencontre des soucis de session : la même session est conservée au fil des redirections/authentification, mais son contenu est 'vidé' quand j'utilise un lien.

    Je détaille :

    J'utilise une page index.php dans laquelle est inclue une authentification.php, un menu.php et un contenu.php.
    mon authentification et mon menu proposent à l'utilisateur authentifié un lien le redirigeant vers index.php, soit la même page, mais ajoutant une variable d'url par la méthode GET.
    Des que l'on clique sur ce lien, ma session est vidée et l'utilisateur se retrouve donc face au formulaire d'authentification.
    Pourtant l'identifiant de session est bien conservé, il s'agit du même, même quand la session a été vidée.
    Le session_start(); est bien en début de la page index.php.

    Mon souci est-il du au fait que tous les éléments sont inclus dans la même page index.php ?
    Dans ce cas pourquoi se produirait-il qu'en local et pas sur mon hébergeur ?

    Ci joint le code reproduisant cette erreur, il ne s'agit pas du code du site en question qui contient trop d'élément inutile à la résolution du souci,
    mais d'une version volontairement extrêmement épurée afin de ne mettre en avant que le problème de fonctionnement.

    Je vous remercie de l'attention que vous porterez à mon souci et vous souhaite une excellente journée.

    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
     
    <?php
    session_start();
     
    echo "ID de session : " . session_id()."<br/>";	
     
    if (!empty($_SESSION)) {
    	echo '<pre>$_SESSION = ';
    	print_r($_SESSION);
    	echo '</pre>';
    }
     
    include ("authentification.php");
    include ("menu.php");
    include ("contenu.php");
    ?>
    authentification.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
     
    <?php
     
    $formulaire = "<form action='index.php' method='post'>
    ok : <input type='text' name='ok' value='ok' maxlength='15' size='15' /> 
    <input type='submit' value='Valider' />
    </form>";
     
    if ( (!isset($_SESSION['ok']) || $_SESSION['ok'] == "") && ( !isset($_POST['ok']) ) )
    {
    	echo $formulaire;
    }
    else
    {
    	if (isset($_POST['ok']) )
    	{
    		if($_POST['ok'] == "ok")
    		{
    			$_SESSION['ok'] = $_POST['ok'] ;
    			echo ($_SESSION['ok']."<br/>");
    			echo "<a href='index.php?var=contenu' >Contenu</a><br/>";
    			echo "<a href='deconnexion.php'>Me deconnecter.</a></br></br>";
    		}
    		else
    		{
    			echo("non<br/>");
    			echo $formulaire;
    		}
    	}
    	else
    	{
    		echo ($_SESSION['ok']."<br/>");
    		echo "<a href='index.php?var=contenu' >Contenu</a><br/>";
    		echo "<a href='deconnexion.php'>Me deconnecter.</a></br></br>";
    	}
    }
    ?>
    menu.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <?php
     
    if (isset($_SESSION['ok']) )
    {
    	echo "<a href='index.php?var=contenu' >Contenu</a><br/><br/>";
    }
     
    ?>
    contenu.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <?php
     
    if(isset($_GET['var']) && isset($_SESSION['ok']) )
    {
    	echo "Ceci est le contenu. <br/>";
    }
     
    ?>

  2. #2
    Expert confirmé
    Avatar de N1bus
    Homme Profil pro
    Dev. Web & OpenERP
    Inscrit en
    Janvier 2003
    Messages
    2 827
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Dev. Web & OpenERP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 827
    Points : 5 673
    Points
    5 673
    Par défaut
    Bonjour,

    je n'ai pas lu tout le code, mais j'ai eu un jour un problème de session qui ressemble un peu au tien.

    En regardant les logs d'Apache, je me suis aperçu que mon favicon.ico était manquant sur le serveur, ce qui provoquait une redirection et ça me vidait la session

    Regarde la discussion ici

  3. #3
    Candidat au Club
    Femme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2011
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Bonjour,

    Je te remercie de ton intérêt pour mon souci. Hélas, aucun élément n'a été oublié dans le transfert sur mon hébergeur. Dans l'exemple que j'ai indiqué ci-dessous, je n'utilise de surcroît aucune icône ou image. Le problème reste entier. J'envisage le sacrifice de poulet pour m'aider à le résoudre... ou de chats ... plus simple à trouver... J'en profite pour préciser que ma version de php est la 5.3, comme chez mon hébergeur qui s'avère être Oxito.

  4. #4
    Candidat au Club
    Femme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2011
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Quelques informations complémentaires :

    En regardant les logs d'Apache de mon hébergeur, que ce soit concernant mon site de test ci-dessus, ou le site principal où je rencontre ce souci, je découvre :

    [Thu May 09 11:36:48 2013] [warn] [client 92.128.110.87] mod_fcgid: stderr: PHP Warning: session_start() [<a href='function.session-start'>function.session-start</a>]: open(/var/www/vhosts/(...)/tmp/sess_adc2e55280ef1b3156fab7563ca3e34b, O_RDWR) failed: No such file or directory (2) in /vdir/www.(...)/index.php on line 2, referer: http://www.(...)/index.php

    [Thu May 09 11:36:48 2013] [warn] [client 92.128.110.87] mod_fcgid: stderr: PHP Warning: Unknown: open(/var/www/vhosts/(...)/tmp/sess_adc2e55280ef1b3156fab7563ca3e34b, O_RDWR) failed: No such file or directory (2) in Unknown on line 0, referer: http://www.(...)/index.php

    [Thu May 09 11:36:48 2013] [warn] [client 92.128.110.87] mod_fcgid: stderr: PHP Warning: Unknown: Failed to write session data (files). Please verify that the current setting of session.save_path is correct (/var/www/vhosts/(...)/tmp) in Unknown on line 0, referer: http://www.(...)/index.php
    J'ai tenté de créer un dossier Sessions à l'arborescence des sites concernés par le souci, et j'ai placé juste au-dessus du session_start();, dans index.php un :

    session_save_path('/var/www/vhosts/(...)/TestSessions/Sessions/');

    Mais je rencontre exactement le même problème, sauf qu'il concerne ce nouveau dossier dans les logs d'Apache ...
    Je vais poster mon problème à mon hébergeur, on ne sait jamais, peut-être pourront-ils m'aiguiller.

    A bientôt pour la suite des aventures ...

  5. #5
    Expert confirmé
    Avatar de N1bus
    Homme Profil pro
    Dev. Web & OpenERP
    Inscrit en
    Janvier 2003
    Messages
    2 827
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Dev. Web & OpenERP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 827
    Points : 5 673
    Points
    5 673
    Par défaut
    Ah oui dis donc, on dirait que tes fichiers de sessions sont détruits.
    Ça pourrait effectivement venir d'un problème de config du serveur.

    As tu regardé avec <?php phpinfo(); ?> la config des sessions ?

  6. #6
    Candidat au Club
    Femme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2011
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Je n'ai accès qu'à une partie seulement des informations du phpinfo() sur mon hébergeur, les suivantes :

    session.gc_divisor 	1000 	
    session.gc_maxlifetime	1440
    session.gc_probability 	1 	
    session.save_handler 	files 	
    session.save_path	/var/www/vhosts/www.(...)/tmp 	
    session.use_cookies 	1 	
    url_rewriter.tags 	"a=href,area=href,frame=src,input=src,form=fakeentry" 
    et tout me semble concordant avec ce dont je dispose en local.

  7. #7
    Candidat au Club
    Femme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2011
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Souci Résolu !!

    Bonjour,

    Après mon message à mon hébergeur ce dernier m'a répondu que le chemin des sessions indiqué dans la configuration de PHP n'était pas correct, et qu'il avait corrigé la configuration et rechargé les processus PHP. En réessayant à l'instant tout m'a l'air en ordre et fonctionne aussi bien en local que sur mon hébergeur.

    Je vous souhaite donc une excellente journée.

    A bientôt.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 12/06/2012, 22h04
  2. Lire l'URL après une redirection ?
    Par victorcouste dans le forum Langage
    Réponses: 6
    Dernier message: 22/08/2008, 17h27
  3. récupérer les valeurs POST après une redirection
    Par mioke dans le forum Langage
    Réponses: 2
    Dernier message: 22/05/2008, 11h12
  4. Récupérer le tableau $_POST aprés une redirection
    Par tintin72 dans le forum Langage
    Réponses: 5
    Dernier message: 14/03/2008, 09h37
  5. Variables qui disparaissent aprés une redirection
    Par xclam dans le forum Langage
    Réponses: 2
    Dernier message: 22/09/2007, 11h38

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