Mauvaise extension !

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Mauvaise extension !

par Isaric » 05 oct. 2005, 18:29

Non, je l'ai rajouté et c'est bon.

image/x-xcfFichier valide et uploadé correctement.

par Cyrano » 05 oct. 2005, 18:20

Bon, mais là, si ça affiche un de tes messages personalisés, on avance: est-ce que le type mime "image/x-xcf" est dans la liste que tu as mise dans ton tableau ?

par Isaric » 05 oct. 2005, 18:14

Pour .xcf <à 2Mo
J'obtiens :
image/x-xcfMauvaise extension !

Merci pour toutes cette aide, félicitation pour cette rapidité et cette efficacité.

Eric

par Cyrano » 05 oct. 2005, 17:54

C'est le poids du fichier qui pose problème: par défaut, le maxi autorisé en upload http, c'est 2Mo et sur free, on ne peut bien entendu pas le changer et les fonctions ftp sont désactivées.

par Isaric » 05 oct. 2005, 17:40

Toujours le même problème avec :
<form enctype="multipart/form-data" method="post" action="./upload.php" name="form_upload">

Un wav marche :
audio/x-wavFichier valide et uploadé correctement.
Un mp3 3,7 Mo pose problème :
dans une fenêtre Firefox "le document contient aucune donnée"

par Cyrano » 05 oct. 2005, 17:29

Non, lis donc ce que j'écris: dans l'attribut action de la balise <form>

par Isaric » 05 oct. 2005, 17:27

...en ajoutant donc ./ avant le nom du fichier
dans <input type="file" name="aFile">
<input type="file" name="./aFile">

par Cyrano » 05 oct. 2005, 17:23

Essaye en mettant action="./upload.php" (en ajoutant donc ./ avant le nom du fichier)

par Isaric » 05 oct. 2005, 17:21

<form enctype="multipart/form-data" method="post" action="upload.php" name="form_upload">

<!-- Taille maximale en octets. Non sécurisé car facilement contournable !! -->

<input type="hidden" name="MAX_FILE_SIZE" value="10000000000">

par Cyrano » 05 oct. 2005, 17:18

Si ça ne charge pas du tout la page, c'est à tout le moins une curiosité.

Quelle valeur il y a dans l'attribut action de la balise <form> ?

par Invité » 05 oct. 2005, 17:03

J'ai mis echo($_FILES['aFile']['type']) en première ligne de code donné au dessus.

S'il accepte le fichier, je vois le type Mime qui apparait avant
"uploadé correctement..."


Sinon, j'ai une alerte Firefox : "le document contient aucune donnée"

Est-ce un problème de configuration de firefox ?

par Cyrano » 05 oct. 2005, 15:36

Pour vérifier, ajoute une ligne echo($_FILES['champ_formulaire']['type']) et envoie un mp3 via le formulaire pour faire afficher le type exact à l'écran, tu seras fixé

par Isaric » 05 oct. 2005, 15:35

Marche
.jpg
.doc
.gif
.wmv
.pps
.htm

Marche pas :
.mp3
.odt
.tar.gz
.xcf
.swf

Même le mp3 ?

avec :
$authorized_type = array(
"image/jpeg",
"image/gif",
"image/png",
"application/pdf",
"application/postscript",
"application/msword",
"application/rtf",
"application/vnd.ms-excel",
"application/vnd.ms-powerpoint",
"text/html",
"application/vnd.oasis.opendocu",
"application/zip",
"multipart/x-zip",
"application/x-tar",
"multipart/x-gzip",
"audio/x-wav",
"audio/x-wav",
"audio/mp3",
"audio/mpeg",
"audio/x-mpeg",
"audio/mpeg3",
"audio/x-mpeg3",
"audio/mpeg-url",
"audio/x-mpeg-url",
"audio/mp4",
"video/mpeg",
"video/x-mpeg",
"video/x-ms-wmv",
"video/x-ms-asf",
"video/quicktime",
"video/x-quicktime",
"video/msvideo",
"video/x-msvideo",
"video/x-sgi-movie"
);

par Cyrano » 05 oct. 2005, 14:15

Pour que ça marche avec in_array(), il faudrait que les valeurs possibles soient dans un tableau:
$authorized_type = array(
 "image/jpeg",
 "image/gif",
 "image/png",
 "application/pdf",
 "application/postscript",
 "application/msword",
 "application/rtf",
 "application/vnd.ms-excel",
 "application/vnd.ms-powerpoint",
 "text/html",
 "application/zip",
 "multipart/x-zip",
 "application/x-tar",
 "multipart/x-gzip",
 "audio/x-wav",
 "audio/x-wav",
 "audio/mpeg",
 "audio/x-mpeg",
 "audio/mpeg3",
 "audio/x-mpeg3",
 "audio/mpeg-url",
 "audio/x-mpeg-url",
 "audio/x-ogg",
 "audio/mod",
 "audio/x-mod",
 "audio/midi",
 "audio/x-midi",
 "video/mpeg",
 "video/x-mpeg",
 "video/x-ms-wmv",
 "video/x-ms-asf",
 "video/quicktime",
 "video/x-quicktime",
 "video/msvideo",
 "video/x-msvideo",
 "video/x-sgi-movie"
 );
