probleme avec extensions

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 : probleme avec extensions

par Xenon_54 » 07 avr. 2008, 04:09

La fonction retourne l'extension du fichier. Avec le résultat, tu fais une comparaison avec ceux autorisées.

Tu peux toujours faire un truc de ce genre pour vérifier si une extension est autorisée:
<?php
# Extensions autorisées
$extensions_autorisees = array('.jpg', '.gif', '.png');

# Récupération de l'extension en minuscule
$extension = strtolower( extension('fichier.jpg') );

# Vérification
if (in_array($extension, $extensions_autorisees) === TRUE) {
  echo 'OK';
} else {
  echo 'Erreur!';
}
?>

par nom d'utilisateur » 06 avr. 2008, 22:24

Merci pour ta reponse, mais je comprends pas c'est ou que tu autorise tes extentions et c'est ou que tu teste si le fichier a l'extension que tu veux ou pas, merci encore

par Xenon_54 » 06 avr. 2008, 21:12

Vérifier l'extension n'est pas suffisant niveau sécurité. Et si j'uploadais un fichier qui n'est pas du JPG mais qui avait une extension .jpg?

Il faudrait se tourner vers cette fonction afin de vérifier le type de l'image:
http://www.php.net/manual/fr/function.e ... getype.php

Autrement pour vérifier une extension:
Récupère l'extension d'un fichier incluant le point. Pour les fichiers à multiples extensions, seule la dernière extension est récupérée.
<?php
function extension( $filename ) {
    if (($res = strrpos($filename, '.')) !== FALSE) {
        return substr($filename, $res);
    } else {
        return '';
    }
}

function test_case( $filename ) {
	printf('<strong>%s</strong> = %s<br>', $filename, extension($filename) );
}

test_case('filename.ext');
test_case('filename.ext2.ext');
test_case('filename');
?>
Affichera:
filename.ext = .ext
filename.ext2.ext = .ext
filename =
Et pour vérifier tous les fichiers, tu peux utiliser une boucle foreach:
foreach ($_FILES as $file) {
  // Nom: $file['name']
}

par nom d'utilisateur » 06 avr. 2008, 19:13

apres quelques recherches j'ai trouvé un truc plus costaud :
$AUTH_EXT = array( ".jpeg");
function isExtAuthorized($ext){
	global $AUTH_EXT;
	if(in_array($ext, $AUTH_EXT)){
		return true;
	}else{
		return false;
	}
}
$extension1 = strrchr($_FILES['photo1']['name'], ".") ;
//$extension2 = strrchr($_FILES['photo2']['name'], ".") ;
//$extension3 = strrchr($_FILES['photo3']['name'], ".") ;

if(!isExtAuthorized($extension1)){$erreur = "Format de photo incorrect.";} 
 
ca a l'air d'etre bon, par contre contrairement a l'autre j'arrive pas a tester plusieurs photos en meme temps (j'ai 3 champs fichier) , comment ecrire le truc pour tester les 3 Merciiiiii

probleme avec extensions

par nom d'utilisateur » 06 avr. 2008, 18:24

Bonjour a tous, j'ai un upload et je veux autoriser seulement certaines extentions alors j'ai fais un truc simple :
 
$autorise = array(".jpeg");

$image = $_FILES['photo']['type'];

if(!in_array($image, $autorise )){$erreur = "Format de photo incorrect.";}

J'ai ainsi fait un test avec un jpeg ca passe ensuite un truc au hasard c'etait .tif ca passe pas donc je me suis di c'est bon mais qd j'ai testé avec .php ou .txt ca passe aussi , y'a un souci pkoi deja ca n'autorise pas seulement les .jpeg et aussi pkoi certains qui ne sont pas autorisees passent et pas d'autres. Merci de votre aide