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

EDI, CMS, Outils, Scripts et API PHP Discussion :

Problème avec les sessions php depuis que j'ai installé php 7.2.0 !


Sujet :

EDI, CMS, Outils, Scripts et API PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre prolifique Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 873
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 873
    Par défaut Problème avec les sessions php depuis que j'ai installé php 7.2.0 !
    Salut à tous.

    J'ai un problème avec les sessions php depuis que je suis sous php version 7.2.0.
    Le script php que j'exécute est le même dans les deux cas ci-après. C'est aussi le même fichier php.ini, donc le même paramétrage pour les sessions.

    Voici mon script 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
    <!doctype html>
    <html>
    <head>
    <meta charset="ISO-8859-15" />
    <title>Session PHP</title>
     
    <script type="text/javascript" src="Js/Script.js"></script>
    <link rel="stylesheet" type="text/css" href="Css/Styles.css" />
    </head>
     
    <body>
    <h1>Session PHP</h1>
    <br />
    <?php
    session_start();
     
    $_SESSION['hello'] = "Ca fonctionne !";
    ?>
     
    <a href="index2.php">page suivante</a>
    </body>
    </html>
    Et voici le second script, celui qui se nomme "index2.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
    <!doctype html>
    <html>
    <head>
    <meta charset="ISO-8859-15" />
    <title>Session PHP</title>
     
    <script type="text/javascript" src="Js/Script.js"></script>
    <link rel="stylesheet" type="text/css" href="Css/Styles.css" />
    </head>
     
    <body>
    <h1>Session PHP</h1>
    <br />
    <pre>
    <?php
    session_start();
     
    echo "Résultat : ".$_SESSION['hello']."\n";
    ?>
    </pre>
    </body>
    </html>
    Rien d'extraordinaire ! Je déclare une variable "hello" dans la première page et je lis cette variable qui a été stocké dans la session dans la seconde page.

    Voici le premier cas que j'obtiens :



    Comme on peut le voir, je récupère bien ma chaine de caractères, soit "ca fonctionne !".

    Voici le second cas que j'obtiens :



    J'ai perdu le contenu de ma variable "hello" qui était stockée dans la session.
    Tout se passe comme si j'avais une nouvelle session mais à vide.

    Quel est la différence entre ces deux cas ?

    Dans le premier cas, le virtualHost que j'utilise travaille avec une adresse IPv6 en https et ma connexion est sécurisée via un certificat let's Encrypt.

    Dans le second cas, le virtualHost que j'utilise travaille avec une adresse IPv4 en http et ma connexion n'est pas sécurisée. Autrement dit, je suis en local.

    Je ne comprends pas cette différence de fonctionnement !

    @+

  2. #2
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 667
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 667
    Par défaut
    si vous utilisez le même fichier php.ini, est ce que le chemin de stockage existe bien et peut être écrit par PHP pour le 2e serveur ?

  3. #3
    Membre prolifique Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 873
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 873
    Par défaut
    Salut Mathieu.

    Citation Envoyé par Mathieu
    si vous utilisez le même fichier php.ini, est ce que le chemin de stockage existe bien et peut être écrit par PHP pour le 2e serveur ?
    Le chemin existe bien dans le fichier "php.ini". Voici l'extrait du fichier "php.ini" :
    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
    [session]
    session.auto_start = Off
    
    session.cache_expire = 180
    session.cache_limiter = nocache
    
    session.cookie_domain =
    session.cookie_httponly = 
    session.cookie_lifetime = 0
    session.cookie_path = /
    session.cookie_secure =
    
    session.gc_divisor = 1000
    session.gc_maxlifetime = 3600
    session.gc_probability = 1
    
    session.lazy_write = On
    session.name = PHPSESSID
    session.referer_check =
    
    session.save_handler = files
    session.save_path = "f:/Wamp/tmp"
    
    session.serialize_handler = php
    
    session.sid_bits_per_character = 4
    session.sid_length = 32
    
    session.upload_progress.cleanup = On
    session.upload_progress.enabled = On
    session.upload_progress.freq =  "1%"
    session.upload_progress.min_freq = "1"
    session.upload_progress.name = "PHP_SESSION_UPLOAD_PROGRESS"
    session.upload_progress.prefix = "upload_progress_"
    
    session.use_cookies = 1
    session.use_only_cookies = 1
    session.use_strict_mode = 0
    session.use_trans_sid = 0
    Comme vous le constatez, je suis sous windows 10 pro et j'utilise WampServer.
    Le répertoire en question existe bien et j'ai bien des fichiers dont le nom commence par "sess_".

    Il n'y a pas deux serveurs WampServer, mais un seul serveur ayant, dans mon cas, deux noms de sites différents.

    Je refais le test afin de bien vous faire comprendre ce qui m'arrive.
    Je détruis tous les fichiers dans le répertoire "f:/Wamp/tmp".
    Puis je refais le même test.

    Cas 1)

    Je suis sur la première page de mon test.
    J'ai bien eu la création du fichier "sess_74b0832c90102e7f59cd1f61b980c06f".
    Je signale qu'à ce moment, je n'ai qu'un et un seul fichier "sess_" dans le répertoire "f:/Wamp/tmp".

    Voici son contenu :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    hello|s:15:"Ca fonctionne !";
    Je passe à la seconde page. Tout est correcte à l'affichage !
    Et j'ai toujours un et un seul fichier "sess_" dans le répertoire "f:/Wamp/tmp".

    C'est le cas qui fonctionne correctement.

    Cas 2)

    J'ai détruit le contenu du repertoire "f:/Wamp/tmp".

    Je suis sur la première page de mon nouveau test.
    J'ai bien eu la création du fichier "sess_4589d8b7f5998c9cc2bc94546c12b895".
    Je signale qu'à ce moment, je n'ai qu'un et un seul fichier "sess_" dans le répertoire "f:/Wamp/tmp".

    Voici son contenu :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    hello|s:15:"Ca fonctionne !";
    Il est identique à mon cas précédent.

    Maintenant, je passe à la seconde page et l'affichage m'indique qu'il n'a pas récupéré ma variable "hello" stockée dans la session
    Je constate que j'ai un second fichier de nom "sess_2558d98e0aea4edfae0c82a50cc01e8e".
    Autrement dit, j'en ai deux maintenant. Pourquoi ?

    Et le contenu de ce nouveau fichier "sess_" est vide.
    D'où l'absence de ma variable

    Comment peut-on expliquer ce comportement et comment le résoudre ?

    P.S.: j'ai volontairement simplifié le problème afin de montrer l'anomalie que je rencontre.
    Heureusement pour moi, le cas qui fonctionne est le cas qui est en ligne.
    Celui qui ne fonctionne pas c'est l'accès en local.

    Est-ce un problème de paramétrage dans le fichier "php.ini" ?

    @+

  4. #4
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 667
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 667
    Par défaut
    Si un nouveau fichier de session est créé, cela veut surement dire que PHP n'arrive pas à récupérer le cookie de session.

    Un autre test à faire sera d'ouvrir le moniteur réseau (par exemple ici si vous utilisez Firefox : https://developer.mozilla.org/fr/doc...ur_r%C3%A9seau)
    Ensuite à l'appel de la 1re page, regardez dans le moniteur si le cookie de session est bien là dans les entêtes de la réponse. Et ensuite appelez la 2e page qui lit la session et regardez dans le moniteur si le cookie de session est envoyé dans les entête de la requête.

  5. #5
    Membre prolifique Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 873
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 873
    Par défaut
    Salut Mathieu.

    Après une très très longue recherche, j'ai enfin trouvé mon problème.
    L'origine se trouve dans Apache, et plus particulièrement dans le fichier "httpd.conf" .
    Afin de valider le référencement de mon site, j'ai introduit des règles concernant le "module hearders". Voici les lignes que j'ai rajouté :
    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
    #
    # L'en-tête HTTP Strict Transport Security (HSTS)
    #
    	Header always set Strict-Transport-Security "max-age=300; includeSubDomains; preload"
    #
    # sécurité des cookies
    #
    #	Header edit Set-Cookie ^(.*)$ $1;HttpOnly;Secure
    #
    # sécurité clickjacking
    #
    	Header always set X-FRAME-OPTIONS "DENY"
    #
    # attaque XSS
    #
    	Header always set X-XSS-Protection "1; mode=block"
    #
    # détection automatique du type des ressources
    #
    	Header always set X-Content-Type-Options "nosniff"
    #
    La règle qui pose problème est "la sécurité des cookies". Ce que j'ai mis en commentaire (#).
    Ce que je ne comprends pas, ces règles sont générales à tous les sites, aussi bien celles qui sont locaux que celles qui sont distantes.
    Or les sites distants fonctionnent correctement (voir mon premier message cas 1) mais pas celles qui sont locaux (cas 2).

    Trois questions :

    1) comment paramétrer correctement ces quatre nouvelles règles dans apache afin de ne plus reproduire mon problème ou un autre ?

    2) existe-t-il d'autres règles de sécurités concernant le module "headers".

    3) Pourquoi existe-t-il une différence en mon site local et l'autre distante ?

    @+

  6. #6
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 667
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 667
    Par défaut
    Si le soucis concerne la configuration d'Apache, je vous conseille de créer une nouvelle discussion dans ce forum :
    https://www.developpez.net/forums/f2...he-iis/apache/

  7. #7
    Membre prolifique Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 873
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 873
    Par défaut
    Salut Mathieu.

    Je vais suivre votre conseil et je vais d'une part clôturer ce sujet comme résolu, et d'autre part ouvrir un autre sujet sur mon nouveau problème de paramétrage du module headers d'apache.

    Merci de votre participation.
    Cordialement.
    @+

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

Discussions similaires

  1. [Cookies] Problème avec les sessions PHP !!!
    Par boukay dans le forum Langage
    Réponses: 4
    Dernier message: 14/02/2006, 17h32
  2. Problème avec les sessions!!!
    Par frutix dans le forum Langage
    Réponses: 2
    Dernier message: 20/01/2006, 11h35
  3. problème avec les sessions
    Par DiverSIG dans le forum Langage
    Réponses: 2
    Dernier message: 28/11/2005, 11h01
  4. Problèmes avec les Sessions
    Par alexthomas dans le forum Langage
    Réponses: 5
    Dernier message: 20/11/2005, 21h53
  5. Problème avec les sessions
    Par philippef dans le forum Langage
    Réponses: 2
    Dernier message: 27/10/2005, 15h19

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