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
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();
}
Malheureusement, ceci ne change pas le problème... Le $_SESSION['auth']
disparaît quand je change de page.
Ca ne serai pas ta function "reconnect_from_cookie();" qui poserai problème ?
as-tu éssayé sans pour voir ?
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);
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
J'ai mis ton code en local et j'ai accès à $_SESSION
sur l'ensemble des pages, idem pour $_COOKIE
.