PETIT WEBFTP:UPLOAD DE FICHIERS PAR 20, MODIFICATION,SUPPRESSION, COPIE,DEPLACEM

Signaler
Messages postés
208
Date d'inscription
mardi 13 avril 2004
Statut
Membre
Dernière intervention
26 janvier 2009
-
Messages postés
208
Date d'inscription
mardi 13 avril 2004
Statut
Membre
Dernière intervention
26 janvier 2009
-
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/24147-petit-webftp-upload-de-fichiers-par-20-modification-suppression-copie-deplacement-renomage-des-fichiers-ajout-de-dossiers

Messages postés
208
Date d'inscription
mardi 13 avril 2004
Statut
Membre
Dernière intervention
26 janvier 2009

Bonjour.
Comme vous pouvez le voir, ce code commence à être un peu vieux, je l'ai fait à mes touts débuts en PHP (d'ailleurs, mon niveau n'a pas beaucoup monté depuis ... il faut que je m'y mette). On remarquera entres autres la magnifique indentation et la clarté du code (je ne me souviens plus de celui ci, mais je suis retombé il n'y a pas longtemps sur un vieux code, j'ai renoncé à le modifier tellement c'était illisible).

Je regarderais pendant les vacances (la semaine prochaine) si je peux le mettre à jour, et trouver d'où viennent les Warnings que tu rencontres.
Mais en attendant, je te conseille de faire une petite recherche sur le site, je sais qu'il existe au moins 2 sources similaires (une vielle avec moins de fonctionnalités, et une d'il y a au plus quelques mois, postée par une connaissance). Peut-être y trouvera tu ton bonheur :-)

