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é] Comportement étrange de sessions


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Inscrit en
    Mai 2005
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 36
    Points : 13
    Points
    13
    Par défaut [Sécurité] Comportement étrange de sessions
    Bonjour à tous ^^

    Voilà j'avais une appli php qui tournait très bien jusqu'à ce midi, elle présente un problème de session... Bref j'ai fait un test tout bête :

    fichier index.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <?php session_start();
    echo $_SESSION['test'];
    include ('securite.php'); ?>
    fichier securite.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <?php $_SESSION['test'] = "OK"; ?>
    <?php echo $_SESSION['test']; ?>
    Lorsque je vais sur la page index.php j'affiche $_SESSION['test'] qui est vide, j'intègre la page sécurité qui me place OK dans la variable test en session et me l'affiche. Résultat de la page : OK

    Lorsque je vais une seconde fois sur la page index, et bien je n'ai pas mon premier echo, donc comme pour la première fois je n'ai qu'un OK et non deux.

    Plus étrange, si j'ajoute au fichier securite.php un
    et que je vais dessus, OK s'affiche... Je retourne sur index.php et là j'ai bien mes 2 OK qui s'affichent.

    Donc visiblement il n'arrive pas à placer une variable en session via l'include, je n'ai jamais eu ce soucis avant, donc est-ce moi qui délire ou est-ce un comportement normal, dans ce cas pourquoi jusqu'à ce midi cela fonctionnait ? ^^

    A noter que j'ai testé sur 1and1, Free, et serveur dédié, comportement identique...

    Une idée ?

    PS : J'ai eu une soirée bien arrosée hier soir, donc là je vais me coucher, cela fait 2 heures que je fais des tests et que je n'arrive à rien...

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 514
    Points : 631
    Points
    631
    Par défaut
    Bonjour,
    tout ceci fonctionne parfaitement chez moi (PHP 5.2.5).

    Code index.php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php
     
      session_start();
     
      if (isset($_SESSION['test'])) echo $_SESSION['test'];
     
      include('inc-var.php');  
     
    ?>

    Code inc-var.php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?php
     
      if (!isset($_SESSION['test'])) $_SESSION['test'] = 'OK';
     
      echo $_SESSION['test'];
     
    ?>

    Le premier accès à index.php affiche "OK" et toutes les autres actualisations affichent "OKOK".

    Cordialement,
    DaRiaN.

  3. #3
    Membre à l'essai
    Inscrit en
    Mai 2005
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 36
    Points : 13
    Points
    13
    Par défaut
    Hé hé merci pour ta réponse mais cela ne marche pas enfin plus plutôt vu que cela fonctionnait avant... de mon côté.

    J'ai copié/collé ton exemple (identique au mien avec verifs en plus) sur un compte FREE (php 4.4.3), sur un compte 1and1 (php 5.2.4).

    Cela fonctionne cependant sur ma dedibox en 5.2.5 !

    Une idée ?

    Edit : A noter que sur Free et 1and1 j'ai ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /xxx/index.php:1) in /xxx/index.php on line 1
     
    Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /xxx/index.php:1) in /xxx/index.php on line 1

  4. #4
    Membre à l'essai
    Inscrit en
    Mai 2005
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 36
    Points : 13
    Points
    13
    Par défaut
    Eurêka j'ai trouvé, visiblement c'est Dreamweaver qui me balance un caractère "invisible en début de fichier", si je prends notepad++ et que j'entre mon code cela marche niquel, donc de là à savoir pourquoi d'un coup il déconne...

    Bref logiquement c'est bon, si je trouve pour Dreamweaver je posterai ici

    Merci de ton aide DaRiaN

    Edit : Voilà c'est à cause de l'encodage UTF-8 et de ceci :
    http://www.unicode.org/faq/utf_bom.html#BOM

    placé en début de fichier, cependant c'est étrange que le problème soit apparu d'un coup !

    Dans Dreamweaver il est possible dans les propriétés de la page de ne pas inclure ce BOM.

    Tout est OK maintenant, bien content d'en être sorti, et au moins je me coucherai moins c#n ^^ (Pas comme cet apreme )

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

Discussions similaires

  1. Comportement étrange de session
    Par garheb dans le forum Langage
    Réponses: 2
    Dernier message: 10/10/2013, 18h13
  2. Comportement étrange apres une désinstallation
    Par Sunchaser dans le forum Excel
    Réponses: 4
    Dernier message: 06/08/2005, 19h44
  3. comportement étrange d'une jointure ...
    Par amenis dans le forum PostgreSQL
    Réponses: 5
    Dernier message: 10/02/2005, 21h27
  4. [Système][Runtime][Exec] Comportement étrange au lancement de BeSweet
    Par divxdede dans le forum API standards et tierces
    Réponses: 1
    Dernier message: 06/06/2004, 09h54
  5. Réponses: 2
    Dernier message: 22/09/2003, 11h23

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