Accueil > Forum > > > > upload de fichier - interdire l'up de php.
upload de fichier - interdire l'up de php.
mercredi 16 mai 2007 à 22:00:24 |
upload de fichier - interdire l'up de php.

pipouz
|
bonjour a tous
voila , jai un petit formulaire d'envoi de fichiers sur mon server
apache , mais je voudrais pouvoir empecher l'upload de fichier PHP,
comment proceder svp??
je suis pas un as du code , jai trouver sa , peut etre pourraije m'en servir >
[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");
}
[/code]
-----------
voici mon formulair d'upload>
[code]
<input type="file" name="fichier" / size="55"> <input type="submit" value="envoyer" /> </font></p> </td> </tr> <tr> <td width="689" bgcolor="#111010" bordercolordark="#CCCCCC" bordercolorlight="#CCCCCC"> <p align="center"><u><strong><font face="Lucida Sans Unicode" color="#999999">Status :</font></strong></u><font face="Lucida Sans Unicode"><br> </font><font face="Lucida Sans Unicode" color="#111010"> <?php if ($_FILES['fichier']['name'] != '') { $destination = "- Fichiers envoyes sur le server -/".$_FILES['fichier']['name']; if (is_uploaded_file($_FILES['fichier']['tmp_name'])) { $upload = move_uploaded_file($_FILES['fichier']['tmp_name'], $destination) or die("impossible de déplacer le fichier"); } echo '<font color="#C0C08C"><strong>>> Fichier envoyé sur le serveur avec Succès. <<<br>>> Voici le lien vers votre fichier >><br>>> </strong></font><font color="#C0C08C"> http://HORNYmusicSERVER.myftp.biz/server/'; echo str_replace(' ','%20',$destination); echo '</font>'; } ?> [/code]
|
|
jeudi 17 mai 2007 à 08:55:37 |
Re : upload de fichier - interdire l'up de php.

neigedhiver
|
Salut,
Bon ton code est tellemet fouilli que je ne regarde pas en détails.
Pour empêcher d'uploader un fichier .php, il suffit de vérifier son extension lors de l'upload et de ne pas copier le fichier uploadé dans le répertoire d'upload.
Le test doit se faire juste avant l'utilisation de move_uploaded_file
|
|
jeudi 17 mai 2007 à 12:10:51 |
Re : upload de fichier - interdire l'up de php.

coucou747
|
Salut, faut aussi penser a bloquer toutes les failles d'includes car si t'arrives a inclure dans une page php, un .txt qui contient du code, il sera execute In a dream, I saw me, drop dead... U was there, U cried... It was just a dream, if I die, U won't cry, maybe, U'll be happy Mon site (articles sur la programmation et programmes)
|
|
vendredi 18 mai 2007 à 03:29:48 |
Re : upload de fichier - interdire l'up de php.

