Se connecter avec
S'enregistrer | Connectez-vous

[résolu] Problème de redirection via un Header

Dernière réponse : dans Programmation
Expert Programmation

Salut,

Une petite question sur un comportement que je ne comprends pas.

Le contexte : une redirection vers une autre page web en utilisant un header http.

Le code :
  1. Header("Location: <a href="http://mon.site.fr/download/" target="_blank">http://mon.site.fr/download/</a>$fichier")


En local, j'utilise Easyphp 1.8 (php4) et 2.0 (php5).

Ce code marche en php4 local ou sur mon espace perso chez Free. Il marche aussi en php5 en local, mais il ne marche plus chez Free... Dans ce dernier cas, c'est le répertoire http://mon.site.fr/download/ qui s'ouvre, et non le fichier contenu dans ce répertoire ! Why ?

Par contre, si je remplace $fichier par le nom d'un des fichiers contenu dans le répertoire :
  1. Header("Location: <a href="http://mon.site.fr/download/mon.fichier" target="_blank">http://mon.site.fr/download/mon.fichier</a>")


Ben là, ça marche et c'est bien le fichier qui s'ouvre.

Vous voyez ce qui peut causer ce problème uniquement en php5 chez Free ?
Lassé par la pub ? Créez un compte
Expert Programmation

Je vais peut-être dire une connerie, mais $fichier est en fait une variable dans laquelle je récupère la valeur de $_GET['fichier']

  1. $fichier = $_GET['fichier'];


Ce n'est pas bon pour justement ne pas avoir besoin des register_global ?

Si ce n'est pas ça est-ce que tu peux être un peu plus explicite sur ce problème ?

Shino-Genin a dit :
Je vais peut-être dire une connerie, mais $fichier est en fait une variable dans laquelle je récupère la valeur de $_GET['fichier']

  1. $fichier = $_GET['fichier'];


Ce n'est pas bon pour justement ne pas avoir besoin des register_global ?

Si ce n'est pas ça est-ce que tu peux être un peu plus explicite sur ce problème ?

ha bha non c'est pas ca

bha je vois pas alors ...
Expert Programmation

Ben, je viens de résoudre mon problème (ce n'était pas le point virgule, que j'ai oublié ici). Cependant je ne comprends pas pourquoi ça marche...

Alors, le code (sans erreur que j'utilisais avant) :
  1. $fichier = $_GET['fichier];
  2. Header(Location: "<a href="http://mon.site.fr/download" target="_blank">http://mon.site.fr/download</a>". $fichier);


Et ça marchait partout, sauf chez Free en php5.

Ce qui marche, c'est
  1. Header(Location: "<a href="http://mon.site.fr/download" target="_blank">http://mon.site.fr/download</a>". $_GET['fichier]);


Va comprendre... comme si la variable $fichier dans le Header était prise pour une variable globale... Dans le reste du script, ce n'est pas le cas en revanche (la variable $fichier me sert aussi pour des enregistrement dans mysql).
Lassé par la pub ? Créez un compte