Besoin d'aide sur des fonctions PHP

Fermé
Youbss Messages postés 11 Date d'inscription dimanche 5 juin 2016 Statut Membre Dernière intervention 12 avril 2018 - 17 avril 2017 à 23:34
Youbss Messages postés 11 Date d'inscription dimanche 5 juin 2016 Statut Membre Dernière intervention 12 avril 2018 - 19 avril 2017 à 14:23
Bonjour,
je suis un débutant en php j'ai un projet de formulaire que je dois rendre à la fin du mois
le problème est j'essai d'uploader des fichiers dans ma base de données mais les fonction "in_array( ), move_upload_file() et strrchr() "ne fonctionnent pas et je sais vraiment pas pourquoi? j'ai bésoin de finir ce travail ou bien sinon y'a autres solutions proposez les moi j'en serais ravis.

Voici le code que j'utilise:

<?php
if(!empty($_FILES)){
$file_name=$_FILES['fichier']['name'];
$file_extension=strrchr($file_name ,'.');
$file_tmp_name=$_FILES['fichier']['tmp_name'];
$file_dest='Image/'.$file_name;
$extension_autorise=array('.gif','.jpg','.JPG','.png');
if(in_array($file_name, $extension_autorise)) {
if(move_uploaded_file($file_tmp_name,$file_dest)){
echo "Image envoyée avec succès";
}
else{
echo "Une erreur est survenue lors de l'envoie de l'image";
}
}

else{
echo "Seuls les images de types gif,jpg,JPG,png sont autorisées";
}

}
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8"/>
</head>
<body>
<form action ="" method="POST" enctype="multipart/form-data">
<input type="file" name="fichier" /><br/>
<input type="submit" value="Envoyer" /><br/>
</form>
</body>
</html>



2 réponses

Tes fonctions fonctionnent correctement, c'est juste ta condition qui est mauvaise, tu utilises $file_name et non $file_extension dans ton in_array, donc à chaque fois tu vas chercher le nom du fichier complet parmi les extensions.

Après appliques un strtolower sur ta variable $file_extension pour avoir l'extension en minuscule, et donc pas devoir mettre .JPG dans ton array, ce qui est identique à .jpg, mais rajoute .jpeg aussi.

Et pour finir, j'espère que c'est juste un exercice, car là tu as une grosse fail de sécurité.
1
Youbss Messages postés 11 Date d'inscription dimanche 5 juin 2016 Statut Membre Dernière intervention 12 avril 2018
Modifié le 19 avril 2017 à 03:45
Merci beaucoup mais est ce que tu peux m'en dire plus sur la faille?
vraiment je sais pas comment te remercié,je suis debutant et je veux devenir programmeur j'ai besoin de tes conseils
0
Utilisateur anonyme
19 avril 2017 à 04:56
C'est une vielle faille, et sur les dernières versions de PHP c'est corrigé, mais au cas où tu upload ton script sur un serveur qui n'est pas à jour, on peut uploader des scripts PHP à la place des images:

https://openclassrooms.com/fr/courses/2091901-protegez-vous-efficacement-contre-les-failles-web/2680177-la-faille-upload
0
Youbss Messages postés 11 Date d'inscription dimanche 5 juin 2016 Statut Membre Dernière intervention 12 avril 2018
19 avril 2017 à 14:23
ok encore mille et un merci
0