Upload image et extensions
Résolu
Sinistrus
Messages postés
1010
Date d'inscription
Statut
Membre
Dernière intervention
-
Sinistrus Messages postés 1010 Date d'inscription Statut Membre Dernière intervention -
Sinistrus Messages postés 1010 Date d'inscription Statut Membre Dernière intervention -
Bonjour à tous !
J'essaie de poser des conditions à mon upload d'image tout en prenant compte des extension a accepter (ce qui ne fonctionne pas...) :
J'ai même essayé avec :
Mais ça ne marche pas. Vous avez idée svp ?
J'essaie de poser des conditions à mon upload d'image tout en prenant compte des extension a accepter (ce qui ne fonctionne pas...) :
// Dossier racine
$PathImage = '../../../images/logos/';
// Créer dossier si existe pas
if (!is_dir($PathImage)) {mkdir($PathImage, 0705, true);}
// 1Mo
$MaxSize = 1000000;
// Extension valides
$Ext_Valide = array('.png', '.PNG');
$_FILES['Fr_Image']['name'];
$_FILES['Fr_Image']['type'];
$_FILES['Fr_Image']['size'];
$_FILES['Fr_Image']['tmp_name'];
$_FILES['Fr_Image']['error'];
if ($_FILES['Fr_Image']['error'] > 0) $erreur = "Erreur lors du transfert de l'image.";
if ($_FILES['Fr_Image']['size'] > $MaxSize) $erreur = "Le fichier est trop volumineux.";
$Extension = strrchr($_FILES['Fr_Image']['name'], '.');
if (!in_array($Extension, $Ext_Valide)) {
$erreur = "Vous devez uploader un fichier de type .PNG";}
$Fr_Marque = mb_strtoupper($Fr_Marque,'UTF-8');
$Texte = $Fr_Marque;
$search = array('À','Á','Â','Ã','Ä','Å','Ç','È','É','Ê','Ë','Ì','Í','Î','Ï','Ò','Ó','Ô','Õ','Ö','Ù','Ú','Û','Ü','à','á','â','ã','ä','å','ç','è','é','ê','ë','ì','í','î','ï','ð','ò','ó','ô','õ','ö','ù','ú','û','ü','ý','ÿ');
$replace = array('A','A','A','A','A','A','C','E','E','E','E','I','I','I','I','O','O','O','O','O','U','U','U','U','a','a','a','a','a','a','c','e','e','e','e','i','i','i','i','o','o','o','o','o','o','u','u','u','u','y','y');
$TexteValid = str_replace($search, $replace, $Texte);
$Remplace = preg_replace('/([^.A-Za-z0-9]+)/i', '-', $TexteValid);
$Fr_Lien = strtolower($Remplace);
$Fr_Image = strtolower($Remplace).$Extension;
$Resultat = move_uploaded_file($_FILES['Fr_Image']['tmp_name'], $PathImage.$Fr_Image);
J'ai même essayé avec :
$Extension = pathinfo($_FILES['Fr_Image']['name'], PATHINFO_EXTENSION); if(!in_array($Extension,$Ext_Valide)) $erreur = "L'extension de l'image est incorrecte.";
Mais ça ne marche pas. Vous avez idée svp ?
A voir également:
- Upload image et extensions
- Image iso - Guide
- Upload video youtube - Télécharger - Diffusion
- Légender une image - Guide
- Reduire taille image - Guide
- Acronis true image - Télécharger - Sauvegarde
3 réponses
Salut,
Ta vérification semble correcte. As tu vérifier la valeur de la variable $Extension lors de l'upload d'un fichier ?
Ta vérification semble correcte. As tu vérifier la valeur de la variable $Extension lors de l'upload d'un fichier ?
Merci Pitet de t'intéresser au poste.
Lorsque je fais un echo à
J'ai changé le code de ma page pour essayer de mieux organiser, mais rencontre toujours le même soucis :
Lorsque je fais un echo à
$Extension = pathinfo($_FILES['Fr_Image']['name'], PATHINFO_EXTENSION);il me revoit
txtou
pngmais garde l'erreur que le fichier soit bon ou pas.
J'ai changé le code de ma page pour essayer de mieux organiser, mais rencontre toujours le même soucis :
if (isset($_POST["action"]) && $_POST["action"] == "send"){
$Ext_Valide = "";
$Extension = "";
$Fr_Marque = "";
$Fr_Lien = "";
$Remplace = "";
$Texte = "";
// Récupération des valeurs
$_FILES['Fr_Image']['name'];
$_FILES['Fr_Image']['type'];
$_FILES['Fr_Image']['size'];
$_FILES['Fr_Image']['tmp_name'];
$_FILES['Fr_Image']['error'];
$Fr_Marque = $_POST["Fr_Marque"]; $Fr_Marque = stripslashes($Fr_Marque);
$Fr_Pays_CI = isset($_POST["Fr_Pays_CI"]) ? "1" : "0"; $Fr_Pays_CI = stripslashes($Fr_Pays_CI);
$Fr_Pays_SN = isset($_POST["Fr_Pays_SN"]) ? "1" : "0"; $Fr_Pays_SN = stripslashes($Fr_Pays_SN);
// Dossier racine
$PathImage = '../../../images/logos/';
// Créer dossier si existe pas
if (!is_dir($PathImage)) {mkdir($PathImage, 0705, true);}
// 1Mo
$MaxSize = 1000000;
// Extension valides
$Ext_Valide = array('png', 'PNG');
// Récupère l'extension du fichier uploadé
$Extension = pathinfo($_FILES['Fr_Image']['name'], PATHINFO_EXTENSION);
// Convertis $Marque en majuscule
$Fr_Marque = mb_strtoupper($Fr_Marque,'UTF-8');
$Texte = $Fr_Marque;
// Remplace les caractère accentués
$search = array('À','Á','Â','Ã','Ä','Å','Ç','È','É','Ê','Ë','Ì','Í','Î','Ï','Ò','Ó','Ô','Õ','Ö','Ù','Ú','Û','Ü','à','á','â','ã','ä','å','ç','è','é','ê','ë','ì','í','î','ï','ð','ò','ó','ô','õ','ö','ù','ú','û','ü','ý','ÿ');
$replace = array('A','A','A','A','A','A','C','E','E','E','E','I','I','I','I','O','O','O','O','O','U','U','U','U','a','a','a','a','a','a','c','e','e','e','e','i','i','i','i','o','o','o','o','o','o','u','u','u','u','y','y');
$TexteValid = str_replace($search, $replace, $Texte);
// Remplace les caractères spéciaux par des '-'
$Remplace = preg_replace('/([^.A-Za-z0-9]+)/i', '-', $TexteValid);
// Convertis $Remplace en minuscule
$Fr_Lien = strtolower($Remplace);
// Convertis $Remplace en minuscule et ajoute l'extension
$Fr_Image = strtolower($Remplace).$Extension;
echo 'Ext_Valide: '.$Ext_Valide.'<br />';
echo 'Extension: '.$Extension.'<br />';
echo 'in_array: '.in_array($Ext_Valide);
if($Extension <> in_array($Ext_Valide)) {$_GET["msg"] = urlencode("L'extension de l'image est incorrecte. Veuillez choisir un fichier de type .png");}else{
if($_FILES['Fr_Image']['size'] > $MaxSize) {$_GET["msg"] = urlencode("Le fichier est trop volumineux.");}else{
if($_FILES["Fr_Image"]["error"] != 0) {$_GET["msg"] = urlencode("Veuillez renseigner le champ « <strong>Image</strong> »");}else{
if(empty($Fr_Marque)) {$_GET["msg"] = urlencode("Veuillez renseigner le champ « <strong>Marque</strong> »");}else{
if(empty($Fr_Lien)) {$_GET["msg"] = urlencode("Veuillez renseigner le champ « <strong>Lien</strong> »");}else{
// Enregistrement dans la base
$req_fr = $pdo->prepare ("INSERT INTO tb_marques (Image, Marque, Lien, CI, SN) VALUES (:Fr_Image, :Fr_Marque, :Fr_Lien, :Fr_Pays_CI, :Fr_Pays_SN)");
$req_fr ->execute(array(
"Fr_Image" => $Fr_Image,
"Fr_Marque" => $Fr_Marque,
"Fr_Lien" => $Fr_Lien.'.php',
"Fr_Pays_CI" => $Fr_Pays_CI,
"Fr_Pays_SN" => $Fr_Pays_SN ));
// Upload de l'image sur le serveur
$Resultat = move_uploaded_file($_FILES['Fr_Image']['tmp_name'], $PathImage.$Fr_Image);
// Message de confirmation
if($req_fr){echo('<div class="Message">L\'enregistrement a été ajouté avec succès.</div>'.$Renvois_0);
}else{
// Message d'erreur
echo('<div class="Erreur">Une erreur est survenue lors de l\'enregistrement.</div>'.$Renvois_0);}exit();}
}}}
}}
// Mon message d'erreur
if (!empty($_GET["msg"])){$msg = urldecode($_GET["msg"]); $msg = stripslashes($msg); echo('<div class="Erreur">'.$msg.'</div>'.$Renvois_0);}
$Renvois_1 = '<script type="text/javascript">window.setTimeout("location=(\'index.php\');",5000)</script>';
$Renvois_2 = '<script type="text/javascript">window.setTimeout("location=(\'ajouter.php\');",5000)</script>';
J'ai trouvé ^^
Il suffisait de remplacer :
par :
Donc mettre les deux variables dans le
Merci Pitet pour ton aide, tu vois j'évolue :p
Il suffisait de remplacer :
if($Extension <> in_array($Ext_Valide)) {$_GET["msg"] = urlencode("L'extension de l'image est incorrecte. Veuillez choisir un fichier de type .png");}else{
par :
if(!in_array($Extension, $Ext_Valide)) {$_GET["msg"] = urlencode("L'extension de l'image est incorrecte. Veuillez choisir un fichier de type .png");}else{
Donc mettre les deux variables dans le
in_arrayo'
Merci Pitet pour ton aide, tu vois j'évolue :p