$_SESSION bloqué dans une page

Par ItsWidee, il y a 5 ans


Les bases HTML/CSS
Base de données MySQL

Bonjour,

Mon site fraichement mit en ligne, je me rends compte qu'il comporte un bug très problèmatique, m'obligeant à le mettre en maintenance.

J'ai un formulaire de connexion que j'ai réussi à réparer. J'ai cru au début que ce n'était que ça le problème. Néanmoins, en me penchant plus sur le problème, je me rends compte que la session $_SESSION['auth'] reste coincé dans la page de connexion. Où que j'aille, elle disparaît.
Vous trouverez ci-après les codes de différentes pages ainsi que la page "account.php" qui contient une redirection vers la page de connexion lorsque l'utilisateur n'est pas connecté. La page de connexion est censé envoyer l'utilisateur connecté sur la page "account.php", mais celle-ci, ne trouvant pas la session, le renvoit sur la page de connexion.
Plus simplement, quelle que soit la page vers laquelle je vais, je suis deconnecté.

connexion.php : https://pastebin.com/wxCHw3Nk

account.php : https://pastebin.com/xngQVAQN

includes/needed.php :

<?php require_once 'functions.php'; if(session_status() == PHP_SESSION_NONE){ session_start(); } reconnect_from_cookie(); require_once 'vendor/autoload.php';?>

includes/functions.php : https://pastebin.com/Bn476N29

includes/header.php : https://pastebin.com/c3ZATAwQ

13 réponses

ItsWidee, il y a 5 ans

Je viens de vérifier, ce n'est pas la fonction "reconnect_from_cookie();" qui cause ce problème...

bidule, il y a 5 ans

Attend le "session_start()" doit être executé sur chaque page quoi qu'il arrive

  <?php

  session_start();
  if(!isset($_SESSION['auth']){
       echo "Pas de session";
       // redirection vers page de connexion
    }

    dump($_SESSION);
bidule, il y a 5 ans

Salut,

j'aurai fait comme ça:

  <?php
  require_once 'functions.php';

   // "si $_SESSION['auth'] n'existe pas alors je lance la session, sinon c'est qu'elle est crée et je l'utilise."
  if(!isset($_SESSION['auth']){
      session_start();
  }
ItsWidee, il y a 5 ans

Malheureusement, ceci ne change pas le problème... Le $_SESSION['auth'] disparaît quand je change de page.

bidule, il y a 5 ans

Ca ne serai pas ta function "reconnect_from_cookie();" qui poserai problème ?

as-tu éssayé sans pour voir ?

Curvata, il y a 5 ans

Et comme ceci

<?php if(session_status() == PHP_SESSION_NONE){ session_start(); } require_once 'functions.php'; reconnect_from_cookie(); require_once 'vendor/autoload.php';?>
bidule, il y a 5 ans

Regarde ici

PHP SameSite session problem, session doesn't work

en gros soit sur chaque paàge tu fais ça:

    <?php
    session_set_cookie_params(["SameSite" => "Strict"]); //none, lax, strict
    session_set_cookie_params(["Secure" => "true"]); //false, true
    session_set_cookie_params(["HttpOnly" => "true"]); //false, true
    session_start(); //everything before this

soit tu modifie ta config dans le php.ini

       [Session]
        session.cookie_samesite = "Strict"
        session.cookie_secure = 1
        session.cookie_httponly = 1
ItsWidee, il y a 5 ans

J'ai essayé de modifier ça mais la session reste toujours bloqué sur connexion.php

ItsWidee, il y a 5 ans

J'ai essayé mais ça ne change pas le problème

Curvata, il y a 5 ans

J'ai mis ton code en local et j'ai accès à $_SESSION sur l'ensemble des pages, idem pour $_COOKIE.

ItsWidee, il y a 5 ans

Je vais envoyer un message au support de mon hébergeur alors