Partage
  • Partager sur Facebook
  • Partager sur Twitter

Lister des extensions PHP

Sujet résolu
    25 mars 2020 à 19:23:43

    Bonjour à tous, je sais que je ne suis pas le seul mais j'ai des problèmes avec un formulaire d'upload en php.

    J'aimerais que seul les fichiers php soient interdits en upload. Alors qu'actuellement, seuls les fichiers photo sont autorisés.

    Aient la flemme de lister dans mon php un nombre incalculable d'éxtensions, j'aimerais savoir si il y a un autre moyen ?

    Merci d'avance.

    <?php
    // Vérifier si le formulaire a été soumis
    if($_SERVER["REQUEST_METHOD"] == "POST"){
        // Vérifie si le fichier a été uploadé sans erreur.
        if(isset($_FILES["photo"]) && $_FILES["photo"]["error"] == 0){
            $allowed = array("jpg" => "image/jpg", "jpeg" => "image/jpeg", "gif" => "image/gif", "png" => "image/png");
            $filename = $_FILES["photo"]["name"];
            $filetype = $_FILES["photo"]["type"];
            $filesize = $_FILES["photo"]["size"];
    
            // Vérifie l'extension du fichier
            $ext = pathinfo($filename, PATHINFO_EXTENSION);
            if(!array_key_exists($ext, $allowed)) die("Erreur : Veuillez sélectionner un format de fichier valide.");
    
            // Vérifie la taille du fichier - 5Mo maximum
            $maxsize = 5 * 1024 * 1024;
            if($filesize > $maxsize) die("Error: La taille du fichier est supérieure à la limite autorisée.");
    
            // Vérifie le type MIME du fichier
            if(in_array($filetype, $allowed)){
                // Vérifie si le fichier existe avant de le télécharger.
                if(file_exists("upload/" . $_FILES["photo"]["name"])){
                    echo $_FILES["photo"]["name"] . " existe déjà.";
                } else{
                    move_uploaded_file($_FILES["photo"]["tmp_name"], "upload/" . $_FILES["photo"]["name"]);
                    echo "Votre fichier a été téléchargé avec succès.";
                } 
            } else{
                echo "Error: Il y a eu un problème de téléchargement de votre fichier. Veuillez réessayer."; 
            }
        } else{
            echo "Error: " . $_FILES["photo"]["error"];
        }
    }
    ?>

    -
    Edité par 4tus 25 mars 2020 à 21:30:58

    • Partager sur Facebook
    • Partager sur Twitter

    From dcloud4tynqjbpv2.onion

      Staff 25 mars 2020 à 19:26:20

      Bonjour,

      Mauvais titre

      Le titre est un élément important qui ne doit pas être négligé. N'oubliez pas cette règle simple : le titre idéal résume la question que vous allez poser en une petite phrase. Il doit permettre aux visiteurs de se repérer facilement dans le forum visité et d'identifier le sujet à sa seule lecture.

      Vous pouvez utiliser divers préfixes comme [Erreur], [MySQL], [Compatibilité], etc... Aussi, pensez à consulter les règles propres à chaque forum (visibles dans les topics épinglés en haut des sections).

      De plus, choisir un bon titre permet de rendre plus faciles les recherches des autres membres.

      Les titres de type "besoin d'aide" ou "problème" ne sont pas tolérés.

      Pour modifier votre titre, éditez le premier message de votre sujet.

      (titre originel : Problème avec un Upload.php)

      Liens conseillés

      • Partager sur Facebook
      • Partager sur Twitter
        25 mars 2020 à 19:46:19

        Il ne faut surtout pas se baser sur le type MIME envoyé par le client, il met ce qui lui chante ! Il faut juste lister les extensions de fichiers que tu autorises. Ca éliminerait déjà du code.

        Appliquer un strtolower sur $ext pour le array_key_exists serait pas mal aussi.

        Si vraiment tu veux tout autoriser sauf les fichiers php (voire autres), au lieu de faire une liste blanche, tu inverses ta logique pour obtenir l'approche d'une liste noire (au lieu de "si c'est dans le tableau c'est ok" => "si ce n'est pas dans le tableau, c'est ok"). C'est juste une condition à inverser en somme.

        Si vraiment tu as besoin du type MIME, il y a normalement les fonctions finfo qui remplacent mime_content_type (j'aurais juré que cette dernière était dépréciée par le passé)

        -
        Edité par julp 25 mars 2020 à 19:54:15

        • Partager sur Facebook
        • Partager sur Twitter

        julp.fr ~ Les règles sur OC ~ activer les erreurs PDO/SQL ~ je ne fais pas d'effort pour ceux qui n'en font pas

          25 mars 2020 à 20:26:44

          Ok merci beaucoup, mais je n'ai pas bien compris comment faire la liste noire ( inverser mon code ) t u pourrais m'envoyer un exemple stp?
          • Partager sur Facebook
          • Partager sur Twitter

          From dcloud4tynqjbpv2.onion

            Staff 25 mars 2020 à 20:33:10

            @TimeoBossuet Merci de modifier le titre de votre sujet comme demandé.

            • Partager sur Facebook
            • Partager sur Twitter
              25 mars 2020 à 21:31:56

              @abcabc
               C'est bon
              • Partager sur Facebook
              • Partager sur Twitter

              From dcloud4tynqjbpv2.onion

                25 mars 2020 à 22:10:42

                Bonsoir.

                Au lieu de vouloir vérifier si le type est dans une liste autorisée, il te suffit de vérifier si le type n'est pas dans une liste d'interdits pour ta condition.

                Si tu ne comprends pas comment faire, c'est à se demander comment tu as fait pour réaliser le code que tu montres.

                -
                Edité par Lartak 25 mars 2020 à 22:11:37

                • Partager sur Facebook
                • Partager sur Twitter

                Face a quelqu'un pour qui l'on n'éprouve que de l'aversion et du mépris, les yeux d'un homme deviennent extrêmement froids et cruels.

                  26 mars 2020 à 8:22:03

                  @julp
                  Ok merci beaucoup, mais je n'ai pas bien compris comment faire la liste noire ( inverser mon code ) t u pourrais m'envoyer un exemple stp?
                  • Partager sur Facebook
                  • Partager sur Twitter

                  From dcloud4tynqjbpv2.onion

                    26 mars 2020 à 8:28:14

                    Je répète:

                    Lartak a écrit:

                    Si tu ne comprends pas comment faire, c'est à se demander comment tu as fait pour réaliser le code que tu montres.

                    Nous ne sommes pas là pour faire des exemples à tout va, tu es quand même censé comprendre le code que tu présentes.

                    Comprends-tu au moins à quoi sert la fonction in_array ?

                    • Partager sur Facebook
                    • Partager sur Twitter

                    Face a quelqu'un pour qui l'on n'éprouve que de l'aversion et du mépris, les yeux d'un homme deviennent extrêmement froids et cruels.

                      26 mars 2020 à 8:37:01

                      Oui il dit si une valeur appartient à un tableau, enfin je crois je ne suis qu'un débutant en php
                      • Partager sur Facebook
                      • Partager sur Twitter

                      From dcloud4tynqjbpv2.onion

                        26 mars 2020 à 8:41:28

                        Tu connais l'opérateur correspondant à différent (disons plutôt correspondant à not) ?

                        -
                        Edité par Lartak 26 mars 2020 à 8:43:17

                        • Partager sur Facebook
                        • Partager sur Twitter

                        Face a quelqu'un pour qui l'on n'éprouve que de l'aversion et du mépris, les yeux d'un homme deviennent extrêmement froids et cruels.

                          26 mars 2020 à 9:15:02

                          Heu non, mais je ne suis qu'un débutant :D
                          • Partager sur Facebook
                          • Partager sur Twitter

                          From dcloud4tynqjbpv2.onion

                            26 mars 2020 à 10:57:43

                            Dans ce cas là, suis des cours, sinon tu ne va pas aller bien loin, car les opérateurs logiques c'est quand même la base.
                            • Partager sur Facebook
                            • Partager sur Twitter

                            Face a quelqu'un pour qui l'on n'éprouve que de l'aversion et du mépris, les yeux d'un homme deviennent extrêmement froids et cruels.

                            Lister des extensions PHP

                            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                            • Editeur
                            • Markdown