Redirection --> header

Fermé
wazertyuiop Messages postés 32 Date d'inscription jeudi 10 février 2011 Statut Membre Dernière intervention 18 février 2011 - 10 févr. 2011 à 11:31
Groarh Messages postés 682 Date d'inscription vendredi 1 août 2008 Statut Membre Dernière intervention 28 juin 2015 - 10 févr. 2011 à 14:23
Bonjour,
je dois actuellement faire une redirection sur ma page php afin d'aller me rediriger sur une ancre , un souci intervient dès le premières lignes, je ne comprend pas pourquoi.

if (isset($_GET['redirigers']))
{
header('Location: #');
}
j'ai aussi essayer avec header('Location: mapage.php')

voici le message d'erreur
Warning: Cannot add header information - headers already sent by (output started at /home/sites/.../mapage.php:2) in /home/sites/...mapage.php on line 5

Voila si quelqu'un pourrait m'aider ca m'avancerai beaucoup

3 réponses

Groarh Messages postés 682 Date d'inscription vendredi 1 août 2008 Statut Membre Dernière intervention 28 juin 2015 185
10 févr. 2011 à 12:19
Salut,
il y a du code HTML ou des sauts de ligne dans les 5 premières lignes de ton fichier, tu dois les retirer.
L'idéal serait que ton fichier commence directement par <? pour éviter ce genre de problème.

https://www.php.net/manual/fr/function.header.php

;)
0
wazertyuiop Messages postés 32 Date d'inscription jeudi 10 février 2011 Statut Membre Dernière intervention 18 février 2011 1
Modifié par wazertyuiop le 10/02/2011 à 12:30
ok, aurais tu alors, une autre solution a me proposer ? car il dois forcément y avoir du code avant en fait j'ai un bouton submit quand je le click , il effectue des opérations et ensuite, une fois ces opérations effectuées je dois rediriger sur une ancre.
J'ai essayé plusieurs codes javascript trouvés sur le net, rien n'a marché.
En gros j'ai besoin de faire

if (isset(...))
{
req="select..."
....

--> redirection vers l'ancre

}

PS: il n'y avait aucun saut de ligne ce n'était pas la cause du problème ( ce n'est pas le premier site internet que je créer)
0
Groarh Messages postés 682 Date d'inscription vendredi 1 août 2008 Statut Membre Dernière intervention 28 juin 2015 185
10 févr. 2011 à 14:23
Re,
pour clarifier les choses, voyons la chronologie entière du chargement d'une page PHP :

1- le navigateur émet une requête HTTP vers ton serveur (après un clic sur un lien, une soumission de formulaire, ou autre). Ce faisant, il ouvre une connexion HTTP entre le serveur et lui.

2- Le serveur trouve la page demandée (si tout se passe bien), et la passe à son interpréteur PHP. Il prépare également les en-têtes HTTP à envoyer par défaut (type MIME, encodage, etc.). C'est à ce moment que tu peux rajouter des en-têtes avec la fonction header.

3- Dès que l'interpréteur PHP arrive à un moment où il doit envoyer du code HTML vers le navigateur, il envoie tous les en-têtes de la page en utilisant la connexion qui a été ouverte par le navigateur, puis envoie le code HTML. À partir de ce moment, il n'est plus possible de rajouter des en-têtes.

4- Une fois que la dernière donnée a été envoyée, la connexion HTTP est fermée, et l'interpréteur PHP s'arrête.



Il y a une solution assez simple à ton problème : rajoute l'ancre dans l'attribut action de ton formulaire. Si tu génères ton formulaire avec PHP, tu peux choisir la valeur en fonction de ton « $_GET['redirigers'] ».

;)
0