pipouz
|
je patauge a mort les meks, je vous reposte mon code en propre
voici mon formulair d'upload>
[code]
<input type="file" name="fichier" / size="55"> <input type="submit" value="envoyer" />
<?php if ($_FILES['fichier']['name'] != '') { $destination = "- Fichiers envoyes sur le server -/".$_FILES['fichier']['name'];
if (is_uploaded_file($_FILES['fichier']['tmp_name'])) { $upload = move_uploaded_file($_FILES['fichier']['tmp_name'], $destination) or die("impossible de déplacer le fichier"); }
echo
'
http://monsite.com/'; echo str_replace(' ','%20',$destination); // permet dafficher le lien du fichier uploadé. }
?>
[/code]
merci davance pour votre aide , je suis sur ke c'est juste 2 ptites lignes mais je ne trouves pas la commande... si quelqu'un peut m'aider dans le futur pour utiliser cette commande , sa serait top , je veux dire , au niveau de la syntaxe du kode
merci a vous
|
|
vendredi 18 mai 2007 à 09:26:37 |
Re : upload de fichier - interdire l'up de php.

neigedhiver
|
Salut,
T'as pas du chercher beaucoup, parce que la question "comment récupérer l'extension d'un fichier" a sûrement déjà été posée, elle est abordée dans une source récente, et on trouve des centaines de codes pour faire ça en prenant un peu de temps sur Google.
Ce que je te disais, c'est de vérifier l'extension, et si c'est .php annuler l'upload (supprimer le fichier temporaire).
Coucou747 attirait également ton attention sur le fait que tu dois faire attention à ce que tu fais du fichier uploadé.
Maintenant, si on doit t'écrire ton code, autant que tu nous fasses tout de suite une offre en Euros (je prends aussi les Francs Suisses)
Je suis certain qu'il existe déjà des sources (même sur phpCS) permettant d'uploader certains types de fichiers et pas d'autres. Va faire un tour par là, tu pourras certainement t'inspirer de ce qui a déjà été fait (tu peux même réutiliser une source, elles sont là pour ça).
Bonne continuation.
|
|
dimanche 20 mai 2007 à 23:53:17 |
Re : upload de fichier - interdire l'up de php.

darkduck
|
Dans ma grande bonté, je te file la fonction que j'ai créée Comme tu peux le voir il suffit de configurer la liste (array) des extensions autorisées
function upload($champ_files, &$nom_fichier_transfere, $repertoire_destination, &$message, $extensions_autorisees_array=array('pdf','jpg','jpeg','gif','png'), $taille_max_fichier=2000000, $chmod=755) { /*Fonction qui transfère un fichier sur le serveur. Retourne true si le transfert s'est déroulé correctement, false sinon.
Liste des paramètres : - $champ_files : $_FILES['nom_du_champ'] - $nom_fichier_transfere (donnée-resultat) : Nom que l'on veut donner au fichier transféré (modifié automatiquement si un fichier porte déjà le même nom) - $repertoire_destination : Chemin relatif du répertoire dans lequel on veut transférer le fichier - $message (donnée-resultat) : Message généré par lors du transfert - $extensions_autorisees : Tableau contenant la liste des extensions des fichiers autorisées - $taille_max_fichier : Taille maximale (en octets) autorisée pour le fichier à transférer (Aide : 1Ko = 1000 octets; 1Mo = 1000000 octets) - $chmod : Chmod du fichier transféré*/
/*Initialisations*/ $upload_reussi = false; $message = ''; $extension = $str_formats_autorises = '';
/*On vérifie que $nom_fichier_transfere et $repertoire_destination ne soient pas vides*/ if ($nom_fichier_transfere == '' OR $repertoire_destination == '') $message = 'Erreur : Vous devez préciser un nom à donner au fichier à transférer ainsi qu\'un répertoire de destination';
/*On vérifie que la taille du fichier à transférer n'est pas trop importante*/ elseif ($champ_files["size"] > $taille_max_fichier) //Si la taille de la fic est supérieure à la taille max { $taille_max_autorisee = $taille_max_fichier / 1000;
$message = 'Erreur : La taille du fichier que vous voulez transférer est trop grande.<br />'.br(). 'Taille maximale autorisée : '.$taille_max_autorisee.' Ko'; }
else //Aucune erreur pour le moment { /*On supprime les accents et caractèers spéciaux*/ $nom_fichier_transfere = clearStr($nom_fichier_transfere);
/*On récupère l'extension du fichier envoyé*/ $extension_fichier = substr(strchr($champ_files["name"],'.'),1);
/*On récupère la liste des formats autorisés et on vérifie si l'extension du fichier est autorisée*/ $extension_autorisee = false; //Initialisation
foreach ($extensions_autorisees_array as $extension) { $str_formats_autorises .= $extension.', ';
/*On vérifie si l'extension du fichier est autorisée*/ if (!$extension_autorisee AND $extension_fichier == $extension) $extension_autorisee = true; }
/*Suppression de la ,(virgule) à la fin de $str_formats_aurorises*/ $str_formats_autorises = implode(', ', $extensions_autorisees_array);
if (!$extension_autorisee) //Si le format du fichier n'est pas valide { $message = 'Erreur : Le fichier que vous voulez transférer ne porte pas une extension autorisée.<br />'.br(). 'Extension du fichier que vous voulez transférer : '.$extension_fichier.'<br />'.br(). 'Extenstions autorisées : '.$str_formats_autorises;
} else //Format valide { /*Si le fichier existe on le renomme de la forme nomDuFichier(X).extension*/
/*Initialisations*/ $i = 0; $extension = '.'.$extension_fichier; $nom_fichier_transfere = str_replace($extension,'',$nom_fichier_transfere);
/*On renomme le fichier tant qu'un fichier porant le même nom existe*/ while (file_exists($repertoire_destination.$nom_fichier_transfere.$extension)) { /*Suppression de l'éventuel (X) existant*/ $nom_fichier_transfere = str_replace('('.$i.')','',$nom_fichier_transfere);
/*On incrémente le compteur*/ $i++;
/*Ajout de (X)*/ $nom_fichier_transfere = str_replace($nom_fichier_transfere,$nom_fichier_transfere.'('.$i.')',$nom_fichier_transfere); }
/*Nom de destination final*/ $nom_fichier_transfere = $nom_fichier_transfere.$extension;
if (is_uploaded_file($champ_files["tmp_name"])) //Si le fichier a été uploadé correctement { /*On renomme le fichier avec le nom du fichier envoyé (nom éventuellement maj)*/ if (!rename($champ_files["tmp_name"], $repertoire_destination.$nom_fichier_transfere)) { $message .= "Envoi du fichier impossible"; } else //Transfert réussi { /*On modifie les chmod du fichier*/ chmod ($repertoire_destination.$nom_fichier_transfere,'0'.$chmod);
$upload_reussi = true; //Transfert réusssi
$message = "Le fichier a correctement été transféré !"; } } } } return $upload_reussi; }
|
|
dimanche 20 mai 2007 à 23:56:00 |
Re : upload de fichier - interdire l'up de php.

