Redirection en php

bmag
Invité n'ayant pas de compte PHPfrance

03 nov. 2006, 13:40

Bonjour,

J'ai effectué un script en PHP dans un fichier.
Ce script ne comporte qu'une seule et unique ligne que voici :

<?php header("Location:/resultat.htm"); ?>

Donc il s'agit d'un fichier nommé attente.php qui ne comporte qu'une seule et unique ligne (ça veut dire qu'il n'y a pas de ligne blanche ni une autre ligne que celle sus-citée).

Lorsque j'appelle cette page le resultat est le suivant :
Warning: Cannot modify header information - headers already sent by (output started at /var/www/22/s/e/m/attente.php:1) in attente.php on line 1

Quelqu'un peut-il m'éclairer ?

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

03 nov. 2006, 13:47

Ton fichier attente.php tu l'appelles en direct dans l'url (ce qui perd probabelment un peu de son intérêt s'il ne fait rien d'autre) ou bien tu l'inclus depuis d'autres scripts ?

(Pis bon à priori ça semble évident que non, mais tu ne m'en voudras pas de poser la question quand même hein ?) Pas non plus d'espace avant le "<?php" ?
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Invité
Invité n'ayant pas de compte PHPfrance

03 nov. 2006, 13:53

Le fichier PHP contient en réalité les lignes suivantes :
<?php
if(file_exists("resultat.xml"))
{
header("Location:/resultat.htm");
}
else
{
header("Location:/erreur.htm");
}
?>

Mais l'erreur est la même. Je l'appelle en saisissant directement l'adresse dan IE. Mais le but c'est de faire une redirection conditionnelle avant tout affichage.
Si je réduit à la ligne unique sitée, l'erreur est toujours présente

Invité
Invité n'ayant pas de compte PHPfrance

03 nov. 2006, 14:08

Pour répondre à ta question, le script a pour vocation d'être présent dans une page html, avant tout autre code. J'ai effectué plusieurs essais dans tous les sens mais toujours la même erreur. Il n'y a pas d'espace avant "<?php".

Eléphant du PHP | 377 Messages

03 nov. 2006, 14:33

dans une page html? essaye de la renommer en page.php pour voir ;)
Petit scarabée deviendra grand

ViPHP
ViPHP | 1961 Messages

03 nov. 2006, 14:40

Bonjour,

Certains disent que ça n'a pas d'importance, dans un serveur j'ai le souci (j'ai pas encore compris PQ) mais il me demande un espace entre les deux points (:) et l'adresse.

Essaie, on ne sait jamais.
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

Invité
Invité n'ayant pas de compte PHPfrance

03 nov. 2006, 14:44

Quand je dis html, c'est simplement que le reste du code de la page est en html. Mais évidement, l'extention est bien "PHP" (sinon, je n'aurais pas ce genre de message d'erreur).

J'ai également vérifié différentes façon de remonter ma page, dont LeechFTP au cas ou qque chose serait mal interprété,
j'ai également ouvert un incident au niveau de mon hébergeur (ONLINE) car ça me paraît vraiment trop bizarre...

Au pire si qqun pouvait m'indiquer comment effectuer une redirection conditionnelle sur la présence d'un fichier xml sur le serveur (donc la condition en PHP et éventuellement la redirection en javascript ?)

Merci par avance.

Invité
Invité n'ayant pas de compte PHPfrance

03 nov. 2006, 14:45

Certains disent que ça n'a pas d'importance, dans un serveur j'ai le souci (j'ai pas encore compris PQ) mais il me demande un espace entre les deux points (:) et l'adresse.
Essaie, on ne sait jamais.
déjà essayé...

merci qd même.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

03 nov. 2006, 15:08

Pour le faire en js il te suffit d'utiliser document.location = "ton_url";
<?php 
if(file_exists("resultat.xml"))
  echo '<script>document.location = "/resultat.htm";</script>'; 
else 
  echo '<script>document.location = "/erreur.htm";</script>'; 
?> 
Mais je trouve étonnant ce genre de problème, surtout chez online..

Essaye éventuellement avec is_file() au lieu de file_exists() voir si cela change quelque chose ?
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

ViPHP
ViPHP | 2144 Messages

03 nov. 2006, 15:13

Pour le moi, le problème n'est pas un problème de redirection, mais est plus générale que ça : c'est un problème de header.

Es-tu sûr que tu n'as pas ne serait ce qu'un simple espace avant l'ouverture des balises php ?

bmag
Invité n'ayant pas de compte PHPfrance

03 nov. 2006, 15:21

Un grand Merci Ryle. ça marche du feu de dieu.
Le problème vient exclusivement de la fonction header, puisqu'appelée seule, elle provoque également l'erreur (cad sans la fonction file_exists).

Non iclo, pas le moindre espace.

ViPHP
ViPHP | 2144 Messages

03 nov. 2006, 15:23

Etrange, tu avais regardé le code source html de la page qui renvoyait l'erreur.

Javascript: attention ça peut toujours être désactivité par le visiteur.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

03 nov. 2006, 15:32

Javascript: attention ça peut toujours être désactivité par le visiteur.
C'est sur... mais ça reste quelques 2-3% des gens qui le font, et comme en général ca les empêche de profiter pleinement de 90% des sites internet, ils installent un bon antivirus et ça leur passe vite ;)

Au pire, tu peux rajouter une balise <noscript> et leurs donner le lien en leur adressant un message sévère mais courtois :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

ViPHP
ViPHP | 656 Messages

04 nov. 2006, 00:14

Un meta refresh enfin messieurs :P ... au lieu d'un Js.
Moi je pense aussi que tu a laisser un saut de ligne en haut de ton fichier .php


Par exemple :

Code : Tout sélectionner

<?php header(); ?>
Au lieu de :

Code : Tout sélectionner

<?php header(); ?>
[EDIT]: Chez moi ça marche parfaitement : http://ultiny.online.fr/webshare/progra ... ection.php

bmag
Invité n'ayant pas de compte PHPfrance

04 nov. 2006, 14:14

Un meta refresh enfin messieurs :P ... au lieu d'un Js.
Si je peux conditionner le meta refresh, je prends. :)
Moi je pense aussi que tu a laisser un saut de ligne en haut de ton fichier .php
Ben non. Je modifie le petit script php avec notepad puis le remonte par un glisser/déposer dans mon espace ftp. Il ne comprends pas d'espace ni de ligne vierge.
[EDIT]: Chez moi ça marche parfaitement : http://ultiny.online.fr/webshare/progra ... ection.php[/quote]
Tu utilises quoi pour éditer ton fichier php ?