Page 1 sur 1

Upload image avec un nouveau script

Posté : 20 nov. 2008, 17:49
par DarkSulfura
Bonjour,

Il y a très longtemps sur ce forum j'avais demandé qu'ont m'aide au sujet d'un script upload pour crypté les fichiers en md5 mais depuis ce temps j'ai changé de script mais je n'arrive pas à intégrer le code du md5 dans mon script.

Code md5 :
name_file = md5(time));
ou
name_file = md5(unqid));

et voici mon script :
<?php
// adresse de votre site internet (ex: http://www.monsite.org) et le dossier upload
$adresse	=	'http://127.0.0.1';
$upd		=	'/upload/';
// fonction qui recupere l'extension du fichier
function getExtension($filename){
  $ext = substr(strtolower(strrchr(basename($filename), ".")), 1);
  return $ext;
}
// fonction qui va sécurisé le nom du fichier
function clean_file_name($var){
  $var = strtr($var,"ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËéèêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ","AAAAAAaaaaaaOOOOOOooooooEEEEeeeeCcIIIIiiiiUUUUuuuuyNn");
  $var = eregi_replace("[^a-zA-Z0-9.-]","",$var);
  return $var;
}


if($_POST['upload'])
{
  // configuration : 
  
  // repertoire où vont être placé les fichiers
   $content_dir = $_SERVER['DOCUMENT_ROOT'].'/upload/';
  // ajouter ici les autres extensions que vous autorisé
  $extensions=array('jpg','jpeg','gif','png','mp3');

  // est ce qu'un fichier a ete selectionné ?
  if(empty($_FILES['fichier']['name'])){
    exit("Aucun fichier s&eacute;lectionn&eacute;.");
  }
  
  // on test si le fichier est uploadé
  $tmp_file = $_FILES['fichier']['tmp_name'];
  if( !is_uploaded_file($tmp_file) ){
    exit("Le fichier est introuvable");
  }
  
  // renommons le fichier pour plus de sécurité
  $name_file = clean_file_name($_FILES['fichier']['name']);
   
  // on test les caracteres non valide
  if(preg_match('#[/?*;]#', $name_file)){
    exit("Caract&egrave;res invalides d&eacute;tect&eacute;");
  }
  
  // est ce que l'extension est valide ?
  if(!in_array(getExtension($name_file),$extensions)) {
    exit("Le format de votre fichier n'est pas autoris&eacute;.");
  }

  // upload
  if(!move_uploaded_file($tmp_file,$content_dir.$name_file)){
    exit("Impossible de copier le fichier !");
  }else{
    echo "Le fichier a bien &eacute;t&eacute; upload&eacute;";
  }
  
}
?>
Donc merci de votre aide ;)

Posté : 22 nov. 2008, 15:22
par Ryle
Je vois pas bien l'intérêt de chiffrer le nom d'un fichier à coup de md5, mais bon passons.. Le nom du fichier, c'est toi qui le donne au moment du move_upload_file(), sous forme d'une chaine.

Tu peux donc bien lui donner ce que tu veux comme nom, et je vois pas bien où est ton problème, outre le fait que "time" et "uniqid" ne sont pas des constantes, mais des fonctions (time() & uniqid()) et que uniqid prend un I de plus que ce que tu as écrit ;)

Après, faut pas non plus l'utiliser sur le nom du fichier avant de tester son extension, parce que forcément, une fois le nom chiffré, l'extension va être plus difficile à reconnaitre :)