logo Homepage
+  NewbieContest
|-+  Programmation» Langages Web» [PHP] formulaire d'upload
Username:
Password:
Pages: [1]
  Imprimer  
Auteur Fil de discussion: [PHP] formulaire d'upload  (Lu 6222 fois)
oake
Profil challenge

Classement : 11690/54283

Néophyte
*
Hors ligne Hors ligne
Messages: 2


Voir le profil
« le: 20 Juin 2006 à 12:49:56 »

Bonjour,
J'ai un formulaire d'upload sur plusieurs de mes sites, car je n'aime pas trop les services genre Imageshack ... Et je préfere rendre se service gratuit d'hébergement des images de mes visiteurs moi même...

Voici le code du formulaire que j'utilise:

Code:
<HTML><BODY><CENTER>

<?
// Taille max des fichiers (octets)
$MFS=1024;
// Répertoire de stockage
$rep="upload/";

if(isset($_FILES['userfile'])) {
if($_FILES['userfile']['size']>0) {
   $savefile= $rep.$_FILES['userfile']['name'];
   $temp = $_FILES['userfile']['tmp_name'];
   if (move_uploaded_file($temp, $savefile)) { ?>
      <b>Votre fichier a bien été enregistré !</b>
<BR>Nom : <?echo $_FILES['userfile']['name'];?>
<BR>Taille : <?echo $_FILES['userfile']['size'];?> o

<?   } else { ?>
      <b>Erreur d'enregistrement !</b>
   <? }

} else { ?>
   <b>Trop gros fichier !</b>
   <i>( <? echo $MFS;?> octets max.)</i>
<? }
} ?>
   
<FORM METHOD="POST"
      ENCTYPE="multipart/form-data">
   <INPUT TYPE=HIDDEN NAME=MAX_FILE_SIZE
      VALUE=<? echo $MFS;?>>
   <INPUT TYPE=FILE NAME="userfile"><BR>
   <INPUT TYPE=SUBMIT value="Enregistrer le fichier">
</FORM>

LISTE DES FICHIERS TELECHARGES
<BR><TABLE border>
<? $dir = opendir($rep);

while ($f = readdir($dir))
   if(is_file($rep.$f)) { ?>
      <TR>
         <TH>
            <A href="<? echo $rep.$f; ?>"
               target="_blank"><? echo $f; ?></A>
         </TH>
         <TD align=right><? echo filesize($rep.$f); ?></TD>
         <TD>
            <? echo date("d/m/Y H:i:s",filectime($rep.$f)); ?>
         </TD></TR>
   <? }

closedir($dir); ?>
</TABLE>

</CENTER></BODY></HTML>
Mais dans se formulaire, le problème c'est qu'il accepte tout les types de fichiers, pas que les images... L'insertion d'autres pages par exemple et je sais qu'un petit lamerz aurait vite fait "d'hacker" ce petit service gratuit que je propose volontier à mes visiteurs ...

j'ai vu qu'il y avait un post similaire sur ce forum,
Et j'ai peut-être trouvé ce qu'il me faut!
Code:
 $type_file = $_FILES['fichier']['type'];

    if( !strstr($type_file, 'jpg') && !strstr($type_file, 'jpeg') &&

!strstr($type_file, 'bmp') && !strstr($type_file, 'gif') )
    {
        exit("Le fichier n'est pas une image");
    }
mais je ne sais pas exactement où le placer dans mon fichier actuel,  j'ai essayé de la placer en dessous de cete ligne si par exemple, mais mes divers essais n'ont pas été fructueux..
Code:
<BR>Type : <?echo $_FILES['userfile']['type'];?>
Pouvez vous m'indiquer que faire pour que les seules fomats de fichiers acceptés soit jpg jpeg gif bmp
Désolé, je fais de mon mieux... Pour vous je vais peut-être passer pour le roi des boulets ou des imbéciles...Mais je débute dans le PHP...

EDIT:je pense qu'avec cette partie de code cela devrait marcher,
Je vous dit quoi
Code:
$allowed_mimetypes = array('image/gif', 'image/jpeg', 'image/pjpeg', 'image/x-png');
EDIT 2: Mon essais n'a pas marché pourtant je sens que je suis proche du but, peut être un problème venant de $allowed_mimetypes qui n'est pas pris en compte...Je suis perplexe, désolé si je note mon avancement pas à pas, mais sinon je n'y arriverai jamais et je vais tourner en rond..
EDIT3: Et bien finalement j'ai utilisé le code suivant
Code:
<html> 
    <head>
        <title>Upload d'une image sur le serveur !</title>
    </head>
    <body>
<?php 
if(!empty($_POST['posted'])) { 
    
// On vérifie si le champ est rempli 
    
if(!empty($_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'])) { 
                    
// Si upload OK alors on affiche le message de réussite 
                    
echo '<b>Image uploadée avec succès !</b>'
                    echo 
'<hr />'
                    echo 
'<b>Fichier :</b> '$_FILES['fichier']['name'], '<br />'
                    echo 
'<b>Taille :</b> '$_FILES['fichier']['size'], ' Octets<br />'
                    echo 
'<b>Largeur :</b> '$infos_img[0], ' px<br />'
                    echo 
'<b>Hauteur :</b> '$infos_img[1], ' px<br />'
                    echo 
'<hr />'
                    echo 
'<br /><br />'
                } else { 
                    
// Sinon on affiche une erreur système 
                    
echo '<b>Problème lors de l\'upload !</b><br /><br /><b>'$_FILES['fichier']['error'], '</b><br /><br />'
                } 
            } else { 
                
// Sinon on affiche une erreur pour les dimensions et taille de l'image 
                
echo '<b>Problème dans les dimensions ou taille de l\'image !</b><br /><br />'
            } 
        } else { 
            
// Sinon on affiche une erreur pour l'extension 
            
echo '<b>Votre image ne comporte pas l\'extension .jpg !</b><br /><br />'
        } 
    } else { 
        
// Sinon on affiche une erreur pour le champ vide 
        
echo '<b>Le champ du formulaire est vide !</b><br /><br />'
    } 

?>
       <form enctype="multipart/form-data" action="<?php echo $PHP_SELF?>" method="POST">
            <b>Envoyer le fichier :</b><br /><br />
            <input type="hidden" name="posted" value="1" />
            <input name="fichier" type="file" />
            <input type="submit" value="Uploader" />
        </form>
    </body

</CENTER></BODY></HTML>
Par contre je n'ai pas de liste de tout les fichiers uploader... je vais essayer de fusionner le nouveau et l'ancien script...
Je le ferais demain, deux nuits que je ne dors plus..

Cordialement oake, ^^ En esperant que vous me répondrez positivement ,
Journalisée
Shenryu

Profil challenge

Classement : 6846/54283

Membre Complet
***
Hors ligne Hors ligne
Messages: 104


Voir le profil
« #1 le: 30 Juillet 2006 à 14:29:28 »

Pour ma part, je fais un explode de la chaine de caractère avec comme élément séparateur le point "." Ca te permet de récupérer l'extension des fichiers et de mettre sous forme de tableau le nom du fichier puis son extension. Tu testes la longueur du tableau qui est normalement de 2 (nom
  • et ext [1]).
Ensuite, si l'extension appartient à celles que tu permets, tu permets l'upload du fichier. A noter que les majuscules et minuscules de l'extension doivent être traité.

Je sais pas si c'est la meilleure méthode mais ca fonctionne.
Journalisée

La dictature, c'est "ferme ta gueule". La démocratie, c'est "cause toujours".
                                                                                                     Coluche
pepekiss

Profil challenge

non classé(e).

Membre Junior
**
Hors ligne Hors ligne
Messages: 67


Voir le profil
« #2 le: 30 Juillet 2006 à 15:12:35 »

perso je dis que tu fasse comme ça :

$aut=array(".jpg",".gif",".bmp");

    if( !in_array(substr($name_file,-4), $aut) )
        exit();
    else
    [copie du fichier uploadé]

la solution de shenryu est pas bonne car si le "hacker" upload un fichier nommé "image.jpg.php" alors il sera considéré comme non dangereu . Choisir le type/mime n'est pas la bonne solution non plus
Journalisée
Romano

Profil challenge

Classement : 1890/54283

Néophyte
*
Hors ligne Hors ligne
Messages: 48


Voir le profil WWW
« #3 le: 30 Juillet 2006 à 15:48:15 »

C'est quoi l'url de ton site ?
Journalisée
pepekiss

Profil challenge

non classé(e).

Membre Junior
**
Hors ligne Hors ligne
Messages: 67


Voir le profil
« #4 le: 30 Juillet 2006 à 15:49:30 »

j'osais pas le demander
Journalisée
Gardel

Profil challenge

Classement : 670/54283

Membre Héroïque
*****
Hors ligne Hors ligne
Messages: 1012


Voir le profil
« #5 le: 30 Juillet 2006 à 18:32:39 »

mwahaha attention pepekiss c'est son dada de owned les sites persos
Journalisée

Selon le postulat que les filles, c'est du temps accordé et de l'argent dépensé : Filles = Temps . Argent
Et comme chacun le sait, "le temps c'est de l'argent", donc : Temps = Argent
Par conséquent : Filles = Argent . Argent
Et parce que, "l'argent est la racine du mal" : Argent = sqrt(Mal)
On en déduit que : Filles = sqrt(Mal).sqrt(Mal)
Force est de constater que : Filles = Mal
Romano

Profil challenge

Classement : 1890/54283

Néophyte
*
Hors ligne Hors ligne
Messages: 48


Voir le profil WWW
« #6 le: 30 Juillet 2006 à 18:48:50 »

N'importe quoi

Il veut juste visiter le site par simple curiosité, n'est-ce-pas ?
Journalisée
Gardel

Profil challenge

Classement : 670/54283

Membre Héroïque
*****
Hors ligne Hors ligne
Messages: 1012


Voir le profil
« #7 le: 30 Juillet 2006 à 18:53:36 »

oui oui oui



le dernière fois qu'il a visité le miens, j'ai dû....
Journalisée

Selon le postulat que les filles, c'est du temps accordé et de l'argent dépensé : Filles = Temps . Argent
Et comme chacun le sait, "le temps c'est de l'argent", donc : Temps = Argent
Par conséquent : Filles = Argent . Argent
Et parce que, "l'argent est la racine du mal" : Argent = sqrt(Mal)
On en déduit que : Filles = sqrt(Mal).sqrt(Mal)
Force est de constater que : Filles = Mal
pepekiss

Profil challenge

non classé(e).

Membre Junior
**
Hors ligne Hors ligne
Messages: 67


Voir le profil
« #8 le: 30 Juillet 2006 à 19:17:55 »

**No Sms** on t'as déja owned ton site gob ? ^^ =D=D
Journalisée
Gardel

Profil challenge

Classement : 670/54283

Membre Héroïque
*****
Hors ligne Hors ligne
Messages: 1012


Voir le profil
« #9 le: 30 Juillet 2006 à 19:29:43 »

non non non :D:D
Journalisée

Selon le postulat que les filles, c'est du temps accordé et de l'argent dépensé : Filles = Temps . Argent
Et comme chacun le sait, "le temps c'est de l'argent", donc : Temps = Argent
Par conséquent : Filles = Argent . Argent
Et parce que, "l'argent est la racine du mal" : Argent = sqrt(Mal)
On en déduit que : Filles = sqrt(Mal).sqrt(Mal)
Force est de constater que : Filles = Mal
Romano

Profil challenge

Classement : 1890/54283

Néophyte
*
Hors ligne Hors ligne
Messages: 48


Voir le profil WWW
« #10 le: 31 Juillet 2006 à 11:27:19 »

Et c'est quoi l'adresse de ton site Gob ?
Journalisée
Gardel

Profil challenge

Classement : 670/54283

Membre Héroïque
*****
Hors ligne Hors ligne
Messages: 1012


Voir le profil
« #11 le: 31 Juillet 2006 à 11:39:17 »

Il n'est plus
Journalisée

Selon le postulat que les filles, c'est du temps accordé et de l'argent dépensé : Filles = Temps . Argent
Et comme chacun le sait, "le temps c'est de l'argent", donc : Temps = Argent
Par conséquent : Filles = Argent . Argent
Et parce que, "l'argent est la racine du mal" : Argent = sqrt(Mal)
On en déduit que : Filles = sqrt(Mal).sqrt(Mal)
Force est de constater que : Filles = Mal
yakamoneyee

Profil challenge

Classement : 1645/54283

Membre Complet
***
Hors ligne Hors ligne
Messages: 130


Voir le profil WWW
« #12 le: 02 Août 2006 à 18:03:27 »

**No Sms** demande qui ça peut etre pepekiss ^^
Journalisée

Pages: [1]
  Imprimer  
 
Aller à: