Maison > développement back-end > Problème PHP > Que dois-je faire si la livraison PHP sur plusieurs pages échoue ?

Que dois-je faire si la livraison PHP sur plusieurs pages échoue ?

醉折花枝作酒筹
Libérer: 2023-03-10 19:44:01
avant
1929 Les gens l'ont consulté

Cet article vous présentera comment résoudre le problème de l'échec de la livraison entre pages PHP. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer. J'espère qu'il sera utile à tout le monde.

Que dois-je faire si la livraison PHP sur plusieurs pages échoue ?

Cet article présente principalement la solution à l'échec de la livraison multipage de PHP SESSION. L'article le présente en détail à travers un exemple de code, qui a une certaine référence pour l'étude ou l'étude de chacun. travail. Valeur, les amis qui en ont besoin peuvent se référer à

Aujourd'hui, je souhaite utiliser une session pour réaliser le jugement de connexion de l'utilisateur. Cela peut également être considéré comme une exploration de la session précédente. Le mécanisme de session est le suivant :

session Il s'agit d'un mécanisme de session côté serveur Lorsque le client demande au serveur de créer une session, le serveur vérifiera d'abord si la demande contient un identifiant de session unique. Si tel est le cas, cela signifie que le serveur a déjà créé une session pour l'utilisateur. Recherchez simplement en fonction de l'ID de session. S'il n'y a pas d'ID de session, le serveur créera une nouvelle session. avec un identifiant de session unique pour l'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'ID de session est le cookie, mais comme les cookies peuvent être artificiellement désactivés, il est nécessaire de s'assurer qu'une fois les cookies désactivés, la session peut toujours se dérouler tout au long de la session, généralement via une réécriture d'URL. ,

L'expression est www.fckfs.com ByOK3vjFD75aPnrF7C2HmdnV6QZcEbzWoWiBYEnLerjQ99zWpBng!-145788764, l'autre est sous forme de chaîne de requête attachée à la fin de l'URL, l'expression est http://...../xxx? jsessionid=ByOK3vjFD75aPnrF7C2HmdnV6 QZcEbzWoWiBYEnLerjQ99zWpBng!- 145788764 Il n'y a aucune différence entre ces deux méthodes pour les utilisateurs, mais le serveur les traite différemment lors de l'analyse. L'utilisation de la première méthode est également utile pour distinguer les informations d'identification de session des paramètres normaux du programme.

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'invalidation de session :

Quand on parle du mécanisme de session, on entend souvent le malentendu selon lequel "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.

Il en va de même 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 la fermeture, 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 l'utilisent. Le cookie de session est utilisé pour enregistrer l'identifiant de session. Après la fermeture du navigateur, l'identifiant de session disparaît et la session d'origine ne peut pas être retrouvé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'identifiant de session d'origine au serveur, l'identifiant de session d'origine peut être toujours trouvé lorsque le navigateur est à nouveau ouvert.

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 session. Lorsque le temps écoulé depuis la dernière utilisation de la session par le client dépasse ce délai d'expiration, le le serveur peut prendre en compte le client. La session sera supprimée uniquement lorsque le client aura arrêté ses activités 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();

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. La session est une super variable globale en php, suivi de $_GET, $ _POST et $_SERVER sont identiques, ils doivent donc être en majuscules lorsqu'ils sont utilisés :

$_SESSION['username']=$username;
Copier après la connexion

4. Exemple de transfert entre pages : une page.php transmet $_SESSION['username'] à b.php :

a.php:

session_start();
$username=$_POST['username'];
$_SESSION['username']=$username;
?>
Copier après la connexion

b.php:

session_start();
echo $_SESSION['username'];
?>
Copier après la connexion

Apprentissage recommandé : tutoriel vidéo php

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!

Étiquettes associées:
php
source:segmentfault.com
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal