Upload fichier vers serveur : Probléme php

Fermé
-
 benj -
Bonjour,

J'ai un petit probléme avec un script qui permet d'envoyé des fichier vers mon serveur.
Voici le code :
<!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" xml:lang="fr">
  <head>
    <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
    <title>Lucasweb</title>
    <meta http-equiv="Cache-Control" content="no-cache" /> 
    <style type="text/css" media="all">@import "./css/css.css"; </style>
    <script type="text/javascript" src="java/xdir.js"></script>
  </head>
  <body>
<?php include('menu.html') ?>
<?php
if(isset($_GET['id'])){
//recup de lid posté en GET par le lien
        $file = $_GET['id'];
  }
// Taille maximum
$MAX_FILE_SIZE = 150000;
// Dossier de destination du fichier
$folder = "./photo/";

// Tableau array des différents types
$allowed_types = array("image/bmp", "image/gif", "image/pjpeg", "image/jpeg", "image/jpg");

// Variables récupérée par methode POST du formulaires
$ftype = $HTTP_POST_FILES['fichier']['type'];
$fsize = $HTTP_POST_FILES['fichier']['size'];
$ftmp = $HTTP_POST_FILES['fichier']['tmp_name'];

// Diverses test 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($fize > $MAX_FILE_SIZE){$error = 2;}

// Le fichier n'existe pas déjà
if(file_exists($folder."m_".$file)){$error = 3;}

// Si tout va bien, c'est bien déroulé
if(copy($ftmp,''.$folder.''.$file.'')) {$error = 0;}

// Switch servant simplement à la gestion des erreures
switch($error){
case'0':
echo("Fichier correctement envoyé.");
break;
case'1':
echo("Format de fichier incorrecte.");
break;
case'2':
echo("Fichier trop volumineux.");
break;
case'3':
echo("Fichier déjà existant.");
break;
}
?>
</body>
</html>


L'upload se fait parfaitement mais le fichier est renomé pour prendre le numéro de l'ID, jusque ici tout va bien.
Mais il n'y a pas l'extension. Je voudrais que le fichier se nomme :
$id.$extenssion

Mais je ne sais pas comment faire.

Merci

4 réponses


Personne ne sait ???
déjà je te conseil d'utiliser des elseif au lieu des if parce que là si la variable $error prend une valeur ca ne top pas le script et ca n'empeche pas la copie du fichier.

ensuite je te conseil move_uploaded_file() au lieu de copy() qui et plus approprié à cette action.

pour ce qui est de l'extension:

move_uploaded_file($ftmp,$folder.'/'.$id.'.'.$extenssion);
j'oublier pense à proteger tes variables super global

tu peux par exemple mettre en tete de chaque page :

<?php

function ProtectArray($item) {
		$item = array_map('htmlentities',$item);
		if (@mysql_real_escape_string('blabla')) return array_map('mysql_real_escape_string',$item);
		else return $item;
	}

if (isset($_GET)) {
	$GET = ProtectArray($_GET);
}
if (isset($_POST)) {
	$POST = ProtectArray($_POST);
}

if (isset($_COOKIE)) {
	$COOKIE = $Sql->ProtectArray($_COOKIE);
}

?>


qui te les protègeras automatiquement