Skip to content
Extraits de code Groupes Projets
Valider 6ae49c5a rédigé par maieul@maieul.net's avatar maieul@maieul.net
Parcourir les fichiers

début de vérification de fichiers, pour le moment vérifier mime_type précis

parent 3611df3c
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -46,6 +46,7 @@ verifier/email.php -text ...@@ -46,6 +46,7 @@ verifier/email.php -text
verifier/email.yaml -text verifier/email.yaml -text
verifier/entier.php -text verifier/entier.php -text
verifier/entier.yaml -text verifier/entier.yaml -text
verifier/fichiers.php -text
verifier/id_document.php -text verifier/id_document.php -text
verifier/id_document.yaml -text verifier/id_document.yaml -text
verifier/id_objet.php -text verifier/id_objet.php -text
......
...@@ -20,7 +20,7 @@ $GLOBALS[$GLOBALS['idx_lang']] = array( ...@@ -20,7 +20,7 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
'erreur_date_format' => 'Le format de la date n’est pas accepté.', 'erreur_date_format' => 'Le format de la date n’est pas accepté.',
'erreur_decimal' => 'La valeur doit être un nombre décimal.', 'erreur_decimal' => 'La valeur doit être un nombre décimal.',
'erreur_decimal_nb_decimales' => 'Le nombre ne doit pas avoir plus de @nb_decimales@ chiffres après la virgule.', 'erreur_decimal_nb_decimales' => 'Le nombre ne doit pas avoir plus de @nb_decimales@ chiffres après la virgule.',
'erreur_dimension_image' => 'Le fichier @name@ est trop grand : @taille@ (maximum @taille_max@).', 'erreur_dimension_image' => 'Le fichier « @name@ » est trop grand : @taille@ (maximum @taille_max@).',
'erreur_email' => 'L’adresse de courriel <em>@email@</em> n’a pas un format valide.', 'erreur_email' => 'L’adresse de courriel <em>@email@</em> n’a pas un format valide.',
'erreur_email_nondispo' => 'L’adresse de courriel <em>@email@</em> est déjà utilisée.', 'erreur_email_nondispo' => 'L’adresse de courriel <em>@email@</em> est déjà utilisée.',
'erreur_entier' => 'La valeur doit être un entier.', 'erreur_entier' => 'La valeur doit être un entier.',
...@@ -46,12 +46,12 @@ $GLOBALS[$GLOBALS['idx_lang']] = array( ...@@ -46,12 +46,12 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
'erreur_siret' => 'Le numéro de SIRET n’est pas valide.', 'erreur_siret' => 'Le numéro de SIRET n’est pas valide.',
'erreur_taille_egal' => 'La valeur doit comprendre exactement @egal@ caractères (actuellement @nb@).', 'erreur_taille_egal' => 'La valeur doit comprendre exactement @egal@ caractères (actuellement @nb@).',
'erreur_taille_entre' => 'La valeur doit comprendre entre @min@ et @max@ caractères (actuellement @nb@).', 'erreur_taille_entre' => 'La valeur doit comprendre entre @min@ et @max@ caractères (actuellement @nb@).',
'erreur_taille_image' => 'Le fichier @name@ est trop lourd : @taille@ (maximum @taille_max@).', 'erreur_taille_image' => 'Le fichier «&nbsp;@name@&nbsp;» est trop lourd : @taille@ (maximum @taille_max@).',
'erreur_taille_max' => 'La valeur doit comprendre au maximum @max@ caractères (actuellement @nb@).', 'erreur_taille_max' => 'La valeur doit comprendre au maximum @max@ caractères (actuellement @nb@).',
'erreur_taille_min' => 'La valeur doit comprendre au minimum @min@ caractères (actuellement @nb@).', 'erreur_taille_min' => 'La valeur doit comprendre au minimum @min@ caractères (actuellement @nb@).',
'erreur_telephone' => 'Le numéro n’est pas valide.', 'erreur_telephone' => 'Le numéro n’est pas valide.',
'erreur_type_image' => 'Le fichier @name@ n’est pas une image.', 'erreur_type_image' => 'Le fichier «&nbsp;@name@&nbsp;» n\'est pas une image.',
'erreur_type_non_autorise' => 'Le fichier @name@ n’est pas dun type autorisé.', 'erreur_type_non_autorise' => 'Le fichier «&nbsp;@name@&nbsp;» n\'est pas d\'un type autorisé.',
'erreur_url' => 'L’adresse <em>@url@</em> n’est pas valide.', 'erreur_url' => 'L’adresse <em>@url@</em> n’est pas valide.',
'erreur_url_protocole' => 'L’adresse saisie <em>(@url@)</em> doit commencer par @protocole@.', 'erreur_url_protocole' => 'L’adresse saisie <em>(@url@)</em> doit commencer par @protocole@.',
'erreur_url_protocole_exact' => 'L’adresse saisie <em>(@url@)</em> ne commence pas par un protocole valide (http:// par exemple).', 'erreur_url_protocole_exact' => 'L’adresse saisie <em>(@url@)</em> ne commence pas par un protocole valide (http:// par exemple).',
......
<?php
// Sécurité
if (!defined("_ECRIRE_INC_VERSION")) {
return;
}
/**
* Vérifier une saisie d'envoi de fichiers
*
* @param array $valeur
* Le sous tableau de $_FILES à vérifier, $_FILES['logo'] par exemple
* Doit être un champ avec un ou plusieurs upload
* @param array $options
* Options à vérifier :
* - mime au choix 'image','tous_spip','specifique'
* - mime_specifique (si l'option 'mime_specifique' est choisi ci-dessus)
* - taille_max (en Kio)
* - largeur_max (en px)
* - hauteur_max (en px)
* @param array &$erreurs_par_fichier
* Un tableau, passé par référence, qui contient le détail des erreurs fichier de $_FILES['fichier'] par fichier
* @return string
*/
function verifier_fichiers_dist($valeur, $options, &$erreurs_par_fichier) {
if (!is_array($valeur['tmp_name'])){//si on reçoit une info de type fichier unique, on bascule comme si on était fichier multiple
$old_valeur = $valeur;
$valeur = array();
foreach ($old_valeur as $propriete=>$val){
$valeur[$propriete][0] = $val;
}
}
foreach ($valeur['tmp_name'] as $cle=>$tmp_name){//On parcourt tous les fichiers
if ($valeur['error'][$cle]!=0){//On vérifie uniquement les fichiers bien expediés
continue;
}
if ($erreur=verifier_fichier_mime($valeur,$cle,$options)){// On commence par vérifier le type
$erreurs_par_fichier[$cle] = $erreur;
}
}
if (!empty($erreurs_par_fichier)){
return implode($erreurs_par_fichier,"<br />");
}
return '';
}
/**
* Vérifier le mime type d'une saisie d'envoi de fichiers
*
* @param array $valeur
* Le sous tableau de $_FILES à vérifier, $_FILES['logo'] par exemple
* Doit être un champ plusieurs uploads
* @param int $cle
* La clé du tableau qu'on vérifie
* @param array $options
* Les options tels que passés à verifier_fichiers()
* @return string
*/
function verifier_fichier_mime($valeur,$cle,$options){
if ($options['mime'] == 'specifique'){
if (!in_array($valeur['type'][$cle],$options['mime_specifique'])){
return _T('verifier:erreur_type_non_autorise',array('name'=>$valeur['name'][$cle]));
}
}
return '';
}
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter