- Problème avec la fonction header [PHP] - PHP - Programmation
Marsh Posté le 15-05-2004 à 15:05:12
Est ce qu'il y a pas un espace au dessu de ta redirection ou une erreur
-------------------- haut de ton fichier
<- un espace ? une erreur ?
<?php
header(Location:...);
ou
setcookie();
<?
-------------------------
regarde dans le code source de ton html généré qui affiche l'erreur et regarde ce qu'il peut y avoir au dessu !
Marsh Posté le 15-05-2004 à 19:52:07
output started at c:\program files\easyphp\www\trash news\index.php:3
Tu as ta réponse dans ce message d'erreur
Tu dois envoyer du HTML à la ligne 3 de index.php
Peux-tu nous poster le code de index.php ?
Marsh Posté le 15-05-2004 à 21:06:08
oui biensur,
le voici:
Code :
|
Marsh Posté le 15-05-2004 à 22:18:25
Ben c'est clair, tu fais une sortie html avant de tenter ta redirection, ce qui est impossible à faire
Marsh Posté le 15-05-2004 à 22:53:07
Je ne vois pas ce qui cloche.
Tu peux m'indiquer l'erreur et si possible la corriger. Merci.
Marsh Posté le 15-05-2004 à 22:58:42
AlphaZone a écrit : Je ne vois pas ce qui cloche. |
Un header ne peux PAS être précédé d'une sortie HTML. En clair tu n'as PAS LE DROIT d'afficher quoi que ce soit avant ton header.
Marsh Posté le 16-05-2004 à 02:28:03
AlphaZone a écrit : Je ne vois pas ce qui cloche. |
Oh le lourd
Dans un fichier qui contient un header, tu ne peux pas avoir quoi que ce soit de transmis au navigateur avant le header (donc, pas de html entre autres). Dans ton fichier index.php, la première ligne (hors doctype) est déjà de l'html, c'est pour ça que index ne fonctionne pas tandis que le livre d'or seul fonctionne (parce que j'imagines que tu inclus le livre d'or dans index.php)
Marsh Posté le 16-05-2004 à 10:22:56
Citation : N'oubliez jamais que header doit être appelée avant que le moindre contenu ne soit envoyé, soit par des lignes HTML habituelles dans le fichier, soit par des affichges PHP. Une erreur très classique est de lire un fichier avec include ou require , et de laisser des espaces ou des lignes vides, qui génèreront un affichage avant que la fonction header ne soit appelée. Le même problème existe avec les fichiers PHP/HTML standards. |
Source: http://www.nexen.net/docs/php/anno [...] header.php
Marsh Posté le 16-05-2004 à 10:57:00
Une solution pour contourner ce pb de header à bien placé est la bufferisation de sortie : http://fr3.php.net/manual/fr/ref.outcontrol.php
Marsh Posté le 16-05-2004 à 11:09:13
bien vu mais je pense qu'il faut avoir acquis un certain niveau de base avant d'utiliser ça... je crois pas que ce soit le cas ici
Marsh Posté le 16-05-2004 à 11:13:54
RiderCrazy a écrit : bien vu mais je pense qu'il faut avoir acquis un certain niveau de base avant d'utiliser ça... je crois pas que ce soit le cas ici |
effectivement mais pour lui il suffit de faire un
Code :
|
dans sa première ligne du index.php
Marsh Posté le 16-05-2004 à 11:27:15
ratibus a écrit : effectivement mais pour lui il suffit de faire un
dans sa première ligne du index.php |
Tout à fait d'accord sur la forme mais sur le fond, ça me parait pas une bonne idée... et je crois que tu penses la même chose ( ). Autant lui pondre un code direct. Le problème c'est que s'il apprend pas à chercher un peu par lui-même, dès qu'il aura le moindre il va venir nous voir. Vaut mieux qu'il étudie la doc, qu'il fasse du pas à pas, qu'il améliore son/ses script(s) au fur et à mesure.
Mais je crois qu'on est tous d'accord sur ce point...
edit: faudrait que j'apprenne à taper aussi vite que je pense, ça m'éviterait d'oublier des mots
Marsh Posté le 17-05-2004 à 12:55:56
C'est quand même bizarre.
J'ai fais une partie administration, et le header fonctionne très bien.
Pourquoi dans ma nouvelle page index.php, cela ne fonctionne pas ?
Voici les modifications apportées:
Code :
|
Fichier header.tpl (Evidement ce n'est pas un vrai template mais seulement un leurre.)
Code :
|
Ca me donne toujours la même erreur:
Code :
|
Marsh Posté le 17-05-2004 à 13:01:10
même cause, même conséquence
Rajoute ob_start() au début de ton fichier index
enfin, je te conseille vivement de lire la doc au sujet de header() et de ob_start(), parce que j'ai l'impression que tu comprends pas vraiment ce qu'ils font
Marsh Posté le 17-05-2004 à 13:03:53
Oui c'est vrai que je suis un peu embrouillé mais pourquoi ma partie admin fonctionne très bien et pas cette page ?
Marsh Posté le 17-05-2004 à 13:07:07
J'ai utilisé op_start() et ob_end_flush().
Ca marche parfaitement, je vous en remercie.
Reste l'enigme du pourquoi ca marche d'un côté et pas de l'autre
Marsh Posté le 17-05-2004 à 13:26:13
il faut lire la doc
en gros, header() envoie des en-têtes http qui doivent être envoyés avant tout autre contenu (histoire de respecter le protocole http)... donc si tu retournes du html avant ton header, zou t'as l'erreur en question.
ob_start et ob_flush permet d'utiliser un buffer de html, ce qui permet de retarder l'envoie du html vers le client et t'évite les erreurs avec header.
voila, bon, c'est à la grosse hein, la doc est plus complète et plus claire
Marsh Posté le 18-05-2004 à 11:57:17
AlphaZone a écrit : J'ai utilisé op_start() et ob_end_flush(). |
Juste une question :
Tu as lu les messages précédents ? Tu les as compris ? Parce que là, ya un problème quand même... On te répète 15 fois la même chose et tu reposes sans cesse la même question.
Marsh Posté le 20-05-2004 à 01:16:23
Hermes le Messager a écrit : Juste une question : |
Non mais t'inquiète. Ca va aller.
Cool mec
Merci.
Marsh Posté le 20-05-2004 à 10:32:05
Si le but est de sortir de la page tu peut faire une redirection en javascript suivis d'un exit() en PHP ce qui va arreter l execution du code PHP puis envoyer une redirection au client et celui n'y verra que du feu
Marsh Posté le 20-05-2004 à 14:27:51
rainbow_efreet a écrit : Si le but est de sortir de la page tu peut faire une redirection en javascript suivis d'un exit() en PHP ce qui va arreter l execution du code PHP puis envoyer une redirection au client et celui n'y verra que du feu |
quel intérêt de monter une usine à gaz
il faut qu'il apprenne à se servir de header, c'est tout
Marsh Posté le 17-04-2009 à 17:48:47
Up de 5 ans, qqu'un aurait-il vu le cas de redirections 301 se comportant comme des includes ?
Marsh Posté le 17-04-2009 à 18:55:24
ça me semble difficile, es-tu certain que la page ciblée par la 301 n'est pas identique à la page précédente à l'exception d'un bloc et que du coup on puisse croire à un include ?
Marsh Posté le 22-04-2009 à 11:12:25
non c'est le nouveau comportement des headers dans le suphp d'ovh ( version 5.1.3 )
qui nécessite d'écrire 3 lignes bien renseignées avec le host de la redirection etc. .
Marsh Posté le 15-05-2004 à 14:43:52
Bonjours à tous,
Je viens de codé une page livre d'or avec formulaire.
Et je l'intègre dans une page index.php avec des pseudo-frames.
Le formulaire fonctionne correctement et quand on presse le bouton "Envoyer" cela appel la page de vérification des données + l'enregistrement de la signature si tout est correct.
Jusque la tout marche.
MAIS j'arrive à la ligne où l'utilisateur est renvoyé sur la page des signature après avoir posté: header('index.php?page=guestbook');
Voici ce que ça m'affiche:
J'ai testé le livre d'or seul, et ca marche sans problème, il me redirige vers les signatures.
Mais dès que l'intègre, ca se gate
Avez-vous une solution à mon problème ?
Merci d'avance.
Message édité par AlphaZone le 15-05-2004 à 14:44:33