Comment déclarer plus d'une en-tête sur PHP
Je veux envoyer mes utilisateurs sur des pages différentes en fonction des actions de l'utilisateur. Donc j'ai fait de multiples fonctions en haut de la page comme ceci:
<?php
function one() {
header("location: pagea.php");
}
function two() {
header("location: pageb.php");
}
function three() {
header("location: pagec.php");
}
?>
Bien sûr, j'obtiens une erreur parce que je suis re déclarant en-têtes. Au début je pensais qu'il allait être bon, puisque je suis en contiennent à l'intérieur des fonctions et je suis tout appel d'une fonction à la fois. Mais encore, je reçois le message d'erreur. Est-il un autre moyen de faire cela?
Quelle erreur avez-vous? Ce code semble légitime.
pouvez-vous ajouter le code de la façon dont les fonctions un, deux, trois, sont appelés dans la séquence ?
pouvez-vous ajouter le code de la façon dont les fonctions un, deux, trois, sont appelés dans la séquence ?
OriginalL'auteur Homer Simpson | 2010-03-11
Vous devez vous connecter pour publier un commentaire.
Je pense que vous ne comprenez pas ce que l'en-tête HTTP
Location
.La
Location
en-tête de demande au client de naviguer vers une autre page. Vous ne pouvez pas envoyer plus d'uneLocation
en-tête de chaque page.Aussi, PHP envoie les en-têtes de droit avant la première sortie. Une fois sortie, vous ne pouvez pas spécifier plus les en-têtes (sauf si vous utilisez le Tampon de Sortie).
Si vous spécifiez le même en-tête, deux fois, par défaut,
header()
remplacera la précédente valeur de la dernière... Par exemple:va rediriger l'utilisateur vers
c.php
, pas une seule fois en passant para.php
oub.php
. Vous pouvez remplacer ce comportement par le passage d'unfalse
valeur du deuxième paramètre (appelé$replace
):La
Location
d'en-tête ne peut être spécifié qu'une fois. L'envoi de plusieursLocation
d'en-tête ne sera pas rediriger les internautes vers les pages... Il sera sans doute confondre la merde hors de l'UA. Aussi, comprendre que le code continue de s'exécuter après l'envoi d'uneLocation
en-tête. Suivez donc cet appel àheader()
avec unexit
. Voici une bonne redirection fonction:OriginalL'auteur Andrew Moore
Essayer quelque chose comme cela:
ou
OriginalL'auteur Zack Marrapese
Soit ils ne sont pas tous dans les fonctions ou plus que l'on est appelé.
OriginalL'auteur Ignacio Vazquez-Abrams
Vous obtenez cette erreur parce que votre script est déjà produit en sortie (que vous avez utilisé echo/print avant l'appel à header()). Vous devez appeler header() avant votre script génère une sortie.
Du Manuel PHP
http://php.net/manual/en/function.header.php
Vous obtiendrez le message d'erreur suivant lorsque vous essayez d'appeler header() après l'envoi d'une sortie...
OriginalL'auteur John Himmelman
Voici comment j'aime faire quand j'ai besoin d'envoyer des en-têtes multiples :
Utilisation headers_sent() pour vérifier si vous serez en mesure d'envoyer des en-têtes ou pas.
OriginalL'auteur Boris Guéry
Peut-être quelque chose comme ça?
OriginalL'auteur inkedmn
Vous pouvez essayer quelque chose comme ça.
OriginalL'auteur Mohsin Younas
Pour l'amour de personnes qui peuvent être en venant ici de Google, si vous êtes intéressé à avoir plusieurs de la même type de l'en-tête:
Il est techniquement possible d'avoir plusieurs en-têtes qui sont du même type passé en PHP.
header
a un paramètre appelé "remplacer". À partir de la documentation:De sorte que vous devriez être en mesure d'écrire:
Bien sûr, si votre type d'en-tête ne peut pas être dû à plusieurs reprises, vous obtiendrez une erreur. Dans ce cas, vous obtenez ce message d'erreur (écrit de cette manière dans google Chrome):
Pour d'autres en-têtes, cependant, cette méthode devrait fonctionner correctement. L'exemple qu'ils fournissent est:
OriginalL'auteur Josh Powlison
J'ai une belle solution:
Vous pouvez le faire aussi souvent que vous le souhaitez.
(Rien d'autre n'a fonctionné pour moi et pour moi c'est une bonne alternative)
Particulièrement pour tout le monde qui a un problème avec l'aide de plusieurs options pour "en-tête" (sur mon site, il serait toujours en prendre un, peu importe ce que j'ai fait)
OriginalL'auteur Insencel