Forum eedomus
http://forum.eedomus.fr/

Fonction base64_decode en PHP
http://forum.eedomus.fr/viewtopic.php?f=62&t=11927
Page 1 sur 1
Auteur:  dommarion [ 18 Juin 2023 18:57 ]
Sujet du message:  Fonction base64_decode en PHP

Bonjour,
Nous disposons de la fonction d'encodage d'une chaine en base64: base64_encode, mais nous ne disposons pas de son inverse base64_decode.
Voir le lien pour le détail de la fonction en PHP:https://www.php.net/manual/fr/function.base64-decode.php

J'ai sollicité la teams pour inclure cette fonction dans la box.
Malheureusement, pour des raisons de rétrocompatibilité avec la box eedomus (vs eedomus+) il n'est pas possible de mettre cela en fonction globale dans pour la box.
Il faut déclarer une fonction dans vos scripts pour avoir ce résultat, je vous propose cette fonction sous le nom de sdk_base64_decode() (le jour où la team la passera en global, alors il n'y aura qu'à supprimer la déclaration de votre fonction dans vos scripts :ugeek: ).

Code : Tout sélectionner
function sdk_base64_decode($input) {
   $keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
   $chr1 = $chr2 = $chr3 = "";
   $enc1 = $enc2 = $enc3 = $enc4 = "";
   $i = 0;
   $output = "";

   $input = preg_replace("[^A-Za-z0-9\+\/\=]", "", $input);
   do {
      $enc1 = strpos($keyStr, substr($input, $i++, 1));
      $enc2 = strpos($keyStr, substr($input, $i++, 1));
      $enc3 = strpos($keyStr, substr($input, $i++, 1));
      $enc4 = strpos($keyStr, substr($input, $i++, 1));
      $chr1 = ($enc1 << 2) | ($enc2 >> 4);
      $chr2 = (($enc2 & 15) << 4) | ($enc3 >> 2);
      $chr3 = (($enc3 & 3) << 6) | $enc4;
      $output = $output . chr((int) $chr1);
      if ($enc3 != 64) {
         $output = $output . chr((int) $chr2);
      }
      if ($enc4 != 64) {
         $output = $output . chr((int) $chr3);
      }
      $chr1 = $chr2 = $chr3 = "";
      $enc1 = $enc2 = $enc3 = $enc4 = "";
   } while ($i < strlen($input));
   return urldecode($output);
}


Bon weekend à tous.
dommarion
Page 1 sur 1 Le fuseau horaire est UTC+1 heure