Page 1 sur 1

Verifications format et poids lors d'un upload

Posté : 07 avr. 2006, 18:15
par Chile
Bonjour,
J'ai un script d'upload + sql, qui fonctionne tres bien (grace a vous).
Je voudrais inclure deux verif au passage. Une pour le format du fichier et l'autre pour le poids.
J'ai bricolé un deuxieme script d'upload grace au tutaux, qui fonctionne mais je n'arrive pas a l'adapter a mon premier script :?
j'ai dans ce script un groupe de variables au debut qui font reference aux verif de poids et format, mais comment les utiliser ?
car jusqu'a la elle ne servent a rien ?
merci pour vos infos
Voici mon premier script partie php :
<?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:
	
//chemin qui mène au dossier qui va contenir les fichiers upload:
$chemin = "./images/" ;
 
//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 bpays (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));
}
?>
et voici mon deuxieme script pour infos:
<?php
//DEFINITION DES VARIABLES 
//-------------------------------------- 


 if(isset($_FILES['photo']))
 {
   // params
   unset($erreur);
    $extensions_ok = array('png', 'gif', 'jpg', 'jpeg');
	$taille_max = 100000;
	$dest_dossier = './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 500Ko !'; 
   }  
  // copie du fichier
	if(!isset($erreur))
   { 
	$dest_fichier = basename($_FILES['photo']['name']);
  // formatage nom fichier
  // enlever les accents
	$dest_fichier = strtr($dest_fichier,
	'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 
	'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
  // remplacer les caracteres autres que lettres, chiffres et point par _
    $dest_fichier = preg_replace('/([^.a-z0-9]+)/i', '_', $dest_fichier); 

  // copie du fichier    
    move_uploaded_file($_FILES['photo']['tmp_name'], $dest_dossier . $dest_fichier);
    }
	}
	 ?>

Posté : 10 avr. 2006, 11:15
par zigz4g
Salut.

Pour la taille max, tu ne peux pas le faire avec le php.ini directement ?

upload_max_filesize integer
The maximum size of an uploaded file.
When an integer is used, the value is measured in bytes. You may also use shorthand notation as described in this FAQ.

Pour tes extensions, prevoit peut etre de gerer les differentes cases ('png', 'PnG', 'Png', etc...).