64 votes

Perte de session lors du passage de HTTP à HTTPS en PHP

En envoyant l'utilisateur vers une page de paiement, il passe de http://sitename.com a https://sitename.com .

En conséquence, $_SESSION les variables sont perdues.

Le site dispose d'un certificat SSL valide qui peut ou non être utile.

1 votes

Quel navigateur utilisez-vous ? Y a-t-il des sous-domaines impliqués, tels que "www." ? Pouvez-vous reproduire le problème ailleurs ?

0voto

it depends Points 2361

Par défaut, je m'attendrais à ce qu'un navigateur traite les connexions à http et https comme des sessions complètement différentes. Bien que la convention soit que http://someUrl/ y https://someUrl/ pointeront vers la même page, mais ce n'est pas garanti. Vous pourriez avoir des sites complètement différents fonctionnant sur le port 80 (http) et le port 443 (https).

Je ne connais pas PHP, mais en général, je ne m'attendrais pas à ce que les variables de session soient librement accessibles entre les sessions sécurisées et non sécurisées. Par exemple, je ne m'attendrais pas à ce que le numéro de carte de crédit de ma dernière commande soit accessible à toutes les pages non sécurisées que je visiterai par la suite.

Pardonnez cette réponse qui ne fait pas autorité, mais je me suis dit que j'allais ajouter mon grain de sel puisqu'il n'y a pas beaucoup de réponses.

0voto

Brian Barrett Points 1

Avez-vous une IP dédiée ? Sur certains environnements partagés, le https et le http sont acheminés par des serveurs différents, de sorte que la commutation perd l'accès aux cookies puisqu'ils se trouvent sur des domaines différents.

les solutions seraient : ip dédié

forcer https sur toutes les pages à tout moment

0voto

Willian Santana Points 41

J'ai eu un problème similaire, mais cette solution a été bonne pour moi, peut-être aidera-t-elle d'autres personnes à l'avenir.

ajoutez ceci dans votre php.ini

suhosin.session.cryptdocroot = Off

suhosin.cookie.cryptdocroot = Off

0voto

UWU_SANDUN Points 567

J'ai trouvé une solution. Essayez-la.

$_SESSION['test'] = 'test';
session_regenerate_id(true);

header("Location: /");// the header must be sent before session close
session_write_close(); // here you could also use exit();

0voto

Midz Elwekil Points 398

J'ai eu ce problème en passant de http à https et j'ai pu résoudre ce problème en changeant l'URL du site web de http://example.com a https://www.example.com

L'ajout du www à l'URL a résolu ce problème pour moi.

Merci.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X