DepanneTonPC, dépannage et aide informatique

Bienvenue : Connexion | Inscription
La date/heure actuelle est 19 Avr 2024 à 23:12 FAQ | Rechercher | Membres | Groupes

Script d'upload PHP


 
 
Ce que nous vous conseillons :
  1. Lisez les réponses ci-dessous où vous trouverez des conseils et de l'aide de la part des autres utilisateurs
  2. Avant de faire des modifications sur votre système ou d'installer des logiciels, nous vous recommandons fortement de cliquer ici pour scanner Windows afin de détecter les erreurs de registre.
Poster un nouveau sujet   Répondre au sujet    DepanneTonPC Index du Forum -> Programmation et Graphisme
Voir le sujet précédent :: Voir le sujet suivant  
Auteur Message
AddiKT1ve
Invité





MessagePosté le: 25 Mai 2006 à 12:50    Sujet du message: Script d'upload PHP Répondre en citant

Hell low Smile

Bon, je ne suis pas une bête en PHP, mais je me débrouille comme je peux, et pour réaliser ce script d'upload, je suis aller chercher un peu partout, pour finalement arriver à un résultat convenable : je peux uploader des fichiers. ^^

Problème : je veux que les fichiers soient automatiquement renommés (ajout de deux chiffres et deux lettres à la fin du nom du fichier) après l'envoi, de façon à ce qu'une personne malveillante ne puisse pas uploader ses images (et souvent peu recommandables :-° ) à la place de celles des membres.

J'avais trouvé une solution, les encrypter en md5, mais les noms deviennent imcompréhensibles... donc si quelqu'un a une meilleure solution... ^^

Voici mon script :

Code:

<?php

// Et hop! On définit les variables.

$target = "upload/"; // Repertoire cible
$extension = "png"; // Extension du fichier sans le .
$max_size = 100000000; // Taille max en octets du fichier
$width_max = 1000000; // Largeur max de l'image en pixels
$height_max = 10000000;    // Hauteur max de l'image en pixels

$nom_file = $_FILES['fichier']['name'];
$taille = $_FILES['fichier']['size'];
$tmp = $_FILES['fichier']['tmp_name'];

// Uploadons, uploadons... Ze Script !

if($_POST['posted'])
{

// On vérifie si le champ est rempli

if($_FILES['fichier']['name'])
{
// On vérifie l'extension du fichier

  if(substr($nom_file,-3) == $extension)
  {
   // On récupère les dimensions du fichier

    $infos_img = getimagesize($_FILES['fichier']['tmp_name']);
     
   // On vérifie les dimensions et taille de l'image

    if(($infos_img[0] <= $width_max) && ($infos_img[1] <= $height_max) && ($_FILES['fichier']['size'] <= $max_size))
    {
     // Si c'est OK, on teste l'upload

      if(move_uploaded_file($_FILES['fichier']['tmp_name'],$target.$_FILES
['fichier']['name']))
      {

       // Yeah guy, u win! :p

        echo '<p style="text-align: center;">';
        echo '<span style="font-family: Verdana; font-size: 13; color: #FF0000;">';
        echo '<strong>Image uploadée avec succès !</strong>';
        echo '</span>';
        echo '<br /><br />';
        echo '<strong>___________________________________</strong>';
        echo '<br /><br />';
        echo '<strong>Fichier :</strong> '.$_FILES['fichier']['name'].'</br>';
        echo '<br />';
        echo '<strong>Taille :</strong> '.$_FILES['fichier']['size'].' Octets</br>';
        echo '<br />';
        echo '<strong>Largeur :</strong> '.$infos_img[0].' px</br>';
        echo '<br />';
        echo '<strong>Hauteur :</strong> '.$infos_img[1].' px</br>';
        echo '<br /><br />';
        echo '<strong>___________________________________</strong>';
        echo '<br /><br />';
      }
       else
      {

       // Sinon on affiche une erreur fatale

        echo '<p style="text-align: center;">';
        echo '<span style="font-family: Verdana; font-size: 13; color: #FF0000;">';
        echo '<strong>Problème lors de l\'upload !</strong><br /><br /><strong>'.$_FILES['fichier']['error'].'</strong>';
        echo '</span><br /><br />';
      }
    }
     else
    {

     // Sinon on affiche une erreur pour les dimensions et taille de l'image

      echo '<p style="text-align: center;">';
      echo '<span style="font-family: Verdana; font-size: 13; color: #FF0000;">';
      echo '<strong>Problème dans les dimensions ou taille de l\'image !</strong>';
      echo '</span><br /><br />';
    }
  }
   else
  {

   // Sinon on affiche une erreur pour l'extension

    echo '<p style="text-align: center;">';
    echo '<span style="font-family: Verdana; font-size: 13; color: #FF0000;">';
    echo '<strong>Votre image ne comporte pas l\'extension .PNG !</strong>';
    echo '</span><br /><br />';
  }
}
else
{

// Sinon on affiche une erreur pour le champ vide (faut vraiment être niais)

  echo '<p style="text-align: center;">';
  echo '<span style="font-family: Verdana; font-size: 13; color: #FF0000;">';
  echo '<strong>Le champ du formulaire est vide !</strong>';
  echo '</span><br /><br />';
}
}
?>
<form enctype="multipart/form-data" action="<?php echo $PHP_SELF; ?>" method="POST">
<span style="font-family: Verdana; font-size: 13; color: #000000;">
<strong>Envoyer le fichier :</strong>
</span>
<br /><br />
<input type="hidden" name="posted" value="1">
<input name="fichier" type="file">
<input type="submit" value="Uploader">
</form>



Merci d'avance de votre aide... Bonne journée ! Smile 
 
