Maison  >  Article  >  développement back-end  >  Que faire si la session PHP est perdue sur plusieurs pages

Que faire si la session PHP est perdue sur plusieurs pages

藏色散人
藏色散人original
2020-09-29 09:14:591961parcourir

La solution à la perte de session PHP au fil des pages : placez d'abord "session_start();" en haut de la page ; puis configurez le démarrage automatique de la session ou démarrez manuellement la session.

Que faire si la session PHP est perdue sur plusieurs pages

Recommandé : "Tutoriel vidéo PHP"

Aujourd'hui, je souhaite utiliser une session pour y parvenir Juger la connexion de l'utilisateur peut être considéré comme une exploration de la session précédente Après vérification des informations, le mécanisme de fonctionnement de la session est le suivant :

la session est un mécanisme de session. côté serveur. Lorsque le client demande au serveur de créer une session, le serveur détectera d'abord si la demande contient un ID de session unique. Si tel est le cas, cela signifie que le serveur a créé une session pour l'utilisateur. La session de l'utilisateur est récupérée en fonction de l'ID de session que l'utilisateur doit utiliser. S'il n'y a pas d'ID de session, le serveur créera une nouvelle session avec un ID de session unique pour cet utilisateur. Une fois la création terminée, l'ID de session sera renvoyé au client par le serveur et enregistré localement sur le client.

Le mécanisme général de sauvegarde de l'identifiant de session est le cookie, mais comme les cookies peuvent être artificiellement interdits, il est nécessaire de s'assurer qu'une fois les cookies interdits, la session peut toujours être menée via le session, généralement via l'URL. La réécriture est effectuée sous la forme de http://...../xxx;jsessionid= ByOK3vjFD75aPnrF7C2HmdnV6QZcEbzWoWiBYEnLerjQ99zWpBng!-145788764. L'autre se présente sous la forme d'une chaîne de requête attachée à la fin de l'URL, sous la forme. de http://.... ./xxx?jsessionid=ByOK3vjFD75aPnrF7C2HmdnV6QZcEbzWoWiBYEnLerjQ99zWpBng!-145788764 Il n'y a aucune différence entre ces deux méthodes pour les utilisateurs, mais le serveur les gère différemment lors de l'analyse. L'utilisation de la première méthode est également utile pour combiner la session. les informations d'identification avec les paramètres normaux du programme sont distinguées.
Afin de conserver l'état tout au long de l'interaction, cet identifiant de session doit être inclus à la fin de chaque chemin que le client peut demander.

Autre malentendu sur l'échec de session :

Quand on parle du mécanisme de session, on entend souvent un tel malentendu" Tant que vous fermez le navigateur, la session disparaîtra." En fait, vous pouvez imaginer l'exemple d'une carte de membre. À moins que le client ne demande activement au magasin d'annuler la carte, le magasin ne supprimera jamais facilement les informations du client. La même chose est vraie pour les sessions. À moins que le programme ne demande au serveur de supprimer une session, le serveur la conservera. Le programme envoie généralement une instruction pour supprimer la session lorsque l'utilisateur se déconnecte. Cependant, le navigateur n'informe jamais activement le serveur qu'il est sur le point de se fermer avant de se fermer, le serveur n'a donc aucune chance de savoir que le navigateur a été fermé. La raison de cette illusion est que la plupart des mécanismes de session utilisent des cookies de session pour enregistrer les identifiants de session. , et l'identifiant de session disparaît après la fermeture du navigateur, et la session d'origine ne peut pas être trouvée lors de la nouvelle connexion au serveur. Si le cookie défini par le serveur est enregistré sur le disque dur ou si une méthode est utilisée pour réécrire l'en-tête de requête HTTP envoyé par le navigateur et envoyer l'ID de session d'origine au serveur, la session d'origine peut toujours être trouvée lorsque le navigateur est ouvert à nouveau.


C'est précisément parce que la fermeture du navigateur n'entraînera pas la suppression de la session, obligeant le serveur à définir un délai d'expiration pour la seesion, Lorsque le temps écoulé depuis la dernière utilisation de la session par le client dépasse ce délai d'expiration, le serveur peut considérer que le client a cessé d'être actif, puis supprimer la session pour économiser de l'espace de stockage.

D'accord, parlons beaucoup de bêtises, parlons de la solution à la perte de session :

1. session_start(); page autant que possible

2. Si le démarrage automatique de la session n'est pas configuré dans php.ini, vous devez ouvrir manuellement la session avant chaque session : session_start();

3. Session est une variable super globale en php, la même que $_GET, $_POST, $_SERVER, elle doit donc être en majuscule lorsqu'elle est utilisée : $_SESSION['username']=$username;

4. Exemple de transfert entre pages : une page.php transfère $_SESSION['username'] vers b.php :

a.php :

<?php
session_start();$username=$_POST[&#39;username&#39;];$_SESSION[&#39;username&#39;]=$username;
?>

b. php

880e0a19df1d92babf7ec23ac9d82cda

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn