Partage
  • Partager sur Facebook
  • Partager sur Twitter

Upload par php et html "faille de stockage".

Sujet résolu
    2 juin 2021 à 13:40:33

    Bonjour,

    J'ai un site web qui propose de stocker gratuitement des fichiers pendant 7 jours et celui ci fonctionne avec un formulaire php. Mais évidement avec de l'html aussi.

    <form enctype="multipart/form-data" action="fileupload.php" method="post">
            <input type="hidden" name="MAX_FILE_SIZE" value="10000000"/> <!-- = 10Mo --><!--http://www.ecommerce-pro.com/tutoriel/convertisseur_octets.php-->
            <b>SELECTIONNER UN FICHIER (10Mo max) :</b><br><input type="file" name="monfichier" /><br><br>
            <input type="submit" />
          </form>

    Ca c'est la partie HTML qui limite donc à 10Mo le fichier, mais j'ai un ami qui si connait même plus que moi en informatique et code et qui lui aussi,

    a trouvé cette "faille de stockage" lui permettant de stocker 100Go s'il le souhaite sur mon serveur/disque dur, et pour des raisons comme le fait

    que je n'aurait plus d'espace disque, que ça va faire pété mon wifi (serveur à 6mbps! Freebox révolution mdrr) et aussi pour le simple fait qu'il 

    détourne mes limites, je refuse cela. J'ai également un fichier php le voici :

    <html>
    <head>
      <meta charset="utf-8">
    </head>
    <body>
    <?php
    $nomOrigine = $_FILES['monfichier']['name'];
    $elementsChemin = pathinfo($nomOrigine);
    $extensionFichier = $elementsChemin['extension'];
    $extensionsAutorisees = array("jpeg""jpg""gif""png""jfif""mp3""html""pdf""odt""mp4""webp""html""js""css""txt""odb""exe""msi""mov""m4v""mpg""asf"
    "wma""mp2""m2p""vob""h264""mpeg4""wtv""wmv""asf""avi""mkv""mpg""flv""mpeg""avchd""mts""3g2""3gp""zip""log""csv""rar""heic");
    if (!(in_array($extensionFichier$extensionsAutorisees))) {
        echo "Le fichier n'a pas l'extension attendue";
    else {    
        // Copie dans le repertoire du script avec un nom
        // incluant l'heure a la seconde pres 
        $repertoireDestination = dirname(__FILE__)."../../drive1/2021/";
        $nomDestination = "".date("YmdHis").".$extensionFichier";

        if (move_uploaded_file($_FILES["monfichier"]["tmp_name"], 
            $repertoireDestination.$nomDestination)) {
            echo "Le fichier est disponible ici : https://drive1.monsite.com/2021/".$nomDestination;
        } else {
            echo "Le fichier n'a pas été uploadé (trop gros ?)";
        }
    }
    ?>
    </body>
    </html>

    même si le php.ini permet de définir une limite, je ne souhaite pas l'utiliser (car j'ai une page d'upload dans admin et j'upload + de10Mo),

    Alors je voudrais que la limite de 10Mo apparaît seulement dans le fichier php, et plus dans le fichier html, qui lui peut-être modifié avec les outils de devs (inspecter l'élément). Mais je ne veux pas d'un nouveau fichier php à tout recommencer de 0, non, je voudrais juste le mettre dans le fichier php sans toucher à autre chose. Je sais que cela est possible mais comment ? Si quelqu'un peut me dire à voir même directement le remplir dans le fichier php, ce serait génial !

    Merci d'avance à tous !

    • Partager sur Facebook
    • Partager sur Twitter
      2 juin 2021 à 13:44:49

      Fonction filesize : tu rajoutes un test sur filesize($_FILES["monfichier"]["tmp_name"]) pour faire ou non le déplacement (move_uploaded_file)

      PS : il faut utiliser le bouton </> pour insérer du code

      -
      Edité par julp 2 juin 2021 à 13:45:16

      • Partager sur Facebook
      • Partager sur Twitter
        2 juin 2021 à 15:53:45

        Si le fichier est trop gros je ne veut pas qu'il soit déplacé (dans un fichier de mon disque?). Et pour tout vous dire j'ai 14 ans, et j'ai pas trop compris ce que vous avez voulu me dire avec la fonction filesize, je ne sais pas appliquer ça de mes propres connaissances. Expliquez plus clairement svp. Merci

        • Partager sur Facebook
        • Partager sur Twitter
          2 juin 2021 à 16:06:04

          C'est ton code ?

          Tu ajoutes un else if(filesize($_FILES["monfichier"]["tmp_name"]) > 10_000_000) pour afficher une "erreur" ?

          • Partager sur Facebook
          • Partager sur Twitter
            2 juin 2021 à 16:22:27

            Malgrès tout je ne comprend donc là pas le sens de ta phrase. Tu dis que j'ai utilisé quelque chose comme elseif(filesize($_FILES["monfichier"]["tmp_name"]) > 100_000_000) ou bien tu me dis de mettre ça ? Si il faut que je mette ça, dans uel endroit précis de mon code stp ? Et à quelle valeur correspond 100 000 000 ? 100Mo ? 

            Le php c'est pas mon truc déso

            -
            Edité par matias_j__ 2 juin 2021 à 16:22:49

            • Partager sur Facebook
            • Partager sur Twitter
              6 juin 2021 à 16:48:57

              Bonsoir,

              Pour bien maitriser ce que tu veux faire, je te conseil de regarder ce lien: https://www.php.net/manual/fr/features.file-upload.php

              Pour compléter ce que dit julp, tu dois dans tes contrôles php avant d'autoriser l'upload du fichier vérifier que celui- ci correspond à la taille autorisé.

              • Partager sur Facebook
              • Partager sur Twitter
              Merci de signaler votre sujet résolu, cela nous évite des pages de lecture inutile pour arriver au bout de 15 réponses sur la dernière qui dit "merci problème résolut!"
                13 juin 2021 à 15:14:55

                Bonjour,

                Merci et cela fonctionne bien en tant que limite de stockage, mais quand ça m'affiche l'erreur, ça affiche le répertoire du site et c'est un gros problème, surtout si des hackeurs le voient !

                Capture d'écran : https://drive.google.com/file/d/1Xp3Nn6SesmMkfcDiuX143WBDJDZDWqlG/view?usp=sharing

                D:\www\monsite\fileupload.php ... Comment faire pour éviter cela ? Ou renvoyer vers une page personnalisée ?

                -
                Edité par matias_j__ 13 juin 2021 à 15:17:24

                • Partager sur Facebook
                • Partager sur Twitter
                  13 juin 2021 à 16:03:58

                  Qu'on me corrige si je me trompe mais PHP lève de lui-même l'erreur donc il n'y aurait rien à y faire mais sur un serveur dit "de production", les erreurs PHP ne sont pas censées être affichées (ie configuré avec un display_errors à off).

                  -
                  Edité par julp 13 juin 2021 à 16:06:34

                  • Partager sur Facebook
                  • Partager sur Twitter

                  Upload par php et html "faille de stockage".

                  × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                  × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                  • Editeur
                  • Markdown