Décalage dans un fichier txt

Décalage dans un fichier txt - PHP - Programmation

Marsh Posté le 01-03-2019 à 07:39:42    

Bonjour,
 
  Le code php ci-dessous permet de forcer le téléchargement d'un fichier txt qui est ensuite transmit sur une plateforme (Helios).
  A première vue le fichier semble être correct, mais soit disant il y aurait un décalage de 3 caractères sur chaque ligne lorsqu'il arrive sur la plateforme Helios. Est-ce que le code ci-dessous peut-il expliquer ce défaut et ajouter des caractères non visible sur Notepad++, un peut comme un fichier encodé en utf8 et utf8 sans BOM je crois ?
   

Code :
  1. if (isset($_GET["file"]))
  2. {
  3. $filename=$_GET["file"];
  4. // ne conserver que le nom du fichier : le nom que verra s'afficher l'utilisateur
  5. $uploadname=basename($filename);
  6.  
  7. // Envoi du fichier
  8. header('Content-Transfer-Encoding: none');
  9. header('Content-Type: application/octetstream');
  10. header('Content-Disposition: attachment; filename="'.$uploadname.'"');
  11. header('Content-length: '.filesize($filename));
  12. header("Pragma: no-cache" );
  13. header("Cache-Control: must-revalidate, post-check=0, pre-check=0, public" );
  14. header("Expires: 0" );
  15. @readfile($filename) OR die();
  16. }


 
Ou il y a des chances qu'Helios ajoute ?
 
 
Merci par avance.

Reply

Marsh Posté le 01-03-2019 à 07:39:42   

Reply

Marsh Posté le 01-03-2019 à 09:29:02    

Dans la mesure que tu ne fait pas de lecture ligne à ligne de ton fichier avant envoi, ça semble franchement douteux qu'il ajoute 3 caractère à chaque ligne, au début ou a la fin on pourrait chercher la petite bête mais là...


---------------
D3
Reply

Marsh Posté le 02-03-2019 à 23:02:57    

Idem, s'il y a un défaut, il est dans le fichier d'origine ou de ta "plateforme" vu que readfile rebalance le fichier tel quel.
 
S'il y avait un BOM :
* soit il est dans ton script et suivant si tu as un output_buffering, ça plante tes fonctions d'entêtes ou le BOM est reproduit en sortie
* soit il est dans le fichier de départ
 
Donc, au pire, même si tu te retrouvais avec 2 BOM UTF-8, seule la première ligne serait "décalée" de 6 octets. En aucun cas toutes les lignes s'en retrouveraient affectées.
 
Un truc type indentation avec espace insécable ? Du \r\n mal géré ?
 
PS : $_GET['file'] = on peut te faire envoyer le contenu de n'importe quel fichier auquel apache/php a accès en lecture ?!?

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed