begin process at 2012 05 27 21:42:56
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Fichier / Disque

 > MA GESTION DE L'UPLOAD

MA GESTION DE L'UPLOAD


 Information sur la source

Note :
8,75 / 10 - par 4 personnes
8,75 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Fichier / Disque Niveau :Débutant Date de création :10/03/2003 Date de mise à jour :10/03/2003 16:47:29 Vu :5 432

Auteur : phpeasy

Ecrire un message privé
Site perso
Commentaire sur cette source (9)
Ajouter un commentaire et/ou une note

 Description

Voila comment je gère l'upload sur mon site et ma fois ca marche pas mal.
PS : j'ai bien sur changer les tests de sécurité !!

Source

  • la page HTML :
  • <form action="traitement.php" method="post" enctype="multipart/form-data" name="fichier">
  • <input name="MAX_FILE_SIZE" type="hidden" value="20000">
  • // la taille est ici limitée à 20000 caractères
  • <input type="file" name="file">
  • <input type="submit" name="Submit" value="Envoyer">
  • </form>
  • le traitement :
  • <?
  • if (isset ($file) && $HTTP_POST_FILES["file"]["error"]==0 && $HTTP_POST_VARS['MAX_FILE_SIZE']>=$HTTP_POST_FILES["file"]["size"])
  • // les vérifications d'usage (la variable existe, pas d'erreur et la taille est correcte )
  • {
  • $nom=$HTTP_POST_FILES["file"]["name"];
  • // récupération du nom du fichier
  • $point=strrpos($nom,"."); // on recherche le dernier point dans le nom du fichier
  • if (!$point) $ext=""; else $ext=strtolower(substr($nom,$point));
  • // pour récuperer l'extension du fichier
  • if (($ext==".zip") || ($ext==".sql" )) // pour l'exemple je ne garde que ces 2 extensions valides
  • {
  • // pour la sécurité on choisit un nouveau nom de fichier ici on ajoute 1,2.. et une extension
  • $nombre=1;
  • $repertoire_upload="uploadphp/";
  • $nouveau_nom=$repertoire_upload.$nom.$nombre.$ext.".ttt";// encore pour la secu, j'ajoute un .ttt comme seconde extension
  • while (file_exists($nouveau_nom))
  • {
  • $nombre++; // on incremente le nombre tant que le nom du fichier existe
  • $nouveau_nom=$repertoire_upload.$nom.$nombre.$ext.".ttt";
  • }// fin while
  • if (@move_uploaded_file($file,$nouveau_nom)) echo "Téléchargement réussi"; else echo " Echec du transfert";
  • // le point crucial qui tranfert le fichier temporaire en fichier permanent avec @ devant pour éviter un warning PHP en cas d'échec
  • }// fin if ext
  • else
  • {
  • $erreur="le type de fichier est invalide ( seulement .sql et .zip ).";
  • echo $erreur;
  • }// fin else ext
  • }// fin du premier if
  • else echo "Vérifier le formulaire d'envoi de fichier ( la taille du fichier est limité à ". $HTTP_POST_VARS['MAX_FILE_SIZE']." )";
  • ?>
la page HTML : 
<form action="traitement.php" method="post" enctype="multipart/form-data" name="fichier">
<input name="MAX_FILE_SIZE" type="hidden" value="20000"> 
// la taille est ici limitée à 20000 caractères
<input type="file" name="file">
<input type="submit" name="Submit" value="Envoyer">
</form>

le traitement :
<?
if (isset ($file) && $HTTP_POST_FILES["file"]["error"]==0 && $HTTP_POST_VARS['MAX_FILE_SIZE']>=$HTTP_POST_FILES["file"]["size"])
// les vérifications d'usage (la variable existe, pas d'erreur et la taille est correcte )
{
$nom=$HTTP_POST_FILES["file"]["name"]; 
// récupération du nom du fichier
$point=strrpos($nom,"."); // on recherche le dernier point dans le nom du fichier
if (!$point) $ext=""; else $ext=strtolower(substr($nom,$point));
// pour récuperer l'extension du fichier
if (($ext==".zip") || ($ext==".sql" )) // pour l'exemple je ne garde que ces 2 extensions valides
{
// pour la sécurité on choisit un nouveau nom de fichier ici on ajoute 1,2.. et une extension
$nombre=1;
$repertoire_upload="uploadphp/";
$nouveau_nom=$repertoire_upload.$nom.$nombre.$ext.".ttt";// encore pour la secu, j'ajoute un .ttt comme seconde extension
while (file_exists($nouveau_nom))
{
$nombre++; // on incremente le nombre tant que le nom du fichier existe
$nouveau_nom=$repertoire_upload.$nom.$nombre.$ext.".ttt";
}// fin while
if (@move_uploaded_file($file,$nouveau_nom)) echo "Téléchargement réussi"; else echo " Echec du transfert";
// le point crucial qui tranfert le fichier temporaire en fichier permanent avec @ devant pour éviter un warning PHP en cas d'échec
}// fin if ext
else 
{
$erreur="le type de fichier est invalide ( seulement .sql et .zip ).";
echo $erreur;
}// fin else ext
}// fin du premier if
else echo "Vérifier le formulaire d'envoi de fichier ( la taille du fichier est limité à ". $HTTP_POST_VARS['MAX_FILE_SIZE']." )";
?>

 Conclusion

