Comment faire pour rediriger vers une autre page en php après la forme est-elle complète?
J'ai un formulaire d'inscription dans un site que je construis. S'il est rempli correctement, je veux que l'utilisateur de revenir à la page principale.
J'ai essayé d'utiliser header
mais j'ai "Impossible de modifier les informations d'en-tête..." je suppose que ce qui se passe parce que je post pour $_SERVER['PHP_SELF']
;
Toutes les suggestions de comment puis-je rediriger l'utilisateur si le formulaire est ok? (Autre qu'une page avec un bouton)
Vous ne pouvez pas utiliser
header
si vous imprimez n'importe quoi -- rien du tout -- à l'écran. header
doit être appelée avant toute sortie, si vous nous montrez votre code nous pouvons peut-être comprendre ce qui a mal tourné; même si vous aviez un espace en face de la première <?php
elle pourrait causer ce problème.OriginalL'auteur AYBABTU | 2011-01-26
Vous devez vous connecter pour publier un commentaire.
Vous ne pouvez utiliser le
header()
fonction si aucun autre texte/chaîne de données a été sortie par le serveur web au navigateur d'utilisateurs.Vous aurez besoin de mettre de la logique pour la redirection en haut de votre script avant toute chose:
La raison pour cela est que lorsqu'un navigateur reçoit des informations à partir du serveur web, il reçoit un en-tête HTTP (qui le
header()
fonction des sorties le rediriger vers), puis renvoie le corps de la réponse HTTP, après l'en-tête HTTP. Si votre script estecho
ing quoi que ce soit avant l'en-tête de commande, vous continuerez à recevoir cette erreur.OriginalL'auteur Jason Miller
Vous obtenez le ne peut pas modifier les informations d'en-tête de message parce que vous essayez d'envoyer de nouveaux en-têtes pour le navigateur après le rendu du contenu de la page. Si vous ne l'en-tête() avant toute echo/print appels, il sera rediriger. Sinon, vous auriez besoin d'un méta redirection. Lorsque vous publiez le formulaire n'est pas pertinent.
OriginalL'auteur Spechal
La raison pour laquelle cela ne fonctionne pas, c'est que les en-têtes de précéder le contenu dans une requête HTTP. Lors de la sortie de contenu, PHP prend de l'avance du jeu par l'envoi de tous les en-têtes et de tout le contenu de ses traités jusqu'à présent. Il n'y a pas de CTRL+Z pour l'envoi de requêtes HTTP, de sorte que le
header()
fonction ne peut pas ajouter des en-têtes après qu'ils ont été envoyés.Cependant, vous pouvez appeler
header()
après que le contenu est fait l'écho, si vous utilisez l'ob de mise en mémoire tampon de la famille de fonctions. Appelob_start()
pour le tampon de sortie de page, le cas échéant, d'en-tête d'appels ou de contenu de sorties, et enfin envoyer la sortie avecob_end_flush()
. Ex.Le seul inconvénient à l'utilisation de la mémoire tampon est que l'utilisateur aura une petite raccrocher à recevoir le contenu jusqu'à ce que le
ob_end_flush()
commande est appelée. Probablement, ce ne sera pas perceptible, même si, de sorte que vous ne devriez pas vous inquiéter à ce sujet!Avant d'aller à travers tout cela, vous pouvez envisager de déplacer tous vos têtes pour une place avant que le contenu est retournée dans votre code. Vérifiez également la balise d'ouverture PHP pour les précédentes espaces qu'ils vont forcer les en-têtes et le contenu sera envoyé.
OriginalL'auteur Bailey Parker