Page 1 sur 1

Upload: crypter le nom

Posté : 04 mars 2008, 03:57
par DarkSulfura
Bonjour,

Je me suis lancer dans l'upload de fichier/image sur mon site et tout fonctionne mais lors que le fichier est uploadé il garde le nom du fichier :s j'ai fais pas mal de recherche mais j'ai rien vu ou trouvé.

Voici mon code php:
<?php

if( isset($_POST['upload']) ) // si formulaire soumis
{
    $content_dir = 'files_uploads/'; // dossier où sera déplacé le fichier

    $tmp_file = $_FILES['fichier']['tmp_name'];

    if( !is_uploaded_file($tmp_file) )
    {
        exit("Le fichier est introuvable");
    }

    // on vérifie maintenant l'extension
    $type_file = $_FILES['fichier']['type'];

    if( !strstr($type_file, 'jpg') && !strstr($type_file, 'jpeg') && !strstr($type_file, 'png') && !strstr($type_file, 'bmp') && !strstr($type_file, 'gif') )
    {
        exit("Le fichier n'est pas une image");
    }

    // on copie le fichier dans le dossier de destination
    $name_file = $_FILES['fichier']['name'];

    if( !move_uploaded_file($tmp_file, $content_dir . $name_file) )
    {
        exit("Impossible de copier le fichier dans $content_dir");
    }

    echo "Le fichier a bien été uploadé";
}

?>
Ensuite on voit le lien grâce à ce code:
<?php
// variables
$site = 'http://darksulfura.monespace.net/';
$file = 'files_uploads/';
?>
<a href="<?php echo $site.''.$file.''.$name_file; ?>"><?php echo $site.''.$file.''.$name_file; ?></a>
Est ceci affiche ça : http://darksulfura.monespace.net/files_ ... images.jpg
et je souhaite ça: http://darksulfura.monespace.net/fils_u ... ejçrf1.jpg

Le nom du fichier change avec des lettres aléatoire, ceci pour pas cofondre avec d'autre fichier si une personne upload un fichier nommé programme.zip et que l'autre upload avec le meme nom alors que c'est pas le même fichier il va avoir un conflit.

Donc j'espere que vous pouvez ainsi m'aider. :)

Posté : 04 mars 2008, 04:19
par Elie
$name_file = md5(time());

... Tu auras jamais un nom pareil :)

Posté : 04 mars 2008, 06:09
par DarkSulfura
:lol:
Mais ce code que tu m'as donné, je l'insére où ?
Ou je le remplace par quelle ligne ?

EDIT: Non c'est bon, j'ai trouvé tout seul =) Merci à toi Elie

Posté : 04 mars 2008, 06:10
par Elie
// on copie le fichier dans le dossier de destination
$name_file = $_FILES['fichier']['name'];

Tu remplaces :)

Posté : 04 mars 2008, 15:01
par AB
$name_file = md5(time());

... Tu auras jamais un nom pareil :)
Sauf si cette fonction est utilisée simultanément dans la même seconde. Bon peut-être je chipote mais ça peut arriver.
Pour diminuer les risques ont peut utiliser microtime().
Et pour diminuer encore un peu plus les risques : microtime() concaténé à l'adresse ip