Revenir en haut de page
vin-moi
Administrateur


Inscrit le: 28 Aoû 2004
Messages: 6897
Localisation: France

MessagePosté le: 30 Mai 2006 à 12:10    Sujet du message: Répondre en citant

Salut,

Tu peux utiliser MD5 comme ca :

Citation:
$var = substr(md5(uniqid (rand())), 0, 4);


De cette facon, un chiffre aléatoire sera crypté en MD5, et la fonction substr te permet de prendre un nombre défini de caractères Smile
_________________
Smile
 
 
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web de l'utilisateur
AddiKT1ve
Invité





MessagePosté le: 30 Mai 2006 à 13:11    Sujet du message: Répondre en citant

C'est exactement ce que je voulais faire, merci beaucoup Wink  
Revenir en haut de page
AddiKT1ve
Invité





MessagePosté le: 31 Mai 2006 à 13:08    Sujet du message: Répondre en citant

Code:
<?php

// Et hop! On définit les variables.

$target = "upload/"; // Repertoire cible
$fichier_accepte = array('png','jpg','jpeg','gif','xcf','psd'); // Extension du fichier sans le .
$extention = FALSE; // On la definit à false, si elle change c'est que le fichier a une extention reconnue
$max_size = 800000; // Taille max en octets du fichier
$width_max = 1024; // Largeur max de l'image en pixels
$height_max = 768; // Hauteur max de l'image en pixels

$nom_file = $_FILES['fichier']['name'];
$taille = $_FILES['fichier']['size'];
$tmp = $_FILES['fichier']['tmp_name'];

// Uploadons, uploadons... Ze Script !

if($_POST['posted'])
{

// On vérifie si le champ est rempli

if($_FILES['fichier']['name'])
{
// On vérifie l'extension du fichier
  foreach($fichier_accepte AS $valeur)
  {
        if(strpos($_FILES['fichier']['type'], $valeur) !== FALSE)
        {
        $extention = '.'.$valeur;
        }
  }
  //Si $extention n'est pas égale à false c'est qu'il comporte une extention autorisée
  if($extension !== FALSE)
  {
   // On récupère les dimensions du fichier

    $infos_img = getimagesize($_FILES['fichier']['tmp_name']);
     
   // On vérifie les dimensions et taille de l'image

    if(($infos_img[0] <= $width_max) && ($infos_img[1] <= $height_max) && ($_FILES['fichier']['size'] <= $max_size))
    {
     // Si c'est OK, on teste l'upload
          $nom_fichier = md5(microtime()).$extention;
      if(move_uploaded_file($_FILES['fichier']['tmp_name'],$target.$nom_fichier))
      {

       // Yeah guy, u win! :p

        echo '<p style="text-align: center;">';
        echo '<span style="font-family: Verdana; font-size: 13; color: #FF0000;">';
        echo '<strong>Image uploadée avec succès !</strong>';
        echo '</span>';
        echo '<br /><br />';
        echo '<strong>___________________________________</strong>';
        echo '<br /><br />';
        echo '<strong>Fichier :</strong> <a href="http://www.graff1k.org/upload/'.$nom_fichier.'">'.$nom_fichier.'</a></br>';
        echo '<br />';
        echo '<strong>Taille :</strong> '.$_FILES['fichier']['size'].' Octets</br>';
        echo '<br />';
        echo '<strong>Largeur :</strong> '.$infos_img[0].' px</br>';
        echo '<br />';
        echo '<strong>Hauteur :</strong> '.$infos_img[1].' px</br>';
        echo '<br /><br />';
        echo '<strong>___________________________________</strong>';
        echo '<br /><br />';
      }
       else
      {

       // Sinon on affiche une erreur fatale

        echo '<p style="text-align: center; font-family: Verdana; font-size: 13; color: #FF0000;">';
        echo '<strong>Problème lors de l\'upload !</strong><br /><br /><strong>'.$_FILES['fichier']['error'].'</strong>';
        echo '<br /><br />';
      }
    }
     else
    {

     // Sinon on affiche une erreur pour les dimensions et taille de l'image

      echo '<p style="text-align: center; font-family: Verdana; font-size: 13; color: #FF0000;">';
      echo '<strong>Problème dans les dimensions ou taille de l\'image !</strong>';
      echo '<br /><br />';
    }
  }
   else
  {

   // Sinon on affiche une erreur pour l'extension

    echo '<p style="text-align: center; font-family: Verdana; font-size: 13; color: #FF0000;">';
    echo '<strong>Votre image ne comporte pas l\'extension .PNG !</strong>';
    echo '<br /><br />';
  }
}
else
{

// Sinon on affiche une erreur pour le champ vide (faut vraiment être niais)

  echo '<p style="text-align: center; font-family: Verdana; font-size: 13; color: #FF0000;">';
  echo '<strong>Le champ du formulaire est vide !</strong>';
  echo '<br /><br />';
}
}
?>



Maintenant, je vais essayer d'utiliser le md5 comme tu me l'as indiqué Smile 
 
Revenir en haut de page
vin-moi
Administrateur


Inscrit le: 28 Aoû 2004
Messages: 6897
Localisation: France

MessagePosté le: 31 Mai 2006 à 18:30    Sujet du message: Répondre en citant

Bon courage Wink
_________________
Smile
 
 
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web de l'utilisateur
Ajouter à : Scoopeo del.icio.us Digg this Technorati fuzz
Montrer les messages depuis:   
Poster un nouveau sujet   Répondre au sujet    DepanneTonPC Index du Forum -> Programmation et Graphisme Toutes les heures sont au format GMT + 2 Heures
 
Page 1 sur 1 

 
Sauter vers:  

Vous ne pouvez pas poster de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas voter dans les sondages de ce forum