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 :

[Sécurité] Ma variable de session perd son contenu


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    344
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 344
    Par défaut [Sécurité] Ma variable de session perd son contenu
    Bonjour,

    J'ai créé un petit test simple pour me familiariser avec les variables de session.

    Mon premier fichier est le suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?php
    session_start();
     
    $ville = "Nantes";
    $_SESSION["ville"] = $ville;
    session_register("ville");
     
    ?>
     
    <SCRIPT type="text/javascript">
    	window.document.location="<?php echo "test1.php"; ?>";
    </SCRIPT>
    Mon second fichier est le suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?php
    	session_start();
     
    	echo "-".$_SESSION["ville"]."-";
    ?>
    J'ai testé cet exemple en local et cela fonctionne très bien. Ma deuxième page PHP affiche -Nantes-.

    J'ai mis le même exemple en ligne et là ..... surprise ..... ca ne fonctionne plus (il m'affiche --).

    Quelqu'un aurait-il une idée sur ca .....

    Merci de votre aide.

  2. #2
    Membre émérite Avatar de macbook
    Inscrit en
    Février 2006
    Messages
    838
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 838
    Par défaut
    Si tu fais $_SESSION["ville"] = $ville;

    inutile de faire session_register("ville");

    Puis les identifiants de sessions ne sont pas transmis dans les redirections PHP ou javascript.

  3. #3
    Membre éprouvé Avatar de ..:: Atchoum ::..
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    159
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 159
    Par défaut
    Salut,

    Enleve le session_register, car en plus d'être déprécié et inutile, il peut etre la source de ton erreur.


  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    344
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 344
    Par défaut
    Bien entendu, j'ai essayé cette version, et ca ne fonctionne toujours pas ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?php
    session_start();
     
    $ville = "Nantes";
    $_SESSION["ville"] = $ville;
     
    ?>
     
    <SCRIPT type="text/javascript">
       window.document.location="<?php echo "test1.php"; ?>";
    </SCRIPT>

  5. #5
    Membre éprouvé Avatar de ..:: Atchoum ::..
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    159
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 159
    Par défaut
    Les sessions ne sont peut etre pas enregistrées correctement....

    As tu la conf de ton hébergeur, il faut peut etre que tu te créé un répertoire session a la racine pour qu'elle soit enregistrées...
    (Ce qui me parait bizarre c'est que tu aurais un message d'erreur dans ce cas)
    A moins que ca soit un serveur a toi ? Ou il manquerait une petite ligne de conf dans le php.ini

    ?

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    344
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 344
    Par défaut
    As tu la conf de ton hébergeur
    Non mais comment puis-je la récupérer ?

    A moins que ca soit un serveur a toi ?
    Non, ce n'est pas un serveur à moi ...

    Ou il manquerait une petite ligne de conf dans le php.ini
    J'y ai pensé mais en local, je sais le modifier mais en ligne ..... comment peut-on faire ?

  7. #7
    Membre éprouvé Avatar de ..:: Atchoum ::..
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    159
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 159
    Par défaut
    Bah, déja tu pourrais uploader un fichier qui contient :
    Ensuite nous renseigner sur la valeur de session.save_path et sur les autres variables qui te semble bizarres (qui différe avec ta conf)


  8. #8
    Membre émérite Avatar de macbook
    Inscrit en
    Février 2006
    Messages
    838
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 838
    Par défaut
    Déjà le :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $ville = "Nantes";
    $_SESSION["ville"] = $ville;
    Tu le remplaces par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $_SESSION['ville'] = 'Nantes' ;
    Ensuite ta redirection javascript tu la remplaces par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    header ( 'Location: test1.php' . $begin_follow ) ;
    exit() ;
    Avec la variable $begin_follow initialisée comme suit :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    	$end_follow = '' ;
    	$begin_follow = '' ;
    	if ( !isset ($_COOKIE[ ini_get ( 'session.name' ) ] ) )
    	{
    	$end_follow = '&' . SID ;
    	$begin_follow = '?' . SID ;
    	}
    Ainsi tu passes outre le fait qu'un internaute ait activé ou non les cookies.

    Ce qui donne pour la page test.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
    <?php
    	session_start() ;
    	$_SESSION['ville'] = 'Nantes' ;
     
    	$end_follow = '' ;
    	$begin_follow = '' ;
    	if ( !isset ($_COOKIE[ ini_get ( 'session.name' ) ] ) )
    	{
    	$end_follow = '&' . SID ;
    	$begin_follow = '?' . SID ;
    	}
     
    	header ( 'Location: test1.php' . $begin_follow ) ;
    	exit() ;
    ?>
    Et test1.php :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php
    session_start() ;
     
    echo $_SESSION['ville'] ;
     
    ?>
    Et là en principe il ne doit plus y avoir de problèmes.

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    344
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 344
    Par défaut
    session.save_path
    Impossible de connaitre sa valeur a partir de phpinfo()

    Les différences majeurs sont :

    - La version 4.4.2 sur le serveur contre 5.0.4 en local (je ne pense pas que ca vienne de là puisque les sessions fonctionne avec la version 4 de PHP.

    - Server API est Apache en local et CGI sur le serveur.

    - Virtual Directory Support est activé en local et désactivé sur le serveur (je ne sais pas a quoi ca correspond).

    - Thread Safety est activé en local et est désactivé sur le serveur.


    J'ai essayé ton code macbook et il ne fonctionne pas (ni en local, ni sur le serveur). Voici l'erreur :
    Warning: Cannot modify header information

  10. #10
    Membre émérite Avatar de macbook
    Inscrit en
    Février 2006
    Messages
    838
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 838
    Par défaut
    Citation Envoyé par leSeb
    Warning: Cannot modify header information
    Tu envois du code html avant. Je pensais qu'il s'agissais d'un fichier PHP unique. Peut-être il y a t'il un include avant ?

  11. #11
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    344
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 344
    Par défaut
    Tu envois du code html avant. Je pensais qu'il s'agissais d'un fichier PHP unique. Peut-être il y a t'il un include avant ?
    Non, non, mon fichier ne contient que le code donné. Et j'affiche ma page en saisissant l'URL à la main dans le navigateur ...

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 24
    Par défaut
    Est-ce qu'il n'y a pas un caractère invisible avant ton session_start()?
    Ca arrive parfois.

  13. #13
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    344
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 344
    Par défaut
    Est-ce qu'il n'y a pas un caractère invisible avant ton session_start()?
    Et bien non, tujours pas .............

    Personne n'a d'idée ....

  14. #14
    Membre émérite Avatar de macbook
    Inscrit en
    Février 2006
    Messages
    838
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 838
    Par défaut
    Je sèche...

  15. #15
    Membre émérite Avatar de Yobs
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    675
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2004
    Messages : 675
    Par défaut
    est ce qu'il n'y a pas de code html avant ton code php?

  16. #16
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    344
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 344
    Par défaut
    est ce qu'il n'y a pas de code html avant ton code php?
    Non mes fichiers ne contiennent que le code que je vous ai transmis.

  17. #17
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 24
    Par défaut
    Tu peux essayer de faire suivre ta session avec session_id() lorsque tu fais ta redirection, qui permet de recuperer tes sessions lorsque le navigateur n'accepte pas les cookies par exemple.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    header ( 'Location: test1.php?PHPSESSID=session_id()');

  18. #18
    Membre éprouvé Avatar de ..:: Atchoum ::..
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    159
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 159
    Par défaut
    session.save_path
    Impossible de connaitre sa valeur a partir de phpinfo()
    Euh, tu n'as pas de section Session ? dans ton phpinfo ?

    Ca vient peut etre de la non ? ca ne choque personne ?


  19. #19
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    344
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 344
    Par défaut
    J'ai trouvé ......

    Il semblerais qu'il y ait des conflits entre les variables de session et les variables locales ????? bizzare mais si on utilise des noms différents, et bien ca fonctionne.

    Merci à tous.

Discussions similaires

  1. Réponses: 18
    Dernier message: 13/06/2007, 12h08
  2. Réponses: 2
    Dernier message: 05/10/2004, 22h43
  3. Effacer les variables de session
    Par glsn dans le forum ASP
    Réponses: 2
    Dernier message: 12/12/2003, 13h42
  4. Variable de session
    Par Sadneth dans le forum ASP
    Réponses: 6
    Dernier message: 14/11/2003, 11h12
  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