darkduck
|
Avec ces deux autres fonctions :
/*Fonction qui supprime tous les caractères spéciaux et met éventuellement tout en minuscule*/ function clearStr($str, $strToLower=true) { $str = strtr($str,"ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ","AAAAAAaaaaaaOOOOOOooooooEEEEeeeeCcIIIIiiiiUUUUuuuuyNn"); $str = ereg_replace('[^a-zA-Z0-9_.]','-',$str); if ($strToLower === true) $str = strtolower($str); return $str; }
/*Fonction qui renvoit le code permettant de faire un saut à la ligne dans un document*/ function br() { return chr(10).chr(13); }
|
|
mercredi 23 mai 2007 à 00:04:54 |
Re : upload de fichier - interdire l'up de php.

pipouz
|
jte remerci pour ton aide mek!!! ;)
parc ontr je suis trop un blaireau.... et jarrives pas a m'en servir , c'est la prmiere fois que je mattaque au php (ou presque), et du kou je n esait pas commentulisez cette fonction dans mon code que j'ai laissé plus haut....
merci encore
|
|
mercredi 23 mai 2007 à 00:25:33 |
Re : upload de fichier - interdire l'up de php.

darkduck
|
Salut,
Je veux pas jouer le rabas-joie mais le plus simple et le plus rapide est d'apprendre les rudimens du langage PHP. Il y a plusieurs sites qui proposent de bons tutoriaux.
Je sais que c'est saoulant mais c'est la meilleure méthode pour apprendre "rapidement"
Bon courage
|
|
mercredi 23 mai 2007 à 07:24:29 |
Re : upload de fichier - interdire l'up de php.

