Header et ob_flush [PHP] - PHP - Programmation
Marsh Posté le 06-05-2004 à 17:01:36
il arrive parfoit que tu sois reellement redirigé mais sur l'url de ton navigateur il ne bouge pas.
Marsh Posté le 06-05-2004 à 17:05:57
oui mais je suis pas redirigé
en fait pour mon systeme de page j'ai
Code :
|
il me dirais donc que cette page n'existe pas
or ce n'est pas le cas
Marsh Posté le 06-05-2004 à 17:27:18
ca y est c'est resolu.
il faut pas d'espace entre le Location et les deux point
Marsh Posté le 06-05-2004 à 17:30:55
spa bien de mettre [resolu] devant le titre : ça cache la sous-section Faut le mettre après le titre, ou le mettre entre parenthèses
Marsh Posté le 06-05-2004 à 17:37:54
en fait c'est pas resolu
enfin si en local ca marche niquel mais bien evidement sur le net ca foire
Le classic
Code :
|
Je connait la raison de ca evidement, mais le truc c'est que j'arrive pas a la contourner
j'ai essayer avec ob_flush :
Code :
|
et ca ne fonctionne pas.
Je suppose que c'est mal ecrit mais je comprend mal comment m'en servir
Marsh Posté le 07-05-2004 à 10:55:49
up, jveut pas faire ca en JS
Marsh Posté le 07-05-2004 à 11:04:21
y'a quoi a la ligne 31 ?
Marsh Posté le 07-05-2004 à 11:07:48
ha oui mon code a un peu changer.
En gros voila j'ai ma page principale ou j'inclue la page requise dans l'url
Code :
|
comme tu le voit si la page n'xiste pas, il utilise la fonction error.
et dans la fonction error j'ai :
Code :
|
du coup j'obtient
Citation : Warning: Cannot modify header information - headers already sent by (output started at d:\work\bdb\includes\header.php:39) in d:\work\bdb\includes\functions\functions.php on line 47 |
ligne 47 de functions.pph c'est le header("location:..." ) et ligne 39 de header.php, c'est du html
Marsh Posté le 07-05-2004 à 11:11:57
Utiliser un header() pour une fonction de gestion d'erreurs, c'est un peu chaud.
Fais plutôt une fonction d'erreur qui affiche une page complète
Marsh Posté le 07-05-2004 à 11:14:36
ben la ca me redirige vers la page d'erreur en question
et meme si c'est un peu chaud, ca doit etre faisable quand meme
je precise qu'en remplacant ma fonction error pas
Code :
|
ca change rien
Marsh Posté le 07-05-2004 à 11:19:37
chacal_one333 a écrit : ben la ca me redirige vers la page d'erreur en question |
Non, parce qu'à la moindre erreur sérieuse, php va afficher un message d'erreur et ton header foirera. (output started)
De plus il est hors de question de faire des includes avec un output avant, sinon ça foirera aussi. (output started)
Marsh Posté le 07-05-2004 à 11:21:42
Citation :
|
bah si c'est de l'html c'est une sortie donc c'est normal que ton header foire puisque cette sortie a déjà eue lieu. (ou alors j'ai pas tout capté...)
Marsh Posté le 07-05-2004 à 11:21:53
je stop les erreurs générée par php
Enfin je les canalise et affiche un message mieux.
Et pour le coup des output started, ca ne se contourne pas?
Marsh Posté le 07-05-2004 à 11:22:47
boulax a écrit :
|
mais je sais que c'est normal
tout ce que je veut, c'est contourner cette methode par je ne sais quelle fonction
Doit bien y avoir moyen d'utiliser un header pour les erreures quand meme
Marsh Posté le 07-05-2004 à 11:23:06
fais le test avant le include
Marsh Posté le 07-05-2004 à 11:24:26
chacal_one333 a écrit : je stop les erreurs générée par php |
Si, en bufferisant TOUT le contenu de la page (includes et cie compris).
Mais je répète que header() est à éviter pour une gestion d'erreurs.
Marsh Posté le 07-05-2004 à 11:25:23
tu veut dire que je met le ob_start() en haut du header.php et le ob_end_flush() en bas du footer??
ca fait pas des perf minable?
Marsh Posté le 07-05-2004 à 11:26:59
chacal_one333 a écrit : tu veut dire que je met le ob_start() en haut du header.php et le ob_end_flush() en bas du footer?? |
Ben si tu tiens tellement à ton header()
Marsh Posté le 07-05-2004 à 11:33:29
ca marche nikel en mettant ca
niveau perf j'ai encore rien remarquer vu que ma page est plutot vide.
quelqu'un a deja experiencer ca?
Marsh Posté le 06-05-2004 à 16:32:50
VOIR plus bas svp
avant de crier je tient a preciser que non, mon code ne produit aucune sortie avant mon header.
Pour preuve je fait deux setcookie(); juste avant et il n'y a aucune erreur
J'ai lu sur la doc que l'url absolue fonctionnait partout et j'ai donc fait un simple echo
echo "http://".$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'];
Me retourne http://localhost/other/index.php
donc parfaitement la page que je veut
Cependant une fois loggé j'utilise un header pour retourner sur une page me disant "vous etes loggé blabla".
Voila le code :
function login() {
//If the user forgot one or two field => error
if ($_POST["nick"]=="" || $_POST["pass"]=="" ) {
error(2);
}
$time_expire = time()+(60*60*24*365*2); //expire au bout de 2 ans :o)
setcookie("nickname", $_POST["nick"], $time_expire);
setcookie("pass", $_POST["pass"], $time_expire);
header("Location : http://".$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF']."?page=done" );
}
Evidement les verif sont pas fini
, mais le point n'est pas la
![:cry: :cry:](https://forum-images.hardware.fr/icones/smilies/cry.gif)
La page reste telle quelle, a savoir que je suis encore a l'acceuil et qu'un fois pressé le boutton, j'ai mes cookies mais mon url bouge pas d'un pet
Une idée?
Message édité par Profil supprimé le 07-05-2004 à 10:56:30