Que pourrais je améliorer sur mon fichier d upload d image
flexi2202
Messages postés
3640
Date d'inscription
Statut
Membre
Dernière intervention
-
flexi2202 Messages postés 3640 Date d'inscription Statut Membre Dernière intervention -
flexi2202 Messages postés 3640 Date d'inscription Statut Membre Dernière intervention -
bonjour a tous
avant toute chose chose un grand merci pour l aide de vous tous a finaliser mon projet
pour l instant je continue avec mes requêtes préparée
je viens de modifier un fichier et cela fonctionne
mais j aurais souhaiter savoir s il y a des choses a modifier
avant toute chose chose un grand merci pour l aide de vous tous a finaliser mon projet
pour l instant je continue avec mes requêtes préparée
je viens de modifier un fichier et cela fonctionne
mais j aurais souhaiter savoir s il y a des choses a modifier
<?php
session_start();
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);
$dossier = 'uploads/';
$fichier = basename($_FILES['file']['name']);
$taille_maxi = 5000000;
$taille = filesize($_FILES['file']['tmp_name']);
$extensions = array('.png', '.PNG', '.gif', '.jpg', '.JPG', '.jpeg', '.JPEG');
$extension = strrchr($_FILES['file']['name'], '.');
//Début des vérifications de sécurité...
if(!in_array($extension, $extensions)) //Si l'extension n'est pas dans le tableau
{
$erreur = 'Vous devez uploader un fichier de type png, gif, jpg, jpeg, txt ou doc...';
}
if($taille>$taille_maxi)
{
$erreur = 'Le fichier est trop gros...';
}
if(file_exists("uploads/" . $_FILES["file"]["name"])){
$erreur = ' L\'image existe déjà.';
}
if(!isset($erreur)) //S'il n'y a pas d'erreur, on upload
{
//On formate le nom du fichier ici...
$fichier = strtr($fichier,
'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',
'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
$fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier);
if(move_uploaded_file($_FILES['file']['tmp_name'], $dossier . $fichier)) //Si la fonction renvoie TRUE, c'est que ça a fonctionné..
{
echo ' <span style="margin-left:30%;"> <br /> Upload effectué avec succès ! </span>';
include('base.php');
//$req =$bdd->prepare('INSERT INTO galerie_images ( nom_img, nom_min) VALUES ( :nom_img, :nom_min)');
//$req->execute(array( 'nom_img' => $_FILES["file"]["name"], 'nom_min' => $_FILES["file"]["name"] ));
$image=$_FILES["file"]["name"]
//préparation de la requête et des variables
$sql = "INSERT INTO galerie_images ( nom_img, nom_min) VALUES (:nom_img, :nom_min)";
$datas = array(':nom_img'=> $image, ':nom_min'=> $image);
//Execution de la requete
try{
$requete = $bdd -> prepare($sql) ;
$requete->execute($datas) ;
}catch(Exception $e){
// en cas d'erreur :
echo " Erreur ! ".$e->getMessage();
echo " Les datas : " ;
print_r($datas);
}
}
else //Sinon (la fonction renvoie FALSE).
{
echo 'Echec de l\'upload !';
}
}
else
{
echo $erreur;
}
?>
5 réponses
-
Je suis étonné que ton script ne te retourne pas un message d'erreur...
Tu as oublié un point virguleà la ligne 37.
-
merci jordane pour la correction
oui en effet et j avais même fait mieux je n avais pas mis la bonne base de donnée et tout c est bien passe , mais bon j ai corrige bien sur
autrement tout semble ok a tes yeux-
Bonsoir flexi2202.
Non, ce n'est pas du tout ok, on ne se fie JAMAIS à l'extension d'un fichier pour en déterminer le type.
Pour moi, il y a aussi un problème lors de la vérification de l'existence d'un fichier de même nom, admettons un fichier se nommant gege_a_la_plage.jpg existe déjà dans ton répertoire, que se passe-t-il si on téléverse un fichier se nommant gégé_à_la_plage.jpg ?
Mieux vaut renommer tous les fichiers directement en gardant tout de même son nom comme information à afficher.
-
-
bonsoir Spirali
merci pour ton intervention , mais du coup
comment je pourrais corriger ce défaut?
j ai cherche après des scripts mais sans succès
car par la suite je dois parvenir a l intégrer dans le reste des fichiers
d ailleurs pour ce fichier c est une personne encore plus âgé que moi qui m aidé-
Bonjour.
Les scripts d'exemples d'upload de fichiers, y en a des tonnes sur internet, par exemple 1er lien https://www.w3schools.com/php/php_file_upload.asp
Pour le renommage, cela doit être pareil, je ne connais pas php plus que ça, mais des générateurs de string unique https://duckduckgo.com/?q=php+unique+string&t=hc&va=u&ia=web
Renommage du fichier et enregistrement dans la table de ce nom en gardant quand même en mémoire dans une colonne supplémentaire le nom réel du fichier à titre informatif.
Je ne sais pas comment les autres procèdent, mais c'est ce que je ferais si jamais j'avais à le faire.
-
-
bonjour
merci pour la réponse et les liens mais par exemple pour ce qui est de www.w3schools.com
j en garde des mauvais souvenirs avec notamment une zone membre qui n a jamais fonctionne
maintenant il reste aussi a le faire de façon manuelle ce changement de nom ...
mais c est vrai que dans mon script d upload il manque aussi une barre de progression en plus
donc je vais devoir chercher autre chose -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
je viens de trouver ce script mais j ai une erreur a la ligne 20
PHP Parse error: syntax error, unexpected ';', expecting ',' or ')' in Standard input code on line 20
et je parviens pas a mettre le doigt dessus
<?php // Inclut le fichier de configuration de la base de données include('dbConfig.php'); $statusMsg = '' ; // Chemin de téléchargement du fichier $targetDir = "uploads /" ; $fileName = basename ( $_FILES [ "fichier" ] [ "nom" ]); $targetFilePath = $targetDir . $fileName ; $fileType = pathinfo ( $targetFilePath , PATHINFO_EXTENSION ); if (isset ( $_POST [ "soumettre"]) &&! empty ( $_FILES [ "file" ] [ "name" ])) { // Autoriser certains formats de fichiers $allowTypes = array ( 'jpg' , 'png' , 'jpeg' , 'gif' , 'pdf ' ); if ( in_array ( $fileType , $allowTypes )) { // Télécharger le fichier sur le serveur if ( move_uploaded_file ( $_FILES [ "file" ] [ "tmp_name" ], $db -> query ( "INSERT into images (file_name, upload_on) VALUES (' . $fileName . ', NOW ())"); if ($insert) { $statusMsg = "Le fichier" . $fileName . "a été téléchargé avec succès." ; } else { $statusMsg = "Le téléchargement du fichier a échoué, veuillez réessayer." ; } } else { $statusMsg = "Désolé, une erreur s'est produite lors de l' importation de votre fichier." ; "Désolé, seuls les fichiers JPG, JPEG, PNG, GIF et PDF sont autorisés à télécharger." ; } } else { $statusMsg = 'Veuillez sélectionner un fichier à télécharger.' ; } // Afficher le message d'état echo $statusMsg ; ?>