[RESOLU] header error avec le caractère "-"

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] header error avec le caractère "-"

Re: [RESOLU] header error avec le caractère "-"

par Happy Lu » 21 déc. 2015, 11:07

Finalement c'est la balise <meta http-equiv="refresh" content="1;url='telechargement.php'" /> qui résout mon problème.
Le fichier se copie et je ne perds pas la mise en page.

Le problème est pleinement résolu.

Re: header error avec le caractère "-"

par @rthur » 21 déc. 2015, 10:33

Aucun contenu ne doit être envoyé à afficher au navigateur avant l'utilisation de la fonction header()
Pas de HTML, ni de texte, ni rien.

Si tu veux afficher quelque chose, ce n'est pas la fonction header() qu'il faut utiliser mais une des 2 autres solutions évoquées plus haut.

Re: header error avec le caractère "-"

par Happy Lu » 21 déc. 2015, 10:27

Le html était bien la cause de l'erreur.
J'ai viré tout le html et cela fonctionne normalement.

La question que je me pose maintenant est comment puis-je garder ma mise en page sans html ?
J'ai essayé de tout coller dans un printf mais l'erreur persiste dans ce cas.

Re: header error avec le caractère "-"

par @rthur » 21 déc. 2015, 10:23

Quelque soit la méthode utilisée (refresh ou location) cela fonctionne très bien, tant que le nom du fichier ne contient pas le symbole "-".
Commence par faire un code correct, c'est à dire en suivant ce que je t'ai dit car, non, le code que tu as posté ne peut pas fonctionner correctement.
Le HTML et le PHP peuvent être parfois assez permissifs (c'est à dire qu'ils essayent tout de même de faire fonctionner un code faux), mais tu risques des effets de bord impossibles à déterminer à l'avance avec un code qui ne fonctionnerait que sur certains navigateurs ou serveurs par exemple, ce qui n'est pas souhaitable.

Corrige ton code en fonction de ce que or1 et moi t'avons dit et tu verras que ça résolvera très probablement ton bug

Re: header error avec le caractère "-"

par Happy Lu » 20 déc. 2015, 21:27

Quelque soit la méthode utilisée (refresh ou location) cela fonctionne très bien, tant que le nom du fichier ne contient pas le symbole "-".

Re: header error avec le caractère "-"

par or 1 » 20 déc. 2015, 21:25

"Toutefois, pour pouvoir l'utiliser, il ne faut PAS qu'il y a ait du code HTML avant de l'utiliser."

Re: header error avec le caractère "-"

par Happy Lu » 20 déc. 2015, 21:10

Ok, j'ai compris mon erreur. Mais même en modifiant le header, l'erreur reste la même.

Code : Tout sélectionner

<?php $dir = "/home/lu/Bureau/"; if(is_file($dir.$_SESSION['fichier'])){ printf("Copie du fichier <b>".$_SESSION['fichier']."</b> en cours avant le telechargement."); header('location: telechargement.php'); } else{ printf("Le fichier <b>%s</b> n'existe pas", $_SESSION['titre']); exit(); } ?>

Re: header error avec le caractère "-"

par @rthur » 20 déc. 2015, 20:58

Ouh là...
Pour faire une redirection vers une autre page, il y a 3 possibilités :
- Utiliser la fonction header() de PHP, c'est ce qui permet de faire une redirection quasi-instantanée, sans que le navigateur ait besoin de charger (et interpréter) du code HTML. Toutefois, pour pouvoir l'utiliser, il ne faut PAS qu'il y a ait du code HTML avant de l'utiliser. Avantage : c'est le + rapide et transparent pour l'utilisateur.
- Utiliser une balise HTML <meta>, l'avantage c'est que ça marche partout, toutefois, il faut le mettre dans l'entête de sa page HTML, entre les balises <head>...</head>
- Utiliser du javascript et appeler window.location, avantage : ça permet de faire un compte-à-rebours (par exemple) avant une redirection, inconvénient, ça ne marche pas si le javascript est désactivé. C'est une solution très souvent utilisée, on la reconnait en général assez facilement car c'est pour ça que certains sites internet indique "Cliquez ici si vous n'êtes pas redirigé" avec un lien vers la page suivante, car ils utilisent cette technique.


Dans ton cas, tu as mixé la fonction header() de PHP avec le code d'une balise <meta refresh>, bref c'est de la ratatouille de code qui ne peut pas marcher.

Re: header error avec le caractère "-"

par Happy Lu » 20 déc. 2015, 20:31

Voici le code php. Le reste est du html.
En enlevant les lignes commentées l'erreur se rapporte au printf suivi du header.

Code : Tout sélectionner

<div class="copie"> <?php $dir = "/home/lu/Bureau/"; $url = "telechargement.php"; if(is_file($dir.$_SESSION['fichier'])){ printf("Copie du fichier <b>".$_SESSION['titre']."</b> en cours avant le telechargement."); header("Refresh: 1;URL=$url"); } else{ printf("Le fichier <b>%s</b> n'existe pas", $_SESSION['titre']); exit(); } ?> </div>

Re: header error avec le caractère "-"

par @rthur » 20 déc. 2015, 20:22

Bonjour,

Difficile de t'aider sans voir le code...
Donne nous les lignes 100 à 125 qu'on se rende compte par exemple

header error avec le caractère "-"

par Happy Lu » 20 déc. 2015, 19:39

Bonjour,

J'ai un script qui copie des fichiers, mais dès qu'un fichier a le caractère "-" dans son nom Apache me retourne l'erreur suivante.

Cannot modify header information - headers already sent by (output started at /var/www/html/copie.php:115) in /var/www/html/copie.php on line 117

Le nom de fichier se trouve ligne 115 et le header de redirection ligne 117.
Je ne rencontre pas le problème avec des noms de fichiers sans ce fichu caractère.

Quelqu'un aurait une idée ?