Encodage des noms de fichiers générés à partir du titre du site

Réduire
X
 
  • Filtrer
  • Heure
  • Afficher
Tout effacer
nouveaux messages

  • Encodage des noms de fichiers générés à partir du titre du site

    Bonjour à tous,

    Je suis face à un problème que je n'arrive pas à résoudre, concernant le nom de la sauvegarde de base de données avec LazyDbBackup.
    Je prends pour exemple mon site dont le titre est "Au gré de nos plumes". La sauvegarde générée par LazyDbBackup me transmet bien par mail un fichier nommé "Au gré de nos plumes....2016-03-11_12-45-10.665.sql.gz", mais si je veux conserver ce fichier sur le serveur au lieu de le transmettre par mail, il va se nommer "Au gré de nos plumes....2016-03-11_12-45-10.665.sql.gz".
    J'ai tenté un "utf8_encode) qui m'a transmis par mail un fichier nommé "Au gré de...", et sur le serveur, ça devient "Au gré de...".
    Je n'ai pas trouvé de fonction PHP qui serait capable de gérer ces caractères et espaces en cas d'enregistrement sur le serveur distant : faut-il que je crée ma propre routine de remplacement ? Ou est-ce que htmlspecialchars serait la solution, et comment l'utiliser pour que n'importe quelle langue soit gérée ?

    Merci par avance de vos conseils !
    Robert
    Dernière édition par RobertG à 11/03/2016, 14h09
    "Patience et longueur de temps font plus que force ni que rage..." (La Fontaine : Le Lion et le Rat) - "Il n'y a pas de problèmes; il n'y a que des solutions" (André Gide).
    MoovJla et LazyDbBackup sur www.joomxtensions.com - FaQ sur www.fontanil.info - Site pro : www.robertg-conseil.fr chez PHPNET, sites perso chez PlanetHoster + sites gérés chez PHPNET, PlanetHoster, Ionos et OVH

  • #2
    Re : Encodage des noms de fichiers générés à partir du titre du site

    Je serais toi je ferais un remplacement de caractères pour une simple raison, si tu fais un backup sql, c'est pour éventuellement t'en servir à remonter ta base en cas de pépin. Si tu es contraint de le faire via ssh, et bien un mysql ou un mysqldump ne supporte ni les espaces, ni les caractères accentués, ni même, les tirets donc autant avoir un nom de fichier exploitable dès le début
    Christophe
    http://www.webcrea.fr

    Commentaire


    • #3
      Re : Encodage des noms de fichiers générés à partir du titre du site

      Bonjour Robert,
      Je n'ai jamais eu ce souci, mais si je comprends bien, c'est le nom de ton site qui contient accent et espace qui pose problème.
      Dans le script de Lazydbbackup.php, tu as une ligne qui ressemble à ça (ligne 121 chez moi)

      Code:
      $filename=$today.'.'.$config->get('sitename');
      Tu peux remplacer la ligne par quelque chose comme ceci :

      Code:
      $caracterefoireux  = array('é', 'è', 'à', 'ê', ' ');
      $boncaractere = array('e', 'e', 'a', 'e', '_');
      $reencodagenomsite = str_replace($caracterefoireux, $boncaractere, $config->get('sitename'));
      
      $filename=$today.'.'.$reencodagenomsite;
      2 choses :
      - je n'ai pas testé le script (vite fait su' l' gaz)
      - si c'est ce que tu veux, tu peux compléter le tableau de caractères à chercher et son équivalent en caractère de remplacement.

      Au moins, tu n'auras plus de problème d'encodage

      Cordialement,
      Chabi01 - http://www.xlformation.com

      Commentaire


      • #4
        Re : Encodage des noms de fichiers générés à partir du titre du site

        Merci de vos réponses. En les attendant, j'ai testé diverses solutions, dont ce code (source : http://www.infowebmaster.fr/tutoriel...nlever-accents)
        function suppr_accents($str, $encoding='utf-8')
        {
        // transformer les caractères accentués en entités HTML
        $str = htmlentities($str, ENT_NOQUOTES, $encoding);

        // remplacer les entités HTML pour avoir juste le premier caractères non accentués
        // Exemple : "&ecute;" => "e", "&Ecute;" => "E", "Ã " => "a" ...
        $str = preg_replace('#&([A-za-z])(?:acute|grave|cedil|circ|orn|ring|slash|th|tilde |uml);#', '\1', $str);

        // Remplacer les ligatures tel que : Œ, Æ ...
        // Exemple "Å“" => "oe"
        $str = preg_replace('#&([A-za-z]{2})(?:lig);#', '\1', $str);
        // Supprimer tout le reste
        $str = preg_replace('#&[^;]+;#', '', $str);

        return $str;
        }
        J'ai aussi remplacé les espaces par des "-".
        Mon fichier s'appelle maintenant "Au-gre-de-nos-plumes...".

        Auparavant, au niveau des noms de fichiers reçus par mail, je n'avais aucun problème. Il ne se pose que si le fichier est conservé sur le serveur, et d'ailleurs, j'ai du mal à comprendre que ce fichier nommé "Au gré de nos plumes....2016-03-11_12-45-10.665.sql.gz" et enregistré ainsi sur le serveur avant envoi par mail, soit correctement nommé "Au gré de nos plumes....2016-03-11_12-45-10.665.sql.gz" dans le mail...

        OK, ça fonctionne pour le français, mais pour d'autres langues ? Le fait d'utiliser htmlentities va-t-il permettre qu'un "ß" allemand par exemple soit pris en compte dans ce remplacement ?
        "Patience et longueur de temps font plus que force ni que rage..." (La Fontaine : Le Lion et le Rat) - "Il n'y a pas de problèmes; il n'y a que des solutions" (André Gide).
        MoovJla et LazyDbBackup sur www.joomxtensions.com - FaQ sur www.fontanil.info - Site pro : www.robertg-conseil.fr chez PHPNET, sites perso chez PlanetHoster + sites gérés chez PHPNET, PlanetHoster, Ionos et OVH

        Commentaire


        • #5
          Re : Encodage des noms de fichiers générés à partir du titre du site

          Je me réponds à moi-même !
          Le "ß" allemand est bien remplacé par "sz".
          "Patience et longueur de temps font plus que force ni que rage..." (La Fontaine : Le Lion et le Rat) - "Il n'y a pas de problèmes; il n'y a que des solutions" (André Gide).
          MoovJla et LazyDbBackup sur www.joomxtensions.com - FaQ sur www.fontanil.info - Site pro : www.robertg-conseil.fr chez PHPNET, sites perso chez PlanetHoster + sites gérés chez PHPNET, PlanetHoster, Ionos et OVH

          Commentaire


          • #6
            Re : Encodage des noms de fichiers générés à partir du titre du site

            Yep, ton exemple de script est plus complet : il traite tous les caractères "possibles" mais c'était bien l'idée
            A+
            Chabi01 - http://www.xlformation.com

            Commentaire


            • #7
              Re : Encodage des noms de fichiers générés à partir du titre du site

              le tiret n'est pas traité et cause une erreur en cas d'injection via la commande mysql
              Christophe
              http://www.webcrea.fr

              Commentaire


              • #8
                Re : Encodage des noms de fichiers générés à partir du titre du site

                Bonjour,

                j'ai du mal à comprendre que ce fichier nommé "Au gré de nos plumes....2016-03-11_12-45-10.665.sql.gz" et enregistré ainsi sur le serveur avant envoi par mail, soit correctement nommé "Au gré de nos plumes....2016-03-11_12-45-10.665.sql.gz" dans le mail.
                Il est fort probable que la langue par défaut sur le serveur soit (le LC_ALL) soit le classique C soit du fr_FR et non fr_FR.UTF-8, et dans ce cas, les différences d'encodage sont normales.

                Le plus simple, pour tous les noms de fichiers, est d'utiliser url_encode() ce qui passe partout
                Pas de demande de support par MP.
                S'il n'y a pas de solution, c'est qu'il n'y a pas de problème (Devise Shadok)

                Commentaire


                • #9
                  Re : Encodage des noms de fichiers générés à partir du titre du site

                  Problème avec urlencode, ça ne gère pas les accents.
                  Sur un autre site, avec urlencode, j'ai "Ergé+et+la+..." : le "é" reste présent dans le nom du fichier enregistré sur le serveur, et dans le mail reçu, le fichier dump est nommé "Erg%C3%A9+et+la+...".
                  Donc sur le serveur, le fichier utilise un caractère non admissible, et dans le mail, le nom du fichier n'est pas des plus clairs.
                  J'en reste donc pour l'instant à mon remplacement précédent, mais je ne comprends pas cette remarque, webcrea :
                  le tiret n'est pas traité et cause une erreur en cas d'injection via la commande mysql
                  Il s'agit d'un plugin qui lance une sauvegarde de la base : comment une injection mysql est-elle possible ?
                  "Patience et longueur de temps font plus que force ni que rage..." (La Fontaine : Le Lion et le Rat) - "Il n'y a pas de problèmes; il n'y a que des solutions" (André Gide).
                  MoovJla et LazyDbBackup sur www.joomxtensions.com - FaQ sur www.fontanil.info - Site pro : www.robertg-conseil.fr chez PHPNET, sites perso chez PlanetHoster + sites gérés chez PHPNET, PlanetHoster, Ionos et OVH

                  Commentaire


                  • #10
                    Re : Encodage des noms de fichiers générés à partir du titre du site

                    pour importer une bd via ssh, on utilise la commande mysql. Ce n'est pas une injection dans le sens d'un hack
                    Christophe
                    http://www.webcrea.fr

                    Commentaire


                    • #11
                      Re : Encodage des noms de fichiers générés à partir du titre du site

                      Envoyé par webcrea Voir le message
                      pour importer une bd via ssh, on utilise la commande mysql. Ce n'est pas une injection dans le sens d'un hack
                      Mais il me semble que le problème est juste au niveau du nom du fichier non ? Pas au niveau des informations incluses dans le fichier lui même ?
                      Sinon, peux-tu me donner un lien vers ta doc qui indique que le tiret n'est pas traité via ssh ? Je ne suis pas au courant de ce souci et j'utilise ssh souvent !! Merci !
                      Chabi01 - http://www.xlformation.com

                      Commentaire


                      • #12
                        Re : Encodage des noms de fichiers générés à partir du titre du site

                        Je confirme qu'en ce qui me concerne, il ne s'agit que du nom de fichier, actuellement correct dans le mail, mais pas lorsqu'on garde une copie du dump sur le serveur.
                        "Patience et longueur de temps font plus que force ni que rage..." (La Fontaine : Le Lion et le Rat) - "Il n'y a pas de problèmes; il n'y a que des solutions" (André Gide).
                        MoovJla et LazyDbBackup sur www.joomxtensions.com - FaQ sur www.fontanil.info - Site pro : www.robertg-conseil.fr chez PHPNET, sites perso chez PlanetHoster + sites gérés chez PHPNET, PlanetHoster, Ionos et OVH

                        Commentaire


                        • #13
                          Re : Encodage des noms de fichiers générés à partir du titre du site

                          Donc théoriquement pas de souci en terme d'import au niveau des bases.
                          Merci à webcrea de nous fournir les infos concernant les "limitations de ssh pour les tirets" et les "injections sql" à partir d'un dump sql...
                          Chabi01 - http://www.xlformation.com

                          Commentaire


                          • #14
                            Re : Encodage des noms de fichiers générés à partir du titre du site

                            Précision, c'est sur le mot de passe, si tu as des caractères spéciaux ça génère une erreur (#@-...)
                            Christophe
                            http://www.webcrea.fr

                            Commentaire


                            • #15
                              Re : Encodage des noms de fichiers générés à partir du titre du site

                              ?? pa compris... Tu peux expliquer ? Tous mes mots de passe ont des caractères spéciaux et je n'ai pas de souci : cela fait partie de la complexité demandée pour tous les mots de passe. La commande pour te connecter à mysql te demande le nom d'utilisateur et la base, c'est seulement après que tu donnes ton mot de passe qui peut contenir tous les caractères possibles chez moi...

                              Merci de nous expliquer en détails : si il y a un souci et que cela génère "une injection sql", il faut que je me renseigne plus avant...
                              Chabi01 - http://www.xlformation.com

                              Commentaire

                              Annonce

                              Réduire
                              Aucune annonce pour le moment.

                              Partenaire de l'association

                              Réduire

                              Hébergeur Web PlanetHoster
                              Travaille ...
                              X