J'espère avoir été assez clair, sinon un petit tour sur http://www.php-easy.com pour les questions et les remarques. merci


 Sources du même auteur

UN TRACEUR DE COURBES ( MINI,MINI)
FONCTION RECURSIVE POUR FACTORIELLE($N)
DÉCOMPOSITION EN NOMBRE PREMIER

 Sources de la même categorie

SUPPRESSION AUTOMATIQUE DES FICHIERS RAW ORPHELINS APRÈS UN ... par malokaff
UPLOADER DES FICHIER DANSUN DOSSIER, SÉCURISÉ AVEC MOT DE PA... par raizzo
COMPTEUR DE VISITES SUR FICHIER par pierreSabatier
FONCTION RECURSIVE DE DOSSIERS par tefa24600
Source avec Zip CONVERSION DES UNITÉS INFORMATIQUE (O, KIO, MIO, GIO, TIO...... par genetApt151

Commentaires et avis

Commentaire de McPeter le 11/03/2003 15:04:50

pas mal :)

sinon tu peux faire plus simple pour voir le dernier "." et récupérer l'extention du fichier

$point=strrpos($nom,"."); // on recherche le dernier point dans le nom du fichier
if (!$point) $ext=""; else $ext=strtolower(substr($nom,$point));

à la place

$ext=strrchr($nom,".")

et là pas besoin de faire encore une vérif ..
la fonction "strrchr", te retournera la chaine à partir du dernier point (".")

@++

Commentaire de phpeasy le 11/03/2003 17:36:49

merci, on découvre des fonctions tous les jours !!

Commentaire de cas le 22/03/2003 18:15:59

tu aurais pas la même chose avec mysql? En fait, j'ai un problème pour récupérer les .jpg.

Commentaire de McPeter le 23/03/2003 06:55:04

kel genre de blem ?

Commentaire de pyroflo le 13/06/2003 19:23:28

Commentaire de GuilleW le 25/09/2003 21:45:55

Salut , bien le script ...

j'ai fait une modif pouir avoir plusieur champs avec le meme code ...
sa donne sa :

--------------------------------------- // -------------------------------------
                                index.php

&lt;form action="traitement.php" method="post" enctype="multipart/form-data" name="file"&gt;
&lt;input name="MAX_FILE_SIZE" type="hidden" value="1000000"&gt;
// la taille est ici limitée à 1 Mo :
&lt;?php
$a=10;
for ($i=1;$i&lt;=$a;$i++){
echo "&lt;br&gt;&lt;input type=file name=file$i size=40&gt;";}
?&gt;
&lt;input type="submit" name="Submit" value="Envoyer"&gt;
&lt;/form&gt;

--------------------------------------- // -------------------------------------
                                traitement.php