Comme ça donc... :-k

par Isaric » 05 oct. 2005, 14:04

Code : Tout sélectionner

<?php /** * function formatFileName * @access public * @param string - nom de fichier à formater * @param int - longueur maximale autorisée pour le nom de fichier * @return string - nom de fichier formaté * @desc Tronque éventuellement le nom de fichier, le convertit en minuscules et * y élimine les caractères potentiellement dangereux. */ function formatFileName($aFileName, $aMaxLength = 50) { $aFileName = strToLower(subStr($aFileName, 0, $aMaxLength)); $aFileName = ereg_replace('[^a-zA-Z0-9,._\+\()\-]', '_', $aFileName); return $aFileName; } // end of function formatFileName() /2 /* PARAMETRES DE CONFIGURATION DU SCRIPT */ // chemin d'accès au répertoire d'upload (vers où le fichier uploadé temporaire sera transféré) // ce répertoire doit EXISTER et être ACCESSIBLE EN ECRITURE !! $destination_dir = 'textes/'; // taille maximale en octets du fichier à uploader $file_max_size = 10000000000; // extensions de fichiers autorisées // $authorized_extensions = array('.jpg','.gif','.doc','.xls','.pdf','.odt','.ott','.sxw','.stw','.mov','.wmv','.mpg','.mp3','.ogg','.zip','.rar','.gz'); $authorized_type = " image/jpeg, image/gif, image/png, application/pdf, application/postscript, application/msword, application/rtf, application/vnd.ms-excel, application/vnd.ms-powerpoint, text/html application/zip, multipart/x-zip, application/x-tar, multipart/x-gzip, audio/x-wav, audio/x-wav, audio/mpeg, audio/x-mpeg, audio/mpeg3, audio/x-mpeg3, audio/mpeg-url, audio/x-mpeg-url, audio/x-ogg, audio/mod, audio/x-mod, audio/midi, audio/x-midi, video/mpeg, video/x-mpeg, video/x-ms-wmv, video/x-ms-asf, video/quicktime, video/x-quicktime, video/msvideo, video/x-msvideo, video/x-sgi-movie "; /* TRAITEMENT PRINCIPAL */ // vérifie l'existence du répertoire de destination if (!is_dir($destination_dir)) { echo 'Veuillez indiquer un r&eacute;pertoire destination correct !'; die(); } // vérifie que répertoire de destination a des droits en écriture if (!is_writeable($destination_dir)) { echo 'Veuillez spécifier des droits en écriture pour le r&eacute;pertoire destination !'; die(); } // réception du formulaire if (isSet($_POST['submitFile'])) { // vérifie qu'un fichier a bien été soumis if (isSet($_FILES) && is_array($_FILES)) { // pas d'erreur lors de l'upload if ($_FILES['aFile']['error'] == UPLOAD_ERR_OK) { // vérifie la taille en octets if ($_FILES['aFile']['size'] <= $file_max_size) { // vérifie l'extension du fichier recu // il est aussi possible (et sans doute mieux) de se baser sur $_FILES['aFile']['type'] // qui retourne le type MIME correspondant (par exemple: image/jpeg) // Modif $extension = substr($_FILES['aFile']['name'], -4, 4); $extension = ($_FILES['aFile']['type']); // if (in_array(strToLower($extension), $authorized_extensions)) if (in_array(strToLower($extension), $authorized_type)) { // définit un nom de fichier destination unique à partir du nom du fichier original formaté // modif RIC //$destination_file = time().formatFileName($_FILES['aFile']['name']); $destination_file = formatFileName($_FILES['aFile']['name']); // déplace le fichier uploadé du répertoire temporaire // vers les répertoire/fichier destination spécifiés if (move_uploaded_file($_FILES['aFile']['tmp_name'], $destination_dir.DIRECTORY_SEPARATOR.$destination_file)) { echo 'Fichier valide et upload&eacute; correctement.'; } else { // error sur move_uploaded_file echo 'Le fichier n\'a pas &eacute;t&eacute; upload&eacute; correctement !'; } } else { // pas d'extension ou mauvaise extension echo 'Mauvaise extension !'; } } else { // Taille maximale dépassée echo 'Fichier trop volumineux !'; } } else { // Erreur lors de l'upload switch ($_FILES['aFile']['error']) { case UPLOAD_ERR_INI_SIZE: echo 'Le fichier upload&eacute; d&eacute;passe la valeur sp&eacute;cifi&eacute;e pour upload_max_filesize dans php.ini.'; break; case UPLOAD_ERR_FORM_SIZE: echo 'Le fichier upload&eacute; d&eacute;passe la valeur sp&eacute;cifi&eacute;e pour MAX_FILE_SIZE dans le formulaire d\'upload.'; break; case UPLOAD_ERR_PARTIAL: echo 'Le fichier n\'a &eacute;t&eacute que partiellement upload&eacute;.'; break; default: echo 'Aucun fichier n\'a &eacute;t&eacute upload&eacute;.'; } // switch } } else { // aucun fichier reçu echo 'Pas de fichier recu'; } } // fin de réception de formulaire ?>