8771 sujets

Développement web côté serveur, CMS

Bonjour.

Je développe deux sites Web qui comportent une partie compte perso avec inscription/connexion. J'utilise donc une session pour gérer ça de façon très classique.
Pour ouvrir une session, j'utilise un fichier appelé en tout premier de chaque page (absolument rien avant) et qui contient le code que voici :


<?php
header('Content-type: text/html; charset=utf-8');
setlocale(LC_TIME, 'fr_FR');
date_default_timezone_set('Africa/Brazzaville');

ini_set("session.save_handler", "files");
ini_set("session.save_path", "Bidon");

ini_set("session.cookie_secure", 1);

ini_set("session.use_cookies", 1);
ini_set("session.use_only_cookies", 1);
ini_set("session.cookie_httponly", True);
ini_set("session.cookie_samesite", "Strict");
ini_set("session.use_trans_sid", 0);

ini_set("session.hash_function", "sha512");

session_set_cookie_params(3600);

session_start();
?>


Environnement : MAMP PRO en local.

Sur le premier site, tout fonctionne parfaitement.
Sur le second, chaque ouverture de page, et donc chaque appel au code ci-dessus, semble créer une nouvelle session : un nouveau cookie apparait à chaque fois dans le dossier Bidon. Du coup, je perds la session en cours et plus rien ne fonctionne.

Qu'est-ce qui peut bien générer un tel bug ???
D'avance merci
Modifié par louisss (22 May 2023 - 18:04)
Rebonjour.

Bon, ben j'ai trouvé. La ligne qui pose problème dans mon code, c'est celle-là :
ini_set("session.save_handler", "files");


Si quelqu'un sait me dire pourquoi, je suis preneur !
Merci
Modifié par louisss (26 May 2023 - 11:47)
Bon, je croyais avoir résolu le problème, mais pas du tout. Il est revenu discrètement et je comprends encore moins pourquoi...
J'ai remis cette ligne
ini_set("session.save_handler", "files");


Et ça ne change rien.
Quel est donc le problème ???
Bon, cette fois-ci je pense avoir vraiment résolu le problème.

Visiblement, ma routine d'ouverture de session n'a aucun problème.
Le problème viendrait du fait que lorsque je commence à utiliser une session (lorsqu'un utilisateur crée un compte ou ouvre le sien), j'avais mis une redirection juste après l'initialisation de la première variable de session. Un header, autrement dit.
Et d'après ce que j'ai compris en creusant le sujet, juste après ce header, il faut mettre un exit();

Pour l'instant, je dirais que ça a résolu mon problème...