@evenkil --> Je n'ai pas d'autres idées, je ne connais même pas le fonctionnement de tout ce qui commence par ereg (enfin là, je devine la fonction) , qui donne généralement lieu à de belles lignes barbares qui ne m'ont jamais donné envie d'essayer d'apprendre tout ça. De plus, le code est conçu pour fonctionner justement avec des .., puisque je l'avais rangé, à l'époque où je l'utilisais, dans un sous dossier dédié. Peut-être est-il possible de définir une liste de répertoires autorisés (en adressage absolu), et ensuite, à chaque eécution du code, vérifier si le répertoire courant (il doit y avoir une commande php pour en connaitre l'adresse absolue) est dans cette liste... en supposant qu'il y ait un répertoire courant, je ne sais plus comment j'avais programmé ça.
Messages postés
1
Date d'inscription
samedi 9 février 2008
Statut
Membre
Dernière intervention
9 février 2008

Slt a tous
je trouve le script super seulement g des petites erreur pour envoyer et creer un fichier ( hebergeur free je c po si sa vien de la ... )
enfin bref mon erreur c sa :
Warning: mkdir() [function.mkdir]: Unable to access /1 in /mnt/152/sdc/0/0/monadresse/up/actions.php on line 146

Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to access /exercice1.cpp in /mnt/152/sdc/0/0/monadresse/up/actions.php on line 216

(fichier cmod777 mais sa change rien ... )
si quelqun pouvait m'aider sa serait sympa car la je pige pas pourquoi sa me fait sa.
Messages postés
584
Date d'inscription
jeudi 28 décembre 2006
Statut
Membre
Dernière intervention
29 avril 2010
1
Le code a l'air pas si mal, je ne l'ai cependant pas testé.

Ceci étant dit, ils y a plusieurs améliorations possibles.

prenons ce bout de code par exemple:

print("
");
$i++;
print("
");
$i++;
print("
");
$i++;
print("
");
$i++;
print("
");
$i++;
print("
");
$i++;
print("
");
$i++;
print("
");
$i++;
print("
");
$i++;
print("
");
$i++;

il serait bien plus simple de faire quelque chose de ce genre.

for ($i=1; $i <= 20; $i++) {
print("
");
}

et dans ce code:
for($i=1;$i!=21;$i++)

je remplacerais le !=21 par <=20
mais ceci n'est qu'une question d'esthétique.
Messages postés
35
Date d'inscription
lundi 13 février 2006
Statut
Membre
Dernière intervention
15 avril 2014

Super ! merci beaucoup ca fonctionne parfaitement

Maintenant il ne me reste plus qu'a faire en sorte que personne ne puisse changer dans l'url la variable $dossier pour remonter dans les répertoires.
En cherchant, j'ai donc essayé de mettre en place une sécurité du genre
if( true == eregi('.', $dossier) ){ echo 'OK' ; } else { echo 'TENTATIVE DE PIRATAGE' ; exit; }
pour eviter les choses du type : index.php?dossier=..

mais le soucis c'est qu'il me retourne constament "OK" même si l'url ne contient pas de .

N'auriez vous pas une idée ?
Merci beaucoup pour tout
Messages postés
208
Date d'inscription
mardi 13 avril 2004
Statut
Membre
Dernière intervention
26 janvier 2009

C'est assez simple: il faut éditer le fichier index.php. Dedans, il y a une boucle while qui parcourt le dossier, et qui pour chaque fichier affiche le lien. Il suffit de mettre à l'intérieur de ce while un if:
while(...)
if($file!="." and $file!="..")
{
...
instructions qui sont déjà dans le while
...
} //fin du if
} //fin du while

Enregistre et essaie, ça devrait fonctionner. sauf peut-être erreur de synthaxe, je n'ai pas fait de php ces derniers temps.
Messages postés
35
Date d'inscription
lundi 13 février 2006
Statut
Membre
Dernière intervention
15 avril 2014

Excellent script très complet.
Cependant j'aimerai pouvoir supprimer les liens vers . et ..
Avez vous une idée ?
Merci beaucoup
Messages postés
208
Date d'inscription
mardi 13 avril 2004
Statut
Membre
Dernière intervention
26 janvier 2009

Pour protéger l'accès, il siffit de mettre un fichier htaccess dans le dossier. Un simple recherche google te permettra de savoir comment faire.
Sinon, tu peux faire des recherches sur phpcs et javascriptfr, il y a un nombre incroyable de sources de protection!
En attendant, le plus simple est
1)ne mettre aucun lien vers les pages de gestion sur le site lui même.
2)Mettre une balise meta indiquant à google (et aux autres) de ne jamais indexer les page.
3)Donner au dossier un nom qui ne veut rien dire, de sorte que personne ne puisse le trouver facilement, en supposant qu'il ait connaissance de l'existance de l'utiliaire de gestion sur ton site.
Messages postés
13
Date d'inscription
vendredi 12 mai 2006
Statut
Membre
Dernière intervention
16 décembre 2008

euh stp comment faire pour empêcher les autres personnes d'accéder à cette page?
Car en faisant une ptite recherche si qqn la trouve je suis mal!
Ne pourrait-on pas au moins protéger l'acces par un mot de passe?

Je trouve ça dangereux!

Sinon bravo ce code est super!!!
Messages postés
208
Date d'inscription
mardi 13 avril 2004
Statut
Membre
Dernière intervention
26 janvier 2009

Omegalex, je ne sais pas d'où ça vient. normalement il n'y a pas de problemes. Pour savoir dans quel dossier tu est, ce n'est pas dur, suis les explications que j'ai déjà données! (index?dossier=.. pour la racine du site, dossier=../nom pour le dossier nommé "nom". Tout simplement. Et quand tu cliques sur un dossier dans la liste de ce qui est dans un autre (un sous-dossier, donc), tu entres dedans. un fichier est créé dans le dossier courant).

BDGTA: des gens ont déjà eu ton probleme: ce n'en est pas un!!! Le script fait ce que tu lui dis de faire (voir plus haut les commentaires). Si il a créé un fichier dans C:, c'est que tu a accédé au dossier C:, et que tu as créé un fichier. Si le fichier est apparu tout seul, ce n'est pas mon script qui l'a fait! (regarde la source, tu verras que c'est impossible).
De plus, sur un serveur, le probleme est résolu: le script n'aura pas le droit d'accéder aux dossier plus haut que celui dédié à ton site. Chez toi, ça vient de ta config easy-php.
Peux-tu préciser ce que tu entends par dangereux???!!! (encore une fois, regardes la source!)
Messages postés
63
Date d'inscription
jeudi 2 janvier 2003
Statut
Membre
Dernière intervention
8 septembre 2008

moi ça a créé sur c:

c dangereux comme script !!!!
Messages postés
5
Date d'inscription
samedi 29 octobre 2005
Statut
Membre
Dernière intervention
31 octobre 2005

n'hésitez pas à me répondre par mail
Messages postés
5
Date d'inscription
samedi 29 octobre 2005
Statut
Membre
Dernière intervention
31 octobre 2005

J'ai installer les pages et images dans mon site dans un dossier gestion mais quand j'essaye de créer un nouveau fichier ca fait rien et puis je ne sais pas dans quel dossier je suis et puis ca ne veut pas envoyer les fichiers que jessaye de mettre
Messages postés
24
Date d'inscription
mercredi 26 février 2003
Statut
Membre
Dernière intervention
19 février 2008

Yep ba moi ça m'a bien dépanné trop bien ça a marché merci et pour les p'tits chipotages je regarderai peut-être plus tard mais en tout cas l'esentiel c'est que ça fonctionne !
Messages postés
70
Date d'inscription
vendredi 14 février 2003
Statut
Membre
Dernière intervention
20 mars 2007

faites attention aux extensions des fichiers que PHP doit exécuter, par défaut, c'est .php si vous avez des fichers en .php3, .php4....... ca peut ne pas marcher chez certains hébergeurs
Messages postés
208
Date d'inscription
mardi 13 avril 2004
Statut
Membre
Dernière intervention
26 janvier 2009

slt
si tu n'a pas le php, c'est possible qu'il te demande ça (surtout si tu as une version récente d'ie, avant, il afficahit simplement le code dans le navigareur).
pour que ça fonctionne, tu n'as pas 36 solution: trouve toi un hébergeur avec php. je connais www.kidiwi.com, sans pub,10Mo, mais je ne sais pas s'ils fonctionnent bien , j'en suis parti quand ils ont eu des pb avec des pirates. sinon, il y a lycos, mais il faut mettre un antipub, sinon c'est invivable.
Déja, tu peux tester les fonctionnalités de mon code en local, avec easyphp.
Messages postés
1
Date d'inscription
mercredi 23 février 2005
Statut
Membre
Dernière intervention
23 février 2005

Bonjour,
Il est surement tres efficace, mais j'ai l'impression qu'il ne marche pas sous Wanadoo car quand je veux accéder à mon ftp par http://hebergeur.com/vous/gestion/index.php?dossier=..
il me demande si je veux l'ouvrir ou l'enregistrer.
Donc voila.
En fait, je crois que le php n'est pas encore accepter par mon fai, par contre le java oui, je vais donc essayer avec.
Merci quand meme de vos réponses pour m'éclairer un peu plus.

@+

!=!ChRyS!=!
Messages postés
208
Date d'inscription
mardi 13 avril 2004
Statut
Membre
Dernière intervention
26 janvier 2009

réponse aux derniers commentaires:

floyd013, si tu ne touches pas du tout au php, comment as tu récupéré la partie necessaire à l'upload?
fais attention: ne rend pas le script complet accessible sur ton site, si un visiteur malintentionné vient, il pourrait te le détruire. sinon, merci pr les compliments.

grandvizir, c'est surement autre chose qui t'a créé ce dossier, mon code ne le fait pas tout seul (si tu regardes la source, tu le vera). où alors,c'est que tu lui a demandé. De même, il ne risque pas de te supprimer d'autres fichiers que ceux que tu lui demande de supprimer. De toute façon, il est surtout fait pour gérer un site web chez un heb gratuit, pas un pc.
Messages postés
1
Date d'inscription
mercredi 2 février 2005
Statut
Membre
Dernière intervention
2 février 2005

Je ne touche pas du tout en PHP et pourtant j'ai réussi à installer un section upload sur mon site grace à ce code. Merci à toi aze555666 je pouvais pas rêver plus simple :)


Floyd013
Messages postés
1237
Date d'inscription
samedi 8 novembre 2003
Statut
Membre
Dernière intervention
3 septembre 2006
14
J'ai testé sous Win98 et EasyPHP 1.7, et j'ai eu la "délicate" surprise de voir que ce code m'a créé un dossier dans c:\MonDossier\, alors que normalement, seul est autorisé un dossier de type c:\EasyPhp\www\MonDossier. Et dire en plus que ça supprime des fichiers ?? Eh bien, heureusement pour lui qu'il n'a pas été me delete mon autoexec.bat, car ...

Y'a un truc pas net.
Messages postés
61
Date d'inscription
lundi 15 décembre 2003
Statut
Membre
Dernière intervention
23 janvier 2009

Merci !!!
Messages postés
208
Date d'inscription
mardi 13 avril 2004
Statut
Membre
Dernière intervention
26 janvier 2009

merci du tuyau, mais, ne connaissant ni le dhtml, ni le java, je ne peux pas modifier la source. pouvez vous n'envoyer le code java et/ou dhtml à mail.net.kevin1@caramail.com ?
ps: le code étant prevu pour un serveur n'accptant pas le ftp, est-il possible que le javascript puisse envoyer les fichiers comme un vrai ftp?
Messages postés
70
Date d'inscription
vendredi 14 février 2003
Statut
Membre
Dernière intervention
20 mars 2007

allez, je vien poser mon petit grain de sel, meme si le script est bien :)

un petit truc pas tres important, mais qui me gêne, c'est le graphisme de la page : essayez de faire simple (noir, gris, blanc et pas du vert sur fond jaune ;) )

sinon, a part ca, il existe des script java qui permettent d'envoyer des fichiers sur des FTP en glissant simplement les fichiers à l'intérieur de l'applet.

je trouve aussi bizarre aussi le fait de mettre 20 à la suite, pourquoi ne pas proposer à l'utilisateur d'en rajouter autant qu'il en a besoin avec du dhtml :




Pour que l'utilisateur n'ait plus de limite de nombre de fichiers
Messages postés
208
Date d'inscription
mardi 13 avril 2004
Statut
Membre
Dernière intervention
26 janvier 2009

je n'ai pas mis de variable permettant de choisir le nombre de fichiers qu'on veut uploader, car il faudrait passer par une page intermediaire avec un petit formulaire, or je prefere avoir directement le formulaire permettanrt l'upload. par contre, je n'empeche personne de modifier le script pour permettre d'uploader plus de fichiers à la fois. j'ai choisi 20, car c'est un monbre qui correspond à la taille de mon site (qui contient au total 200 fichiers), et qui permet de ne pas attendre trop longtemps que les fichiers soient envoyés sur le serveur. :-))
Messages postés
2
Date d'inscription
samedi 31 juillet 2004
Statut
Membre
Dernière intervention
29 novembre 2004

Salut,

J'ai juste regarder le code source et cela parait pas mal du tous. Seulement d'après moi il faudrai tester un peut plus les retours de tes fonction pour gerer les erreures.

Autre chose pourquoi limiter ton upload a 20 fichier ? Met une variable avec une option, cela te permetra dans gerer autant que tu en as envie.

Bonne continuation
---
Aziloph
---
Messages postés
55
Date d'inscription
samedi 5 octobre 2002
Statut
Membre
Dernière intervention
26 mars 2010

A enfin une réponse au message que j'ai recu avec GRenard au sujet de "Projet P3" ID code n° 24131.
Messages postés
1662
Date d'inscription
lundi 16 septembre 2002
Statut
Membre
Dernière intervention
30 juillet 2008
1
Pourquoi utiliser une chose quand l'autre chose marche...
Alors pourquoi utiliser de voir toutes les erreurs quand LA ca marche déjà... C'est simple. C'est que c'est simplement pour de la bonne programmation.

Tu peux te dire la même chose avec une fonction par exemple qui compte le nombre de caractères dans une string... pourquoi l'utiliser elle plutot que strlen... Si tu utilises ta propre fonction tu risques de ralentir ton script car strlen est plus optimisée que la tienne...
Messages postés
4
Date d'inscription
mercredi 16 juin 2004
Statut
Membre
Dernière intervention
29 mars 2010

Code intéressant
J'ai juste une petite remarque à faire

La ligne 14 du fichier index.php pet être amélioré.
En effet, tu utilises l'instruction "strstr" qui retourne la fin fin d'une chaine à partir de la première occurence d'un carctère ou d'une chaine.
Donc, pour fichier s'appelant "image.032.gif", la fonction retourne ".032.gif".

Par contre la fonction "strrchr" qui a la même syntaxe retourne la fin de la chaine à partir de la dernière occurence. Donc, dans notre exemple, elle retourne ".gif".

Voilà, tu trouveras peut être que c'est du chipotage mais ca peut servir.
Bonne continuation
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
Salut !

c'est simple, si l'hébergeur où tu installes le script n'accepte pas les short tags, tu es bonbon...

a ++
Messages postés
208
Date d'inscription
mardi 13 avril 2004
Statut
Membre
Dernière intervention
26 janvier 2009

merci.
guizmoworld, c normal que tu doive taper directement index.php?dossier=.. , car le .. represente le dossier parent. pour aller + vite, tu peux taper directement l'adresse du dossier que tu veux voir dans l'attribut dossier de l'url.
euh, g pas precisé, mais n'oubliez pas de mettre une protection, pour pas que n'importe qui puisse administrer votre site.

GRenard, c simpa de me mettre des conseils, mais je ne compreends pas pourquoi tu veux que j'utilise register_globals. si je comprends bien l'explication, c pour pouvoir utiliser $_POST[' '] directement, ce que je fais deja. quant a la commande qui fait voir toutes les erreurs, à quoi bon, tant que le code fonctionne?
et la derniere remarque, le short_open_tag, ça sert à quoi d'ouvrir php avec <?php plutot qu'avec <? ?
Messages postés
26
Date d'inscription
lundi 19 avril 2004
Statut
Membre
Dernière intervention
7 juillet 2004

moi je fais les 2 dernier ...
<?php ?> ....
et pareil pour le post ;)
Messages postés
1662
Date d'inscription
lundi 16 septembre 2002
Statut
Membre
Dernière intervention
30 juillet 2008
1
Je rexplique encore...

error_reporting
http://ca3.php.net/error_reporting
Affiche toutes les erreurs même les notice (il faut bien programmer en utilisant isset())

register_globals
Utiliser $_POST['nom'] plutot que $nom directement

short_open_tag
ouvrir php avec <?php et non <?...
Messages postés
26
Date d'inscription
lundi 19 avril 2004
Statut
Membre
Dernière intervention
7 juillet 2004

GRenard toujour avec sont error_reporting = E_ALL ...
et moi qui sais toujour pas ce que sa veut dire !

quand a ton code aze555666
j'adore !
je sens que je vais l'adopter , le seul inconvegnant que j'y vois c'est
que je suis obliger de faire supprimer ce dossier pour avoir la liste des dossir a la racine de mon site ...
a moin de taper directement http://hebergeur.com/vous/gestion/index.php?dossier=..
...
enfin sinon , tres bon code !( enfin , nivo resultats chuis pas aller voir les lignes de codes pace que je n'en suis pas capable ! )

bonne continuation
Messages postés
1662
Date d'inscription
lundi 16 septembre 2002
Statut
Membre
Dernière intervention
30 juillet 2008
1
Utilises ca :
short_open_tag = Off
register_globals = Off
error_reporting = E_ALL

C'est pour mieux programmer !
Messages postés
208
Date d'inscription
mardi 13 avril 2004
Statut
Membre
Dernière intervention
26 janvier 2009

j'attend vos commentaires.dites moi si il y a un bug, ou un si vous pensez à une fonctionnalité que j'ai oublié. je mettrais à jour le code dans la mesure du possible.
au fait, je suis encore débutant en php, ne soyez pas trop durs...