8768 sujets

Développement web côté serveur, CMS

Bonjour,

Sur un navigateur (en l’occurrence firefox) mon site php en local n'est pas capable de récupérer des variables de session, je suspecte fortement la désactivation du cookie PHPSESSID,

message obtenu en console :

Le cookie « PHPSESSID=...» a été rejeté par les autorisations définies par l’utilisateur ou l’utilisatrice.

Je pourrais bien sûr l'activer mais sur les ordinateurs des futurs utilisateurs, je n'irait pas leur dire de modifier leurs préférences de navigateur. J'imagine qu'il y a donc une alternative à ce cookie pour faire fonctionner la session mais je n'ai rien trouvé qui soit fiable pour l'instant.

Merci d'avance pour votre aide
Modérateur
Bonjour,

Sur quelle machine et quel navigateur testes-tu ?

Quel est le paramétrage concernant les cookies sur le navigateur utilisé ?

Amicalement,
Bonjour,
Merci de m’avoir répondu
Je suis sur Mac OS et ce n’est que sur Firefox que le cookie est rejeté. J’imagine que je dois avoir une extension ou un parmétrage spécial.
Je ne souhaite pas résoudre le problème sur mon ordinateur mais lorsque le site sera déployé, avoir la possibilité d'utiliser les sessions quel que soit le navigateur et extensions du visiteur.
Les sessions me servent par exemple à éviter la soumission répétitive d'un formulaire et me sont donc essentielles pour le bon fonctionnement du site. J'arrive à utiliser les sessions de Symfony mais tout essai avec des fonctions natives de php aboutit à cette erreur.
Ce que je recherche est d'avoir un système alternatif au cookie PHPSESSID.
Bonne journée
Modérateur
Bonjour,

C'est important de déterminer quel paramétrage chez toi provoque cette erreur, parce que dans le cas général, cette erreur n'apparait pas.

Sans cette information, d'une part on ne peut pas trouver de contournement approprié. Et d'autre part, on ne peut pas écarter une erreur dans la logique de ton code. Et si ça se trouve, on va voir que c'est une configuration tout à fait exceptionnelle que personne d'autre ou presque n'a.

Par ailleurs, mettre en place un système alternatif au fonctionnement standard du mécanisme de session est selon moi tout simplement une très mauvaise idée. Par exemple, un utilisateur qui bloquerait "tous les cookies" (mais bon, pour l'instant, on ne sait pas si c'est ça qui est en place sur ton firefox) n'irait pas loin sur internet. Même des sites comme facebook ne fonctionnent plus dans ces cas-là.

Après, si vraiment tu penses que c'est absolument nécessaire, bah, la solution, c'est une table dans ta base de données, où tu enregistres les utilisateurs qui se sont "connectés" (en y enregistrant ce que tu peux comme information les concernant, comme par exemple son ip + quelques autres trucs à ta convenance). Et à chaque page, tu vérifies dans ta base si l'utilisateur est déjà "connecté" en comparant avec ce que tu sais déjà de lui. Mais bon, c'est quasi certain que ça ne sera pas très fiable, car on n'est jamais sûr de ce qu'un navigateur envoie vers le serveur : il y en aura toujours qui auront des configurations cachant un maximum de trucs.

Amicalement,
Modifié par parsimonhi (12 Nov 2020 - 14:21)
Meilleure solution
Merci beaucoup pour cette réponse qui m'a beaucoup aidé,
vous avez eu raison pour la configuration exceptionnelle, les cookies n'étaient pas bloqués sur le navigateur mais (pour une raison étrange...) uniquement sur le port de localhost que j'utilise (ce qui explique que Symfony arrivait à fonctionner sur un autre port).
Je vais donc juste interdire les actions que je vérifie avec les session si le cookie de session est désactivé.
Bonne fin de journée.