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 !

ENFIN UN UPLOAD PHP


Information sur la source

Description

bah le code n'est pas de moi mais trouvais interessant de la mettre sur le site...
(code d'origine : http://www.php.net/manual/en/features.file-upload.php)
 

Source

  • => le fichier html (upload.html)
  • <form enctype="multipart/form-data" action="upload.php3" method="post">
  • <input type="text" name="MAX_FILE_SIZE" value="1000">
  • Send this file: <input name="userfile" type="file">
  • <input type="submit" value="Send File">
  • </form>
  • => le fichier php (upload.php3)
  • <?php
  • /* Userland test for uploaded file. */
  • function is_uploaded_file($filename) {
  • if (!$tmp_file = get_cfg_var('upload_tmp_dir')) {
  • $tmp_file = dirname(tempnam('', ''));
  • }
  • $tmp_file .= '/' . basename($filename);
  • /* User might have trailing slash in php.ini... */
  • return (ereg_replace('/+', '/', $tmp_file) == $filename);
  • }
  • if (is_uploaded_file($userfile)) {
  • copy($userfile, "/place/to/put/uploaded/file");
  • } else {
  • echo "Possible file upload attack: filename '$userfile'.";
  • }
  • ?>
        => le fichier html (upload.html)


<form enctype="multipart/form-data" action="upload.php3" method="post">
<input type="text" name="MAX_FILE_SIZE" value="1000">
Send this file: <input name="userfile" type="file">
<input type="submit" value="Send File">
</form>


       => le fichier php (upload.php3)

<?php
/* Userland test for uploaded file. */ 
function is_uploaded_file($filename) {
    if (!$tmp_file = get_cfg_var('upload_tmp_dir')) {
        $tmp_file = dirname(tempnam('', ''));
    }
    $tmp_file .= '/' . basename($filename);
    /* User might have trailing slash in php.ini... */
    return (ereg_replace('/+', '/', $tmp_file) == $filename);
}

if (is_uploaded_file($userfile)) {
    copy($userfile, "/place/to/put/uploaded/file");
} else {
    echo "Possible file upload attack: filename '$userfile'.";
}
?>

 

Conclusion

bon je l'ai tester sur mon serveur et il marche... il marche, tres vite d'ailleur................ MERDE il s'enfuit...
 

Commentaires et avis

signaler à un administrateur
Commentaire de RockmanX le 01/01/2002 12:25:54

Bon, voila,
J'ai passé 4 heures sur ce script mais g trouvé les condition pour qu'il marche:
1: pour utilise is_uploaded_file il faut avoir PHP 4, sinon faut renommer,
2: il faut ABSOLUMENT que le dossier cible soit en mod CHMOD 777 sinon il    permet pas l'accès...
3: il vaut ieux définir un nom pour le fichier : $file_name et définir $file_dir
    ainsi, on met tout connement, copy($fupload (=&gt; c le fichier du form),     $filedir/file_name
Je remercie au passage Onurb pour son aide et sa gentillesse

signaler à un administrateur
Commentaire de goliath2002 le 07/01/2003 09:32:36

RockmanX soit plus claire, je suis débutant

signaler à un administrateur
Commentaire de Mike le 14/01/2003 16:29:36

c pas securisé ts ça, si vous vous faite piraté avec ce script c normal !!!

signaler à un administrateur
Commentaire de guyrnaf le 28/08/2003 14:27:19

lu bon tout ça c tres bien mais j'ai pas compris
j'ai pleins de question
est ce que l'on peut choisir le repertoire cible grace a ton script ??
est ce que y a une config ( login /mdp )?
y a til une limite de taille pour les fichiers que l'on veut uploader?

signaler à un administrateur
Commentaire de AbriBus le 10/09/2003 21:39:12

Ben chez moi, ca marche po... :-(... il me met l'erreur "Fatal error: Cannot redeclare is_uploaded_file() in c:websitephpupload.php on line 13" puis apres la tentative d'upload erreur 404 avec en url http://monserveur/upload.php3... quelqu'un à une idée ?

signaler à un administrateur
Commentaire de mejon2 le 11/11/2003 13:58:27

Salut,
Chez moi ça marche pas aussi.
" Possible file upload attack: filename 'C:Program FilesEasyPHP mpphp36.tmp'. "
Voila, je vais voir si je trouve autre chose.

signaler à un administrateur
Commentaire de Do le 13/11/2003 22:55:30

marche pas ici non plus :(

signaler à un administrateur
Commentaire de Shadow_Source le 10/03/2004 17:31:32

Voilà, moi aussi g un pb !!
Faut renomer en php4 ? (g modif mon html et mis php4 + .php4 sur le ficher ex php3, marche pas, erreur 405 :().

Le rep est bien en chmod777 mais rien n'y fait !!

Sa marche toujours pas lol.

Es-ce que quelqu'un a une idée ?

Au fait, php4 c pas compatible php3 je suppose, et puis, tout les serv, de nos jours, sont-ils php4 ???

Merci de m'aider !!

signaler à un administrateur
Commentaire de romalafrite le 16/05/2004 17:57:30

NOTE IMPORTANTE : tu utilises la fonction copy qui ne fonctionne que sur serveur de base windows, sur serveur UNIX il te faudra utiliser la fonction move_uploaded_file avec tout ce qui va avec...

signaler à un administrateur
Commentaire de anix le 17/09/2004 11:18:09

Salut g pour vous un code meilleur ...
... voir www.miasmatik.net

signaler à un administrateur
Commentaire de aze555666 le 01/10/2004 20:58:39

voir aussi code.aspx?id=24147

signaler à un administrateur
Commentaire de anix le 03/10/2004 13:43:42

ça ne marche pas code.aspx?id=24147 comment l'utiliser SVP....

signaler à un administrateur
Commentaire de stanilou le 01/11/2004 10:28:41

anix anix, réfléchi ! http://www.phpcs.com/code.aspx?id=24147

signaler à un administrateur
Commentaire de kouki1000 le 13/01/2008 19:56:14

Moi, en erreur:

Fatal error: Cannot redeclare is_uploaded_file() in upload.php3 on line 3

signaler à un administrateur
Commentaire de zen69 le 04/02/2008 16:31:17

l'erreur suivante:

Fatal error: Cannot redeclare is_uploaded_file() in upload.php3 on line 3

signifie que la fonction is_uploaded_file() existe déjà.

il serait donc logique d'enlever cette partie de code

# function is_uploaded_file($filename) {
# if (!$tmp_file = get_cfg_var('upload_tmp_dir')) {
# $tmp_file = dirname(tempnam('', ''));
# }
# $tmp_file .= '/' . basename($filename);
# /* User might have trailing slash in php.ini... */
# return (ereg_replace('/+', '/', $tmp_file) == $filename);
# }

Cette fonction est built-in depuis la version 4.0.3 de php

signaler à un administrateur
Commentaire de zen69 le 04/02/2008 16:35:15

Cepandant si vous comptez utiliser ce code sur different servers il serait preferable de faire comme suit.

if (!function_exsists(is_uploaded_file))
{
  function is_uploaded_file($filename) {
    if (!$tmp_file = get_cfg_var('upload_tmp_dir')) {
      $tmp_file = dirname(tempnam('', ''));
    }
    $tmp_file .= '/' . basename($filename);
    /* User might have trailing slash in php.ini... */
    return (ereg_replace('/+', '/', $tmp_file) == $filename);
  }
)

signaler à un administrateur
Commentaire de Poussmaster le 29/02/2008 06:51:42

En réponse à Anix : l'objet upload n'est plus sur miasmatik.net mais sur miasmatech.net.

Ajouter un commentaire



Nos sponsors

Sondage...

CalendriCode

Octobre 2008
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, 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,593 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é.