2010-04-04 3 views
0

Lorsque je télécharge un fichier en utilisant ce code, il met une copie du fichier dans le dossier "uploads" (ce que je veux) mais il met aussi une copie à la racine. Je veux seulement que les fichiers vont dans le dossier des téléchargements.Pourquoi mon code upload-of-a-file met-il 2 jeux de fichiers dans mon répertoire? (PHP)

define ('GW_UPLOADPATH', 'uploads/'); 
$upfile= GW_UPLOADPATH . $_FILES['userfile']['name']; 

if(is_uploaded_file($_FILES['userfile']['tmp_name'])) 
{ 
    if(!move_uploaded_file($_FILES['userfile']['tmp_name'], $upfile)) //this is saying if the file isn't moved to $upfile. 
    { 
     echo 'Problem: could not move file to destination directory'; 
     exit; 
    } 
} 
else 
{ 
    echo 'Problem: Possible file upload attack. Filename: '; //this could be an attack b/c it might be from localhost. 
    echo $_FILES['userfile']['name']; 
    exit; 
} 

echo 'File uploaded successfully<br><br>'; 
+0

Ce code ne devrait vraiment pas créer de fichiers en dehors du répertoire des téléchargements. Est-ce que votre chemin de téléchargement de PHP est réglé à la racine ou quelque chose de bizarre comme ça? –

+0

Pouvez-vous spécifier les répertoires dans lesquels le fichier est placé exactement? –

Répondre

2

Quel serait votre répertoire temporaire? Est-il possible que le fichier téléchargé atterrisse dans la racine mais PHP ne peut pas le supprimer? Comprendre cela nécessite beaucoup plus de connaissances sur votre configuration.

+0

Ahh oui c'était le problème. J'ai ajouté un @unlink ($ _ FILES ['userfile'] ['tmp_name']); et maintenant ça marche. Merci. – ggfan

+0

Je serais un peu inquiet du fait que votre répertoire temporaire soit la racine (n'importe quelle racine!) ... –

+0

Un attaquant pourrait exploiter cela en téléchargeant un fichier avec le même nom qu'un de vos fichiers 'réels' dans le répertoire racine . Il pourrait télécharger 'index.php' et votre fonction supprimerait votre page principale! –

Questions connexes