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

12 réponses


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
Auteur

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

ItsWidee
Auteur

Voilà mon problème : https://youtu.be/XvQ1RHr6HXs

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

as-tu éssayé sans pour voir ?

ItsWidee
Auteur

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

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);
ItsWidee
Auteur

C'est un problème : https://imgur.com/ewK8T3I
Voilà ce que j'obtiens

Et comme ceci

<?php
if(session_status() == PHP_SESSION_NONE){
    session_start();
}
require_once 'functions.php';

reconnect_from_cookie();

require_once 'vendor/autoload.php';?>

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
Auteur

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

ItsWidee
Auteur

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

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

ItsWidee
Auteur

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