Formulaire et piece jointe

Bonjour,

J'ai créé un formulaire pour l'envoi d'une description et d'un fichier joint...
j'ai beau écrire en long et en large que cette piece jointe doit etre un dossier ZIP mais faut croire que les gens ne savent pas lire... Est il possible de forcer l'envoi de ce fichier en ZIP ou RAR? c'est à dire que le formulaire ne s'enverra pas si le format n'est pas le bon...

Merci à tous
Configuration: Windows XP
Internet Explorer 7.0

5 réponses

  • Votes
  • Date
  • Date décroissante
  1. Salut,

    Une méthode pour contourner ce problème serait de contrôler l'extension du fichier avant l'envoi à l'aide de PHP bien sûr si tu utilises ce langage.

    Exemple :

    $extension = substr($_FILES['fichier_import']['name'],-4,4);
    if ($extension == ".zip") {
          //ton code...
    }
    else {
          $erreur = "Format zip svp !"
    }
    


    Mais soyons d'accord, l'utilisateur peut tout a fait modifier l'extension de son fichier avant de l'envoyer mais cela limitera pas mal les dégâts on est d'accord ? lol

    Allez ciao !
    1. mon formulaire est dans une page htm mais un fichier php est utilisé pour le script...
      je suppose que je dois ajouter cela dans le fichier php?

      dur dur le php quand on debute
  2. Il suffit normalement d'utiliser une expression régulière qui testera le nom du fichier envoyé.
    Quelque chose dans le genre :

    <script language="javascript">
    var mask = '.rar|.zip$';
    var reg = new RegExp(mask,"g");
    if(reg.test("nomdufichier")) {
    alert("Les fichiers ZIP et RAR sont interdits!");
    }
    else {
    formulaire.submit();
    }
    </script>
    1. ok merci

      j'ai essayé en mettant le script a la fin de mon formulaire juste avec </form> mais ca n'a pas marché
  3. En fait faudrait le mettre avant le </head> et plutôt ainsi :
    <script language="javascript">
    function verif(text)
    var mask = '.rar|.zip$';
    var reg = new RegExp(mask,"g");
    if(reg.test(text)) {
    alert("Les fichiers ZIP et RAR sont interdits!");
    }
    else {
    formulaire.submit();
    }
    }
    </script>

    et sur ton bouton d'envoi du formulaire tu mets un <input="button" onclick="verif(document.getElementById(iddetonchampdefichier).value);"> à la place de ton bouton type submit
    1. Pas marcher non plus

      Voila mon formulaire

      <form vname="FormName" action="mail/PHPFormmail.php" method="post" enctype="multipart/form-data" name="form">
      <table width="630" border="0" align="center" cellpadding="5" cellspacing="0">
      <tr>
      <td width="113"><div align="left">Expéditeur:</div></td>
      <td width="497"><div align="left">
      <input type="text" name="email" size="50">
      </div></td>
      </tr>
      <tr>
      <td><div align="left">Sujet</div></td>
      <td><div align="left">
      <input name="subject" type="text" value="contribution pour votre site" size="50" />
      </div></td>
      </tr>
      <tr>
      <td><div align="left">Message</div></td>
      <td><div align="left">
      <textarea rows="18" name="msg" cols="70"></textarea>
      </div></td>
      </tr>
      <tr>
      <td><div align="left">Fichier joint: <strong>ZIP</strong> </div></td>
      <td><div align="left">
      <input type="hidden" name="MAX_FILE_SIZE" value="10000000">
      <input name="NomFichier" type="file" size="50">
      </div></td>
      </tr>
      <tr>
      <td><div align="left"></div></td>
      <td>
      <div align="center">
      <input type="submit" value="Envoyer" onclick="verif(document.getElementById(iddetonchampdefichier).value);">
      <br />
      <strong>Patientez pendant l'envoi </strong></div></td></tr>
      </table>
      <p> </p>
      </form>

      Ca te parlera peut etre plus

      merci en tout cas
    2. @ptite59faut aps faire des copier/coller bêtement aussi -_-

      ça
      <input name="NomFichier" type="file" size="50">
      remplacé par
      <input id="filename" name="NomFichier" type="file" size="50">

      ça
      <input type="submit" value="Envoyer" onclick="verif(document.getElementById(iddetonchampdefichier).value);">
      remplacé par
      <input type="button" value="Envoyer" onclick="verif(document.getElementById('filename').value);">

      et si comprend pas ce que ça fait ça sert pas à grand chose...
    3. @NookZBen maintenant ca n envoi plus rien lol

      Je te redonne ce que j'ai écrit

      dans le <head></head>:

      <script language="javascript">
      function verif(text)
      var mask = '.jpg|.jpeg|.gig|.bmp$';
      var reg = new RegExp(mask,"g");
      if(reg.test(text)) {
      alert("Envoi des fichiers UNIQUEMENT par ZIP ou RAR! Merci");
      }
      else {
      formulaire.submit();
      }
      }
      </script>

      le formulaire:

      <form vname="FormName" action="mail/PHPFormmail.php" method="post" enctype="multipart/form-data" name="form">
      <table width="630" border="0" align="center" cellpadding="5" cellspacing="0">
      <tr>
      <td width="113"><div align="left">Expéditeur:</div></td>
      <td width="497"><div align="left">
      <input type="text" name="email" size="50">
      </div></td>
      </tr>
      <tr>
      <td><div align="left">Sujet</div></td>
      <td><div align="left">
      <input name="subject" type="text" value="contribution pour votre site" size="50" />
      </div></td>
      </tr>
      <tr>
      <td><div align="left">Message</div></td>
      <td><div align="left">
      <textarea rows="18" name="msg" cols="70"></textarea>
      </div></td>
      </tr>
      <tr>
      <td><div align="left">Fichier joint: <strong>ZIP</strong> </div></td>
      <td><div align="left">
      <input type="hidden" name="MAX_FILE_SIZE" value="10000000">
      <input id="filename" name="NomFichier" type="file" size="50"> </div></td>
      </tr>
      <tr>
      <td><div align="left"></div></td>
      <td>
      <div align="center">
      <input type="button" value="Envoyer" onclick="verif(document.getElementById('filename').value);">
      <br />
      <strong>Patientez pendant l'envoi </strong></div></td></tr>
      </table>
      <p> </p>
      </form>

      Merci merci merci
  4. else {
    formulaire.submit();
    }

    =>

    else {
    document.forms['form'].submit();
    }
    1. Merci pour ton aide mais ca ne marche toujours pas...

      Je laisse mon formulaire comme ca tant pis
    2. @ptite59je testerai ce soir, si j'y pense. Je t'enverrais une solution par MP si tu veux, c'est juste que là j'ai pas de quoi tester ^^