pipouz
|
Réponse acceptée !
merci , mais j'ai trouvé sa et sa le fait
if (eregi(".php", $destination)) { $destination .= ".rtf"; } if (eregi(".txt", $destination)) { $destination .= ".rtf"; }
|
|
Cette discussion est classée dans : fichier, code, file, upload, type
Répondre à ce message
Sujets en rapport avec ce message
Upload d'image ==> Problème :s [ par robapt ]
Bonjour à tous!J'ai un petit problème pour uploader un fichier (une image) ! Enfin c'est plutôt que je ne vois pas comment il faut faire ! En fait, le
upload ? [ par robapt ]
Bonjours!Comment pourrai-ton uploader un fichier et en même temps mettre un petit commentaire?En gros moi je veux que le visiteur upload une image et
Problème d'upload d'image [ par akiedispowa ]
J'ai testé un script d'upload d'image que j'ai trouvé sur le web, mais je vais cracker ... J'ai deux images .jpg, l'une peut s'uploader et l'autre imp
Uploader une image ... SVP c'est urgent [ par khalilo2y ]
salut tout le monde... j'utilise easyphp 1.6 et je voulais uloader des images dans le dossier 'avatars' voila le code code [code=html] [/code] [code=
Insérer un fichier situé sur un poste client [ par bruno9173 ]
Bonjour, J'ai une erreur au moment de l'upload d'un fichier, j'ai retourné le code dans tous les sens, j'ai contrôlé les droits sur le répertoire upl
fonction file_exists qui ne fonctionne pas [ par sly456328971 ]
Bonjour, dans un fichier php 'fichier1.php' j'ai une variable $var qui contient [code=php]$var= '/var/www/dossier/coco.txt[/code]. A l'aide d'un inc
upload + creation zip [ par youvalcsharpp ]
Bonjour, jai un formulaire : [code=html] [/code] Et dans le
Problème Upload de fichiers ET enregistrement dans la base de données [ par nemo89 ]
Bonsoir tout le monde ! J'ai un gros problème, Je souhaite enregistrer dans ma base de données informations sur un document (fichier) et l'uploader d
Récupération d'un nom de fichier dans PHP pour faire lien dans Javascript ?? [ par SOFT60 ]
Bonjour à tous, (Débutant en prog Php et Js) j'utilise le script de cette page pour envoyer vers le ftp, et incrémenter au passage le nom de mes fichi
Xml et Firefox 5.0 [ par djbabou ]
Bonjour, Juste une petite question : sur mon site internet, j'ai une animation flash appelant un xml. Jusqu'à aujourd'hui, je n'ai eu aucun souci, to
Livres en rapport
|
Derniers Blogs
SESSION SILVERLIGHT 5 3D : SLIDES ET DEMOSSESSION SILVERLIGHT 5 3D : SLIDES ET DEMOS par Groc
Durant les techdays, j'ai eu le plaisir d'animer une session sur Silverlight 5 et la 3D avec Simon Ferquel. Comme promis, voici nos slides et mes démos (celles avec le viper BSG) ici et là. Pour mémoire, les démos utilisent toutes le viper BSG...
Cliquez pour lire la suite de l'article par Groc [TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES[TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES par gpommier
Suite à la session que j'ai présenté sur WebMatrix 2, vous pouvez trouver les slides ici, ainsi que les démos en packages nuget : démos1 et démos2 J'en profite pour remercier chaleureusement tous ceux qui sont venus très nombreux à cette sess...
Cliquez pour lire la suite de l'article par gpommier [SHAREPOINT] LES SESSIONS TECHDAYS 2012.[SHAREPOINT] LES SESSIONS TECHDAYS 2012. par Patrick Guimonet
Voici donc pour ceux qui n'ont pas pu venir, ou ceux qui n'ont pas pu toutes les suivre la liste des sessions SharePoint aux TechDays 2012, que je mettrais à jour dès que les liens des vidéo seront disponibles. Ou ici : http...
Cliquez pour lire la suite de l'article par Patrick Guimonet TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3 par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE !MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE ! par Vko
Hier durant une session dédiée aux Techdays 2012, j'ai eu le plaisir d'annoncer la sortie de la Béta 2 de Mishra Reader. C'est quoi ? Pour les utilisateurs, c'est une vraie expérience de lecture de flux RSS sur Windows. Rien à voir avec les produit...
Cliquez pour lire la suite de l'article par Vko
Forum
RE : SONDAGE..RE : SONDAGE.. par phpAnonyme
Cliquez pour lire la suite par phpAnonyme RE : SONDAGE..RE : SONDAGE.. par TychoBrahe
Cliquez pour lire la suite par TychoBrahe
Logiciels
Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning
|