&lt;?
$a=10;
for ($i=1;$i&lt;=$a;$i++){      // la boucle pour avoir les bonnes variable



if (isset ($file$i) && $HTTP_POST_FILES["file$i"]["error"]==0 && $_POST['MAX_FILE_SIZE']&gt;=$HTTP_POST_FILES["file$i"]["size"])
{
$nom=$HTTP_POST_FILES["file$i"]["name"];

...
}

seulement voila ... pour la variable : isset ($fichier$i)
je sais pas comment faire pour que sa marche. la variable

$HTTP_POST_FILES["file$i"]["name"];  fonctionne meme tout le reste mais la variable 'if (isset ($file)' et 'if (@move_uploaded_file($file,$nouveau_nom)) '
Sa ne marche pas ... si quelqu'un trouve la reponse ... on pourrai ameliorer ce script :)
Merci d'avance .

Commentaire de SkyCrasher le 16/11/2003 20:37:54

Moi g plus court car c'est en une seule page mais je tiens à préciser que ce n'est pas moi qu'il a fait :
&lt;html&gt;
&lt;head&gt;
  &lt;title&gt;Upload de fichiers&lt;/title&gt;
&lt;/head&gt;
&lt;body bgcolor="#00196B" text="#FFD911"&gt;
&lt;center&gt;
  &lt;?
/*-------------------------------------------------------------
VARIABLE(S) A MODIFIER
--------------------------------------------------------------*/

// Chemin du répertoire de destination, exemples pour :
// windows : $destination="C:\windows\temp";
// unix : $destination="/usr/WWW/tmp";

//$destination="Upload";
$destination="Upload/$from";

// Taille maximale autorisée en octets
$taille=1000000;


/*-------------------------------------------------------------
CAS : ENREGISTREMENT DU FICHIER SUR LE SERVEUR
--------------------------------------------------------------*/

switch($action) {

case "add";
if ($userfile_size!=0) {$taille_ko=$userfile_size/1024;} else {$taille_ko=0;}
if ($userfile=="none") {$message="&lt;h2&gt;&lt;font face=arial&gt;Mets un nom de fichier !&lt;/font&gt;&lt;/h2&gt;";}
if ($userfile_size&gt;$taille)
{
if($taille!=0)
{
$taille_max_ko=$taille/1024;
}
$message="&lt;h2&gt;&lt;font face=arial&gt;Désolé !Mais ($taille_max_ko ko max) c'est un peu gros !&lt;/font&gt;&lt;/h2&gt;";
}
if ($userfile!="none" && $userfile_size&lt;$taille && $userfile_size!=0)
{
$userfile=stripslashes($userfile); // pour windows
if (!copy($userfile, "$destination/$userfile_name"))
{
         $message="&lt;br&gt;Erreur le fichier $userfile_name n'a pas été stocké sur le compte $from !&lt;br&gt;";
         }
       else
{
$message="&lt;h2&gt;&lt;font face=arial&gt;Bravo le fichier $userfile_name a été stocké sur le compte de $from !&lt;br&gt;A l'URL suivante :&lt;br&gt;http://antoyoda.free.fr/Upload/$from/$userfile_name&lt;/font&gt;&lt;/h2&gt;";
}
}
printf("$message");
break;

/*-------------------------------------------------------------
CAS : AFFICHAGE DU FORMULAIRE
--------------------------------------------------------------*/
default;
echo "&lt;h2&gt;&lt;font face=arial&gt;Upload de fichiers&lt;/font&gt;&lt;/h2&gt;";
echo "

&lt;FORM ENCTYPE="multipart/form-data" ACTION="index.php" METHOD="post"&gt;
&lt;table&gt;
&lt;tr&gt;
&lt;td&gt;Compte :&lt;/td&gt;
&lt;td&gt;&lt;select name="from" type="text"&gt;&lt;option value="SKYH@CKER"&gt;SKYH@CKER&lt;/option&gt;&lt;option value="GOD TEX"&gt;GOD TEX&lt;/option&gt;&lt;option value="MAXI3000"&gt;MAXI3000&lt;/option&gt;&lt;option value="PHPMAN"&gt;PHPMAN&lt;/option&gt;&lt;option value="KP85"&gt;KP85&lt;/option&gt;&lt;option value="TOUS"&gt;TOUS&lt;/option&gt;&lt;/select&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;input type="hidden" name="action" value="add"&gt;
&lt;INPUT TYPE="hidden" name="MAX_FILE_SIZE" value="10000000"&gt;
&lt;tr&gt;
&lt;td&gt;Fichier :&lt;/td&gt;
&lt;td&gt;&lt;INPUT NAME="userfile" TYPE="file" size="20"&gt;&lt;br&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;input type="submit" value="Envoyer"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/FORM&gt;";
break;
}
?&gt;




&lt;/body&gt;
&lt;/html&gt;

Commentaire de nico606 le 07/04/2004 18:52:46

TA source est trop bien elle marche très bien sur free

Commentaire de gina_78 le 07/09/2004 12:01:09

j'arrive pas à fixer ce probleme, j'ai tjrs ce message
Vérifier le formulaire d'envoi de fichier ( la taille du fichier est limité à 20000 )
meme si la taille du doc est plus petite que ça

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,406 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales