Problème de syntaxe

Résolu
Belokanfr Messages postés 19 Date d'inscription lundi 4 juillet 2011 Statut Membre Dernière intervention 28 juin 2012 - 14 juin 2012 à 17:20
Belokanfr Messages postés 19 Date d'inscription lundi 4 juillet 2011 Statut Membre Dernière intervention 28 juin 2012 - 15 juin 2012 à 01:41
Bonjour à tous !

Je me décide enfin à écrire pour trouver une réponse à mon problème.

En effet, cela fait maintenant plus de 2 jours que j'essaye de trouver la bonne syntaxe pour le code ci-dessous.

Voilà ce que je souhaite faire et ce qui fonctionne :

1/ J'ai créer, à partir de divers scripts, un script permettant d'uploader un fichier. En uploadant celui-ci, je souhaite :
1. Vérifier le type de fichier (ex. : pdf, avi, jpg, etc.) et si celui-ci est valide alors on passe à l'étape suivante, sinon on a un message d'alerte.
2. Vérifier son poids, si celui-ci ne dépasse pas un poids maximal et si tel est le cas, alors on a un message d'alert.
3. Si tous les autres critères sont valides, alors on vérifie si le fichier porte le même nom qu'un fichier existant se trouvant dans le même dossier, et si c'est le cas, alors on ajoute la date à son nom, sinon on copie simplement le fichier avec sont nom.
Et si possible, supprimer les espaces dans le fichier par le code suivant :
$extension_upload = substr( strrchr($_FILES['fichier']['name'], '.') ,1); 



Ce qui fonctionne :
Le dernier point (n°3) fonctionne, à savoir que j'upload un fichier, s'il n'est pas existant, alors il est copié tel quel, sinon la date est ajouté à son nom, mais laisse les espaces, donc le code cité ci-dessus ne fonctionne pas.

Mais mon soucis, c'est que j'upload tout et n'importe quoi, c'est à dire que je peux uploader des fichiers qui ne se retrouvent pas dans mon tableau d'acceptation, et en plus, j'upload sans tenir compte du poids.

Donc en somme, j'upload sans vérification au préalable, ce qui me fait dire que le script ne tient compte QUE de la partie d'ajout de la date (ligne 53 à 62).

Je me débrouille mieux en html qu'en PHP, mais là, j'ai essayé toutes les combinaisons qui me paraissaient faisables et logiques.

Donc j'en appelle à vos connaissance et à votre savoir-faire.

Un grand merci anticipé à ceux qui prennent de leur temps pour me guider, voire me remettre le script dans une syntaxe correcte.

LES ELEMENTS :
(1- Le html nommé "upload.html" et 2- Le script PHP nommé "ulpoad.php3)


***HTML ***
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Multi-upload facile avec JQUERY</title>
<link rel="stylesheet" href="style.css" type="text/css" />
</head>

<form enctype="multipart/form-data" action="upload.php3" method="post">
Fichier : 

</form>

</html>




***PHP***
<?
// Taille maximum
$MAX_FILE_SIZE = 100;

// Dossier de destination du fichier
$folder = "upload/";

// Tableau array des différents types
$allowed_types = array(
"image/bmp", 
"image/gif", 
"image/pjpeg", 
"image/jpeg", 
"image/jpg", 
"image/png", 
"image/tiff",
"application/postscript",
"image/psd",
"application/x-shockwave-flash", 
"multipart/x-zip", 
"application/msword", 
"application/excel",
"application/vnd.ms-powerpoint", 
"application/pdf",
"text/html", 
"text/css",
"audio/aiff",
"audio/mpeg",
"audio/wav",
"audio/x-ms-wma",
"video/msvideo", 
"video/avi",
"video/mpeg",
"video/x-ms-wmv"
);

// Variables récupérées par méthode POST du formulaire
$fname = $_FILES['fichier']['name'];
$ftype = $_FILES ['fichier']['type'];
$fsize = $_FILES ['fichier']['size'];
$ftmp = $_FILES ['fichier']['tmp_name'];
$extension_upload = substr( strrchr($_FILES['fichier']['name'], '.') ,1); 

// Divers tests afin de savoir si :

// Le format de fichier correspond à notre tableau array
if(!in_array($ftype, $allowed_types)){$error = 1;}

// La taille du fichier n'est pas dépassée
if($fsize > $MAX_FILE_SIZE){$error = 2;}

// Si le fichier existe déjà
if (file_exists('./upload/'.$fname))
{
//Si le fichier existe, on rajoute dans son nom, la date et l'heure pour le différencier de la première (comme ça, on est sûr de ne pas avoir 2 images avec le même nom)
$nom_final= preg_replace("`.$extension_upload`is",date("ldSFY-h.i.s-A").".$extension_upload",$fname);
}
else {
$nom_final=$fname; //l'image n'existe pas on garde le même nom
}
//on déplace l'image dans le répertoire final
move_uploaded_file($ftmp,'./upload/'.$nom_final); {$error = 0;}


// Messages avec apostrophe
$m1 = ' à l\'emplacement suivant : ';
$m2 = htmlspecialchars($m1);


// Switch servant simplement à la gestion des erreures
switch($error){
case'0':
echo("Fichier correctement envoyé !
");
echo ('
');
echo ('
');
//L'image apparait après validation avec son nom, son emplacement, son type et son poids
echo '';
echo "

Le nom dorigine du fichier est '" . $fname . "'.
";
echo "Le fichier a été téléchargé avec succès"  . $m2  . '/upload/'.$nom_final . "'
";
echo "Le type du fichier est '" . $ftype . "'.
";
echo "La taille du fichier est de '" . $fsize . " octets'.
";
echo '[javascript:history.back(); Retour]';
break;
case'1':
echo("Format de fichier incorrecte.");
break;
case'2':
echo("Fichier trop volumineux.");
break;
}
?>




MERCI pour toutes vos futures réponses

Belokan

PS : si ce n'est pas le bon endroit pour poster cette demande, merci de m'indiquer dans quelle partie du forum je dois la poster.

1 réponse

Belokanfr Messages postés 19 Date d'inscription lundi 4 juillet 2011 Statut Membre Dernière intervention 28 juin 2012
15 juin 2012 à 01:41
La réponse :
<?
// Taille maximum
$MAX_FILE_SIZE = 100;

// Dossier de destination du fichier
$folder = "upload/";

// Tableau array des différents types
$allowed_types = array(
"image/bmp", 
"image/gif", 
"image/pjpeg", 
"image/jpeg", 
"image/jpg", 
"image/png", 
"image/tiff",
"application/postscript",
"image/psd",
"application/x-shockwave-flash", 
"multipart/x-zip", 
"application/msword", 
"application/excel",
"application/vnd.ms-powerpoint", 
"application/pdf",
"text/html", 
"text/css",
"audio/aiff",
"audio/mpeg",
"audio/wav",
"audio/x-ms-wma",
"video/msvideo", 
"video/avi",
"video/mpeg",
"video/x-ms-wmv"
);

// Variables récupérées par méthode POST du formulaire
$fname = $_FILES['fichier']['name'];
$ftype = $_FILES ['fichier']['type'];
$fsize = $_FILES ['fichier']['size'];
$ftmp = $_FILES ['fichier']['tmp_name'];
$extension_upload = substr( strrchr($_FILES['fichier']['name'], '.') ,1); 

// Divers tests afin de savoir si :

// Le format de fichier correspond à notre tableau array
if(!in_array($ftype, $allowed_types)){$error = 1;}

// La taille du fichier n'est pas dépassée
else if($fsize > $MAX_FILE_SIZE){$error = 2;}


else
{
      // Si le fichier existe déjà
      if (file_exists('./upload/'.$fname))
  {
  //Si le fichier existe, on rajoute dans son nom, la date et l'heure pour le différencier de la première (comme ça, on est sûr de ne pas avoir 2 images avec le même nom)
  $nom_final= preg_replace("`.$extension_upload`is",date("ldSFY-h.i.s-A").".$extension_upload",$fname);
  }
  else {
  $nom_final=$fname; //l'image n'existe pas on garde le même nom
  }
  //on déplace l'image dans le répertoire final
  if (move_uploaded_file($ftmp,'./upload/'.$nom_final)) {$error = 0;}
  else
  {$error = 3;}
}

// Messages avec apostrophe
$m1 = ' à l\'emplacement suivant : ';
$m2 = htmlspecialchars($m1);


// Switch servant simplement à la gestion des erreures
switch($error){
case'0':
echo("Fichier correctement envoyé !
");
echo ('
');
echo ('
');
//L'image apparait après validation avec son nom, son emplacement, son type et son poids
echo '';
echo "

Le nom dorigine du fichier est '" . $fname . "'.
";
echo "Le fichier a été téléchargé avec succès"  . $m2  . '/upload/'.$nom_final . "'
";
echo "Le type du fichier est '" . $ftype . "'.
";
echo "La taille du fichier est de '" . $fsize . " octets'.
";
echo '[javascript:history.back(); Retour]';
break;
// Les messages des erreurs
case'1':
echo("Format de fichier incorrecte.
");
echo '[javascript:history.back(); Retour]';
break;
case'2':
echo("Fichier trop volumineux.
");
echo '[javascript:history.back(); Retour]';
break;
case'3':
echo("Erreur lors du déplacement du fichier.
");
echo '[javascript:history.back(); Retour]';
break;
}
?>
3
Rejoignez-nous