Maison >développement back-end >tutoriel php >Explication détaillée de la façon de renvoyer et de conserver le contenu d'entrée après une erreur de soumission de formulaire
Que dois-je faire si le contenu renvoyé disparaît après que le formulaire a été soumis de manière incorrecte ? Aujourd'hui, nous allons analyser et résoudre ce problème ? Cet article présente principalement la solution au problème de la disparition du contenu renvoyé après une erreur de soumission de formulaire. Les amis dans le besoin peuvent s'y référer. J'espère que cela aide tout le monde.
Aperçu de la situation :
Lorsque vous remplissez les informations du formulaire et les soumettez, vous rencontrerez un problème. Une fois que l'utilisateur a rempli et soumis le formulaire, le programme détermine que. il ne répond pas aux exigences et aux retours. Les informations du formulaire précédemment remplies seront effacées après le retour. Peu importe si la quantité d'informations renseignée est faible, mais si la quantité d'informations renseignée est relativement importante, cela affectera directement la bonne humeur de la personne qui remplit les informations. Par conséquent, résoudre le problème de la disparition du contenu rempli après le retour d’une erreur de soumission de formulaire est un problème urgent pour améliorer l’expérience utilisateur.
Pour ce genre de problème, nous avons résumé les situations suivantes :
(1) La page utilise la fonction session_start Cette fonction a pour particularité de forcer la page actuelle à ne pas être rafraîchie. La solution est d'ajouter le code suivant après cette fonction :
header("Cache-control:private");//注意在本行之前你的PHP程序不能有任何输出
Il existe plusieurs autres solutions à ajouter
session_cache_limiter('nocache'); //清空表单 session_cache_limiter('private'); //不清空表单,只在session生效期间 session_cache_limiter('public'); //不清空表单,如同没使用session一般
avant session_start pour définir la session ci-dessus. Cela provoquera une session. être mis en cache, ce qui entraîne le problème selon lequel les informations de session ne peuvent pas être mises à jour lorsque vous les appliquez à la session. Pour cette raison, cet article propose les autres solutions suivantes.
(2) Utilisez la méthode Header pour définir l'en-tête du message Cache-control et ajoutez le code suivant à la page :
header('Cache-control: private, must-revalidate') ; //Page d'assistance Revenez en arrière, notez qu'il ne peut y avoir de sortie avant cette ligne
(3) Utilisez la méthode session_cache_limiter et ajoutez le code suivant à la page :
session_cache_limiter('private , must-revalidate'); //Remarque À écrire avant la méthode session_start
Ce qui suit est une explication supplémentaire du champ d'en-tête du message Cache-Control :
Cache-Control spécifie le mécanisme de mise en cache suivi de la demande et de la réponse. La définition de Cache-Control dans un message de demande ou un message de réponse ne modifie pas le processus de mise en cache pendant le traitement d'un autre message. Les directives de cache lors de la requête incluent no-cache, no-store, max-age, max-stale, min-fresh, only-if-cache, les directives dans le message de réponse incluent public, private, no-cache , pas de magasin, pas de transformation, revalidation obligatoire, revalidation proxy, âge maximum. La signification des instructions dans chaque message est la suivante :
Public : indique que la réponse peut être mise en cache par n'importe quel cache.
Privé : Indique que tout ou partie du message de réponse d'un seul utilisateur ne peut pas être traité par le cache partagé. Cela permet au serveur de décrire uniquement une réponse partielle d'un utilisateur qui n'est pas valide pour les demandes des autres utilisateurs.
no-cache : Indique que le message de demande ou de réponse ne peut pas être mis en cache
no-store : Utilisé pour empêcher la divulgation d'informations importantes involontairement. L’envoyer dans le message de demande entraînera l’utilisation de la mise en cache par les messages de demande et de réponse.
max-age : Indique que le client peut recevoir des réponses avec une durée de vie ne dépassant pas le temps spécifié en secondes.
min-fresh : Indique que le client peut recevoir des réponses avec un temps de réponse inférieur à l'heure actuelle plus l'heure spécifiée.
max-stale : Indique que le client peut recevoir des messages de réponse au-delà du délai d'attente. Si vous spécifiez une valeur pour les messages périmés au maximum, le client peut recevoir des messages de réponse qui dépassent la valeur spécifiée du délai d'expiration.
Après avoir lu cet article, si vous rencontrez des problèmes similaires, vous pouvez les résoudre complètement. N'oubliez pas que cette solution est uniquement destinée aux sites Web PHP.
Recommandations associées :
Explication détaillée de la façon dont PHP génère les fichiers vcf vcard
Explication détaillée de la bibliothèque de fonctions BC d'opération de haute précision 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!