securité upload

Eléphant du PHP | 297 Messages

19 avr. 2006, 05:12

Bonjour 8)
J'essaye d'adapter les secus(extension et poids) du tuto sur l'upload, a mon script, mais tout passe :shock:
voici le debut de mon code :
<?php
// je remonte la déclaration avant la récup du fichier 
$nomFichier = ""; // déclaration des variables 
$chemin = ""; 

//Script Upload
//on vérifies que le champ est bien rempli:
if(!empty($_FILES["photo"]["name"]))   {
$nomFichier    = $_FILES["photo"]["name"] ;  	//nom du fichier choisi:
$nomTemporaire = $_FILES["photo"]["tmp_name"] ;  	//nom temporaire sur le serveur:
$typeFichier   = $_FILES["photo"]["type"] ;   	//type du fichier choisi:
$poidsFichier  = $_FILES["photo"]["size"] ;   	//poids en octets du fichier choisit:
$codeErreur    = $_FILES["photo"]["error"] ;   	//code de l'erreur si jamais il y en a une:

unset($erreur);
$extensions_ok = array('png', 'gif', 'jpg', 'jpeg');
$taille_max = 100000;

//chemin qui mène au dossier qui va contenir les fichiers upload:
$chemin = "./images/" ;

 // vérifications
   if( !in_array( substr(strrchr($_FILES['photo']['name'], '.'), 1), $extensions_ok ) )
    {
$erreur = 'Veuillez sélectionner un fichier de type png, gif ou jpg !';
	}
	elseif( file_exists($_FILES['photo']['tmp_name'])
	and filesize($_FILES['photo']['tmp_name']) > $taille_max)
	{
$erreur = 'Votre fichier doit faire moins de 100Ko !';
	}

//l'upload !

	if(move_uploaded_file($nomTemporaire, $chemin.$nomFichier));
		 }
et voici le debut du tuto :
<?php
 if(isset($_FILES['photo']))
{
// params  unset($erreur);
$extensions_ok = array('png', 'gif', 'jpg', 'jpeg'); 
$taille_max = 100000;  
$dest_dossier = '/home/damien/photos/';
// utilisez également des slashes sous windows : $dest_dossier  = 'd:/damien/photos/';  
// vérifications
  if( !in_array( substr(strrchr($_FILES['photo']['name'], '.'), 1), $extensions_ok ) )
  { 
$erreur = 'Veuillez sélectionner un fichier de type png, gif ou jpg !';
    }  elseif( file_exists($_FILES['photo']['tmp_name'])
           and filesize($_FILES['photo']['tmp_name']) > $taille_max)
  {    
$erreur = 'Votre fichier doit faire moins de 500Ko !';  }  
// copie du fichier  if(!isset($erreur))  {
dois je aussi adapter mon formulaire ??

merci

Eléphant du PHP | 413 Messages

19 avr. 2006, 11:06

salut,

tout d'abord, sache qu'au moment où tu fais tous ces contrôles, ton fichier est déjà uploadé (transféré sur le serveur web).

Ensuite, même s'il y a une erreur, tu fais le move_uploaded_file.
il faudrait plutôt faire un truc du genre :
if (! isset($erreur)) {
  move_uploaded_file(...);
}
--
Goeb

Eléphant du PHP | 297 Messages

26 avr. 2006, 16:04

salut,
merci goeb pour ta reponse, mais impossible de le mettre en place .
ca vient surement de moi :?
bon, j'abuse , mais est-ce qu'il y 'aurait une bonne ame pour m'aider a mettre en plce mes verification d'upload :oops:
voici mon code (qui fonctionne sans les verifs)
<?php
// je remonte la déclaration avant la récup du fichier 
$nomFichier = ""; // déclaration des variables 
$chemin = ""; 

//Script Upload
//on vérifies que le champ est bien rempli:
if(!empty($_FILES["photo"]["name"]))   {
$nomFichier    = $_FILES["photo"]["name"] ;  	//nom du fichier choisi:
$nomTemporaire = $_FILES["photo"]["tmp_name"] ;  	//nom temporaire sur le serveur:
$typeFichier   = $_FILES["photo"]["type"] ;   	//type du fichier choisi:
$poidsFichier  = $_FILES["photo"]["size"] ;   	//poids en octets du fichier choisit:
$codeErreur    = $_FILES["photo"]["error"] ;   	//code de l'erreur si jamais il y en a une:

unset($erreur);
$extensions_ok = array('png', 'gif', 'jpg', 'jpeg');
$taille_max = 100000;

//chemin qui mène au dossier qui va contenir les fichiers upload:
$chemin = "./images/" ;

 // vérifications
   if( !in_array( substr(strrchr($_FILES['photo']['name'], '.'), 1), $extensions_ok ) )
    {
$erreur = 'Veuillez sélectionner un fichier de type png, gif ou jpg !';
	}
	elseif( file_exists($_FILES['photo']['tmp_name'])
	and filesize($_FILES['photo']['tmp_name']) > $taille_max)
	{
$erreur = 'Votre fichier doit faire moins de 100Ko !';
	}

//l'upload !

if(move_uploaded_file($nomTemporaire, $chemin.$nomFichier));
		 }
	
//debut script dream mise a jour table
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
{
  $theValue = (!get_magic_quotes_gpc()) ? addslashes($theValue) : $theValue;

  switch ($theType) {
    case "text":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;    
    case "long":
    case "int":
      $theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case "double":
      $theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL";
      break;
    case "date":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;
    case "defined":
      $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
      break;
  }
  return $theValue;
}

$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
  $editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}

if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
  $insertSQL = sprintf("INSERT INTO basepays (id, pays, site, photo, chemin) VALUES (%s, %s, %s, %s, %s)",
                       GetSQLValueString($_POST['id'], "int"), 
                       GetSQLValueString($_POST['pays'], "text"), 
                       GetSQLValueString($_POST['site'], "text"), 
                       GetSQLValueString($nomFichier, "text"), // utilisation des variables nom 
                       GetSQLValueString($chemin, "text")); // et chemin 

  mysql_select_db($database_pays, $pays);
  $Result1 = mysql_query($insertSQL, $pays) or die(mysql_error());

  }
  header(sprintf("Location: %s", $insertGoTo));
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Document sans titre</title>
</head>

<body>
<form action="<?php echo $editFormAction; ?>" method="post" enctype="multipart/form-data" name="form1">
  <table align="center">
    <tr valign="baseline">
      <td nowrap align="right">Pays:</td>
      <td><select name="pays" id="pays">
        <option value="argentine" selected>Argentine</option>
        <option value="bresil">Bresil</option>
        <option value="chili">Chili</option>
        <option value="espagne">Espagne</option>
        <option value="france">France</option>
        <option value="italie">Italie</option>
      </select></td>
    </tr>
    <tr valign="baseline">
      <td nowrap align="right">Site:</td>
      <td><select name="site" id="site">
        <option value="amazonie" selected>Amazonie</option>
        <option value="cote">Cote</option>
        <option value="desert">Desert</option>
        <option value="montagne">Montagne</option>
      </select></td>
    </tr>
    <tr valign="baseline">
      <td nowrap align="right">Photo:</td>
      <td><input name="photo" type="file" id="photo"></td>
    </tr>
    <tr valign="baseline">
      <td nowrap align="right">&nbsp;</td>
      <td><input type="submit" value="Insérer l'enregistrement"></td>
    </tr>
  </table>
  <input type="hidden" name="id" value="">
  <input type="hidden" name="chemin" value="">
  <input type="hidden" name="MM_insert" value="form1">
</form>
<p>&nbsp;</p>
</body>
</html>

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

26 avr. 2006, 16:12

if(move_uploaded_file($nomTemporaire, $chemin.$nomFichier)); 
pourquoi un if si tu ne gère pas les erreurs éventuelles du move_uploaded_file ? Autant faire directement :
move_uploaded_file($nomTemporaire, $chemin.$nomFichier);
Quant à l'erreur si le fichier est trop gros ou pas au bon format, il te suffit en effet de tester s'il y en a eu une en reprenant le code de goeb par exemple, et en ne faisant le move_uploaded_file ci dessus, que lorsque tu n'en as pas...

Une p'tite remarque en passant, si jamais l'extension du fichier n'est pas en minuscule, il ne sera pas accepté... enfin une fois que le control aura été mis en place ;)

Eléphant du PHP | 297 Messages

26 avr. 2006, 16:42

salut Ryle,
j'ai changé le script au niveau de l'upload, mais j'ai une parse error a la ligne 135 (mon code va jusqu'a 132)...
voici de nouveau la partie upload de mon script:
//Script Upload
//on vérifies que le champ est bien rempli:
if(!empty($_FILES["photo"]["name"]))   {
$nomFichier    = $_FILES["photo"]["name"] ;  	//nom du fichier choisi:
$nomTemporaire = $_FILES["photo"]["tmp_name"] ;  	//nom temporaire sur le serveur:
$typeFichier   = $_FILES["photo"]["type"] ;   	//type du fichier choisi:
$poidsFichier  = $_FILES["photo"]["size"] ;   	//poids en octets du fichier choisit:
$codeErreur    = $_FILES["photo"]["error"] ;   	//code de l'erreur si jamais il y en a une:

unset($erreur);
$extensions_ok = array('png', 'gif', 'jpg', 'jpeg');
$taille_max = 100000;

//chemin qui mène au dossier qui va contenir les fichiers upload:
$chemin = "./images/" ;

 // vérifications
   if( !in_array( substr(strrchr($_FILES['photo']['name'], '.'), 1), $extensions_ok ) )
    {
$erreur = 'Veuillez sélectionner un fichier de type png, gif ou jpg !';
	}
	elseif( file_exists($_FILES['photo']['tmp_name'])
	and filesize($_FILES['photo']['tmp_name']) > $taille_max)
	{
$erreur = 'Votre fichier doit faire moins de 100Ko !';
	}

//l'upload !
if (! isset($erreur)) {
	move_uploaded_file($nomTemporaire, $chemin.$nomFichier);
		 }
	
//debut script dream mise a jour table
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
{
  $theValue = (!get_magic_quotes_gpc()) ? addslashes($theValue) : $theValue;

  switch ($theType) {
    case "text":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;    
    case "long":
    case "int":
      $theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case "double":
      $theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL";
      break;
    case "date":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;
    case "defined":
      $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
      break;
  }
  return $theValue;
}

$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
  $editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}

if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
  $insertSQL = sprintf("INSERT INTO basepays (id, pays, site, photo, chemin) VALUES (%s, %s, %s, %s, %s)",
                       GetSQLValueString($_POST['id'], "int"), 
                       GetSQLValueString($_POST['pays'], "text"), 
                       GetSQLValueString($_POST['site'], "text"), 
                       GetSQLValueString($nomFichier, "text"), // utilisation des variables nom 
                       GetSQLValueString($chemin, "text")); // et chemin 

  mysql_select_db($database_pays, $pays);
  $Result1 = mysql_query($insertSQL, $pays) or die(mysql_error());

  }
  header(sprintf("Location: %s", $insertGoTo));
}

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

26 avr. 2006, 16:54

En général quand tu as une erreur tout à la fin du fichier, c'est que tu as une acolade ou une parenthèse qui est mal équilibrée.. je ne la vois pas à premiere vue sur le code que tu as donné, mais peut être avant ou apres ?

A noter qu'en cas d'erreur également, tu ne devrais pas insérer ton enregistrement en base à mon avis :)

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

26 avr. 2006, 17:09

Parse error : le plus souvent est un ; oublié
sinon il met unexpected (

Regarde avant la ligne indiquée.
Règle n°2 du webmaster : Toujours commencer par le HTML qu'on veut obtenir....toujours ! :priere:
J'aime apprendre de nouvelles choses.

Eléphant du PHP | 297 Messages

26 avr. 2006, 17:36

merci pour votre aide,
je pense que l'erreur, vient d'une acolade
j'ai retouché seulement ce code:
//l'upload ! 
if (! isset($erreur)) { 
    move_uploaded_file($nomTemporaire, $chemin.$nomFichier); 
         } 
qui etait avant :
if(move_uploaded_file($nomTemporaire, $chemin.$nomFichier));
		 }
il y a une acolade seule (apparement)
petite lecon d'acolade please ? :wink:

Eléphant du PHP | 297 Messages

26 avr. 2006, 17:44

je pense avoir trouvé pour l'acolade, car je n'ai plus le nessage d'erreur,
par contre u fichier autre que jpg..., passe :cry:
pouvez vous me dire ou je dois modifier ?
<?php
// je remonte la déclaration avant la récup du fichier 
$nomFichier = ""; // déclaration des variables 
$chemin = ""; 

//Script Upload
//on vérifies que le champ est bien rempli:
if(!empty($_FILES["photo"]["name"]))   
$nomFichier    = $_FILES["photo"]["name"] ;  	//nom du fichier choisi:
$nomTemporaire = $_FILES["photo"]["tmp_name"] ;  	//nom temporaire sur le serveur:
$typeFichier   = $_FILES["photo"]["type"] ;   	//type du fichier choisi:
$poidsFichier  = $_FILES["photo"]["size"] ;   	//poids en octets du fichier choisit:
$codeErreur    = $_FILES["photo"]["error"] ;   	//code de l'erreur si jamais il y en a une:

unset($erreur);
$extensions_ok = array('png', 'gif', 'jpg', 'jpeg');
$taille_max = 100000;

//chemin qui mène au dossier qui va contenir les fichiers upload:
$chemin = "./images/" ;

 // vérifications
   if( !in_array( substr(strrchr($_FILES['photo']['name'], '.'), 1), $extensions_ok ) )
    {
$erreur = 'Veuillez sélectionner un fichier de type png, gif ou jpg !';
	}
	elseif( file_exists($_FILES['photo']['tmp_name'])
	and filesize($_FILES['photo']['tmp_name']) > $taille_max)
	{
$erreur = 'Votre fichier doit faire moins de 100Ko !';
	}

//l'upload ! 
if (! isset($erreur)) { 
    move_uploaded_file($nomTemporaire, $chemin.$nomFichier); 
         } 
	
//debut script dream mise a jour table
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
{
  $theValue = (!get_magic_quotes_gpc()) ? addslashes($theValue) : $theValue;

  switch ($theType) {
    case "text":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;    
    case "long":
    case "int":
      $theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case "double":
      $theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL";
      break;
    case "date":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;
    case "defined":
      $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
      break;
  }
  return $theValue;
}

$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
  $editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}

if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
  $insertSQL = sprintf("INSERT INTO basepays (id, pays, site, photo, chemin) VALUES (%s, %s, %s, %s, %s)",
                       GetSQLValueString($_POST['id'], "int"), 
                       GetSQLValueString($_POST['pays'], "text"), 
                       GetSQLValueString($_POST['site'], "text"), 
                       GetSQLValueString($nomFichier, "text"), // utilisation des variables nom 
                       GetSQLValueString($chemin, "text")); // et chemin 

  mysql_select_db($database_pays, $pays);
  $Result1 = mysql_query($insertSQL, $pays) or die(mysql_error());

  $insertGoTo = "indexexemple.htm";
  if (isset($_SERVER['QUERY_STRING'])) {
    $insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
    $insertGoTo .= $_SERVER['QUERY_STRING'];
  }
  header(sprintf("Location: %s", $insertGoTo));
}
?>

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

26 avr. 2006, 18:23

Petite leçon d'acolade donc :)
if(move_uploaded_file($nomTemporaire, $chemin.$nomFichier)); 
         } 
En virant le if cela devient :
move_uploaded_file($nomTemporaire, $chemin.$nomFichier); 
         } 
En rajoutant le contrôle sur l'erreur :
if (! isset($erreur)) { // j'ajoute une acolade ouvrante au début de mon test
  move_uploaded_file($nomTemporaire, $chemin.$nomFichier); 
}// j'ajoute une acolade fermante à la fin de mon test
         } // s'il y avait déjà une acolade, c'est qu'elle avait toutes les chances de servir à quelque chose, alors j'y touche po ! ;) 
Maintenant quand tu dis qu'un fichier autre que jpg passe, ca veut dire quoi ? qu'il est déposé sur le serveur dans ton dossier ? que son nom est enregistré dans ta base (c'est normal, tu n'as pas rajouté de controle pour savoir s'il y avait eu une erreur avant de faire le insert) ? c'est quoi l'extension de ce fichier (parce que si c'est png, c'est normal ;))

Invité
Invité n'ayant pas de compte PHPfrance

26 avr. 2006, 19:20

bonne question :)
eh bien, un fichier autre que jpg, comme .txt par exemple:
les infos rentrent dans la base
le fichier n'esp pas uploader dans le repertoire
et je n'ai pas le message "Veuillez sélectionner un fichier de type png, gif ou jpg"

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

26 avr. 2006, 19:47

bonne question :)
Et tu me remercies de l'avoir posé ? ;)
eh bien, un fichier autre que jpg, comme .txt par exemple:
les infos rentrent dans la base
C'est normal, comme dit plus haut, tu ne fais pas de test sur l'erreur avant de faire l'insert. Donc succès ou erreur, il insère toujours en base... faudrait peut être refaire un test sur $erreur hmm ? :)
le fichier n'esp pas uploader dans le repertoire
Bah ca c'est plutot une bonne chose vu que le type n'est pas bon :)
et je n'ai pas le message "Veuillez sélectionner un fichier de type png, gif ou jpg"
A quel moment dans ton code t'attends tu à voir apparaitre le message d'erreur ? et pourquoi selon toi n'apparait-il pas ? ;)

Eléphant du PHP | 297 Messages

26 avr. 2006, 19:59

:) comment faire un test sur l'erreur ?

lorsque je vois la partie haute du tuto sur l'upload:
 
if(isset($_FILES['photo'])) 
{ 
// params  unset($erreur); 
$extensions_ok = array('png', 'gif', 'jpg', 'jpeg'); 
$taille_max = 100000;   
$dest_dossier = '/home/damien/photos/'; 
// utilisez également des slashes sous windows : $dest_dossier  = 'd:/damien/photos/';   
// vérifications 
  if( !in_array( substr(strrchr($_FILES['photo']['name'], '.'), 1), $extensions_ok ) ) 
  { 
$erreur = 'Veuillez sélectionner un fichier de type png, gif ou jpg !'; 
    }  elseif( file_exists($_FILES['photo']['tmp_name']) 
           and filesize($_FILES['photo']['tmp_name']) > $taille_max) 
  {     
$erreur = 'Votre fichier doit faire moins de 500Ko !';  }   
// copie du fichier  if(!isset($erreur))  { 
et que je regarde la partie haute du miens, cette partie de code me semble un peu bordelique, j'ai l'impression d'avoir pas de trucs inutile...ou non ?
if(!empty($_FILES["photo"]["name"]))    {
$nomFichier    = $_FILES["photo"]["name"] ;  	//nom du fichier choisi:
$nomTemporaire = $_FILES["photo"]["tmp_name"] ;  	//nom temporaire sur le serveur:
$typeFichier   = $_FILES["photo"]["type"] ;   	//type du fichier choisi:
$poidsFichier  = $_FILES["photo"]["size"] ;   	//poids en octets du fichier choisit:
$codeErreur    = $_FILES["photo"]["error"] ;   	//code de l'erreur si jamais il y en a une:

unset($erreur);
$extensions_ok = array('png', 'gif', 'jpg', 'jpeg');
$taille_max = 100000;

//chemin qui mène au dossier qui va contenir les fichiers upload:
$chemin = "./images/" ;
pour repondre a ta question, oui c'est une bonne chose que le fichier ne soit pas uploadé s'il n repond pas au conditions, mais je souhaiterai un message disant que ce n'est pas possible de continuer la procedure (avant l'envoi sur la base) :?

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

27 avr. 2006, 11:43

Et tu fais quoi là si c'est pas un test sur l'erreur, pour savoir si tu dois déplacer le fichier ou pas ?! :)
//l'upload ! 
if (! isset($erreur)) { 
    move_uploaded_file($nomTemporaire, $chemin.$nomFichier); 
         } 
Si la variable $erreur n'est pas définie (! isset($erreur)), c'est que tu n'as pas eu d'erreur. Tu peux donc l'utiliser pour tester si tu dois faire ou non ton insert, et si tu dois afficher ou non un message d'erreur :) (message d'erreur qui en l'occurence est contenu dans cette variable)

Eléphant du PHP | 297 Messages

08 mai 2006, 03:15

Salut,
Merci pour les explications Ryle, mais plus ca va moins je comprends
les tests :?
le seul truc qui fonctionne bien dans mon code, c'est que les fichiers autres que ceux cités ne passent pas dans le repertoire nommé.
par contre les données rentrent dan la base et je n'ai pas de message d'erreur.
ben ca serait sympa si qlq pouvait regarder mon code et me dire concretement ce que je dois retoucher :(
merci
<?php
// je remonte la déclaration avant la récup du fichier 
$nomFichier = ""; // déclaration des variables 
$chemin = ""; 

//Script Upload
//on vérifies que le champ est bien rempli:
if(!empty($_FILES["photo"]["name"]))    {
$nomFichier    = $_FILES["photo"]["name"] ;  	//nom du fichier choisi:
$nomTemporaire = $_FILES["photo"]["tmp_name"] ;  	//nom temporaire sur le serveur:
$typeFichier   = $_FILES["photo"]["type"] ;   	//type du fichier choisi:
$poidsFichier  = $_FILES["photo"]["size"] ;   	//poids en octets du fichier choisit:
$codeErreur    = $_FILES["photo"]["error"] ;   	//code de l'erreur si jamais il y en a une:

unset($erreur);
$extensions_ok = array('png', 'gif', 'jpg', 'jpeg');
$taille_max = 100000;

//chemin qui mène au dossier qui va contenir les fichiers upload:
$chemin = "./images/" ;

 // vérifications
   if( !in_array( substr(strrchr($_FILES['photo']['name'], '.'), 1), $extensions_ok ) )
    {
$erreur = 'Veuillez sélectionner un fichier de type png, gif ou jpg !';
	}
	elseif( file_exists($_FILES['photo']['tmp_name'])
	and filesize($_FILES['photo']['tmp_name']) > $taille_max)
	{
$erreur = 'Votre fichier doit faire moins de 100Ko !';
	}

//l'upload ! 
if (! isset($erreur)) { 
$nomFichier = strtr($nomFichier,'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ','AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
    move_uploaded_file($nomTemporaire, $chemin.$nomFichier); 
         } 
	 }