Dump décimal et hexadécimal d'un fichier ($_files)

Soyez le premier à donner votre avis sur cette source.

Snippet vu 7 615 fois - Téléchargée 32 fois

Contenu du snippet

C'est l'occasion de jouer avec la variable superglobale $_FILES.

A défaut d'avoir un éditeur hexadécimal sous la main, autant l'avoir en ligne... ;)

Testé sous Apache 1.3.27, PHP 4.3.3, Windows.

NOTES:
1) Il est conseillé d'avoir un time-out PHP infini (=0)
2) Un fichier trop lourd fait ramer la machine
3) Le fichier suivant doit s'appeller "dump.php"

Source / Exemple :


<html>
<title>Dumper hexadécimal</title>
<body>
  <?php

    function SetStringLength($Value, $Len) {
      if (strlen($Value)<$Len)
        while (strlen($Value)!=$Len)
          $Value = '0'.$Value;
      return $Value;
    }

    function GetPost($key) {
      $rsl = '';
      if (isset($_POST[$key])) {
        $rsl = $_POST[$key];
      }
      return $rsl;
    }

    if (!isset($_FILES['FileName'])) {
  ?>

    <form name="FileSender" action="dump.php" method="post" ENCTYPE="multipart/form-data">
      Choisir le fichier (taille limitée à 256 ko)
      <br><input type="file" name="FileName">
      <br><input type="radio" name="mode" value="full" checked> Complet
      <br><input type="radio" name="mode" value="short"> Concis
      <br><input type="submit" name="butSend" value="Envoyer">
    </form>

  <?php
    } else {
      $Fln = $_FILES['FileName'];
      $FullMode = (strtolower(GetPost('mode'))=='full');

    //VERIFICATION DES ERREURS ET DES CONDITIONS DE BONNE UTILISATION
      if ($Fln['size']>262144) { //256 ko
        echo '<b>ERREUR:</b> la taille du fichier dépasse la limite autorisée';
        return 0;
      }
      if (!file_exists($Fln['tmp_name'])) { //256 ko
        echo '<b>ERREUR:</b> le fichier n\'existe pas';
        return 0;
      }
      if ($Fln['error']!=0) {
        echo '<b>ERREUR:</b> une erreur inconnue s\'est produite';
        return 0;
      }

    //OUVERTURE DU FICHIER
      $Hex='';
      $Dec='';
      $Char='';
      $CharPerLine = 16;
      $Offset = 0;
      echo '<p><a href="dump.php">Retour</a></p>';
      echo '<font size=+3>Dump du fichier "'.$Fln['name'].'"</font><br> ';
      echo '<font face="Courier New">';
      echo '<table cols=3 width="100%">';
      $fichier = fopen($Fln['tmp_name'], 'r');
      fseek($fichier, 0);
      for ($i=1 ; $i<=$Fln['size'] ; $i++) {
        $c = fgetc($fichier);

        if ($Hex!='') {
          if ($FullMode) $Hex .= '  ';
          else $Hex .= ' ';
        }
        $Hex .= SetStringLength(strtoupper(dechex(ord($c))),2);

        if ($Dec!='') { $Dec .= ' '; }
        $Dec .= SetStringLength(ord($c),3);

        if (ord($c)<32) { $c='<span style="BACKGROUND-COLOR: #F0F0F0"> </span>'; }
        else { $c = htmlentities($c); }
        $Char .= $c;

        if (($i % $CharPerLine==0) || ($i==$Fln['size'])) {
          if ($FullMode) {
            echo '<tr>';
            echo '<td><font color=maroon size=-1>#'.SetStringLength(dechex($Offset),8).'</font></td>';
            echo '<td><font color=navy size=-1>'.$Hex.'<br>'.$Dec.'</font></td>';
            echo '<td><font color=purple size=-1>'.$Char.'</font></td>';
            echo '</tr>';
          } else {
            echo $Hex.'<br>';
          }
          $Hex='';
          $Dec='';
          $Char='';
          $Offset += $CharPerLine;
        }
      }
      fclose($fichier);
      echo '</table>';
      echo '</font>';
    }
  ?>
</body>
</html>

Conclusion :


Vous pouvez toujours aller visiter http://altert.family.free.fr/

A voir également

Ajouter un commentaire Commentaire
Messages postés
7
Date d'inscription
vendredi 1 juillet 2011
Statut
Membre
Dernière intervention
24 août 2014

Très bien conçu, merci ;)

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.