Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : upload de fichier - interdire l'up de php. [ Divers / Divers ] (pipouz)

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";
    }


1 2

Cette discussion est classé 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 Upload fichier pdf [ par christuckers ] Bon ba ca m'enerve de vous poser une question, mais après avoir chercher sur Google et sur ce site, je n'ai pas trouvé la réponse que j'attendais...Je Type de fichier [ par couf ] Bonjour Les copains,  Jai une questiion s'il vous plait soyez indulgent avec moi,je débute juste en PHP. Voilà je dois uploader un type de fichier pas renommer un fichier uploader [ par winnie39 ] Bonjour à tous,voila, j' ai récupérer un script pour uploader un fichier, et celui marche parfaitement et j' ai mêm compris son fonctionnement (pour m j'ai un bug dans mon script upload HELP!!! [ par ptiloup73 ] Voila j'ai fais un forumulaire d'upload avec un check de l'extention mais bon .. je ne comprends pas pourquoi il plante.. je débute en php donc je pen Basename & upload [ par sabou94 ] Bonjour,j'ai un probleme avec un upload de fichier : mon move_uploaded_file ne marche pas, il me renvoie false!Je crois que le probleme vient du basen Prob variables! [ par croftman ] Bonjour!J'ai mis en place un formulaire pour up 4 photos au max, et je voulais faire en sorte que ma variable $camera devienne $camera1, puis $camera2 incrementation en php [ par kyript ] bonjour en faite dans mon formulaire, on peut upload un fichier mais le pb j'aimerai genere un code qui s'increment a chaque upload de fichier


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



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
Temps d'éxécution de la page : 0,749 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.