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

aze555666 Messages postés 208 Date d'inscription mardi 13 avril 2004 Statut Membre Dernière intervention 26 janvier 2009 - 30 juin 2004 à 14:08
aze555666 Messages postés 208 Date d'inscription mardi 13 avril 2004 Statut Membre Dernière intervention 26 janvier 2009 - 11 févr. 2008 à 20:08
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

aze555666 Messages postés 208 Date d'inscription mardi 13 avril 2004 Statut Membre Dernière intervention 26 janvier 2009
11 févr. 2008 à 20:08
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.
Baxstore Messages postés 1 Date d'inscription samedi 9 février 2008 Statut Membre Dernière intervention 9 février 2008
9 févr. 2008 à 13:47
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.
zen69 Messages postés 584 Date d'inscription jeudi 28 décembre 2006 Statut Membre Dernière intervention 29 avril 2010 1
4 févr. 2008 à 16:59
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.
evenkil Messages postés 35 Date d'inscription lundi 13 février 2006 Statut Membre Dernière intervention 15 avril 2014
19 sept. 2007 à 23:24
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
aze555666 Messages postés 208 Date d'inscription mardi 13 avril 2004 Statut Membre Dernière intervention 26 janvier 2009
19 sept. 2007 à 11:06
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.
evenkil Messages postés 35 Date d'inscription lundi 13 février 2006 Statut Membre Dernière intervention 15 avril 2014
18 sept. 2007 à 22:23
Excellent script très complet.
Cependant j'aimerai pouvoir supprimer les liens vers . et ..
Avez vous une idée ?
Merci beaucoup
aze555666 Messages postés 208 Date d'inscription mardi 13 avril 2004 Statut Membre Dernière intervention 26 janvier 2009
15 juil. 2006 à 20:21
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.
jooraX Messages postés 13 Date d'inscription vendredi 12 mai 2006 Statut Membre Dernière intervention 16 décembre 2008
15 juil. 2006 à 16:19
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!!!
aze555666 Messages postés 208 Date d'inscription mardi 13 avril 2004 Statut Membre Dernière intervention 26 janvier 2009
4 avril 2006 à 20:18
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!)
bdgta Messages postés 63 Date d'inscription jeudi 2 janvier 2003 Statut Membre Dernière intervention 8 septembre 2008
4 avril 2006 à 14:27
moi ça a créé sur c:

c dangereux comme script !!!!
Omegalex Messages postés 5 Date d'inscription samedi 29 octobre 2005 Statut Membre Dernière intervention 31 octobre 2005
19 nov. 2005 à 13:24
n'hésitez pas à me répondre par mail
Omegalex Messages postés 5 Date d'inscription samedi 29 octobre 2005 Statut Membre Dernière intervention 31 octobre 2005
19 nov. 2005 à 13:13
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
Utilisateur anonyme
4 nov. 2005 à 14:50
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 !
gergalp Messages postés 70 Date d'inscription vendredi 14 février 2003 Statut Membre Dernière intervention 20 mars 2007
26 févr. 2005 à 13:38
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
aze555666 Messages postés 208 Date d'inscription mardi 13 avril 2004 Statut Membre Dernière intervention 26 janvier 2009
25 févr. 2005 à 17:12
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.
Chrys7 Messages postés 1 Date d'inscription mercredi 23 février 2005 Statut Membre Dernière intervention 23 février 2005
23 févr. 2005 à 13:36
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!=!
aze555666 Messages postés 208 Date d'inscription mardi 13 avril 2004 Statut Membre Dernière intervention 26 janvier 2009
21 févr. 2005 à 20:51
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.
floyd013 Messages postés 1 Date d'inscription mercredi 2 février 2005 Statut Membre Dernière intervention 2 février 2005
2 févr. 2005 à 02:57
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
cs_grandvizir Messages postés 1106 Date d'inscription samedi 8 novembre 2003 Statut Membre Dernière intervention 3 septembre 2006 22
19 janv. 2005 à 18:03
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.
hpotter Messages postés 61 Date d'inscription lundi 15 décembre 2003 Statut Membre Dernière intervention 23 janvier 2009
23 déc. 2004 à 09:45
Merci !!!
aze555666 Messages postés 208 Date d'inscription mardi 13 avril 2004 Statut Membre Dernière intervention 26 janvier 2009
29 août 2004 à 17:51
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?
gergalp Messages postés 70 Date d'inscription vendredi 14 février 2003 Statut Membre Dernière intervention 20 mars 2007
24 août 2004 à 23:03
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
aze555666 Messages postés 208 Date d'inscription mardi 13 avril 2004 Statut Membre Dernière intervention 26 janvier 2009
22 août 2004 à 20:40
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. :-))
AZILOPH Messages postés 2 Date d'inscription samedi 31 juillet 2004 Statut Membre Dernière intervention 29 novembre 2004
31 juil. 2004 à 17:32
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
---
Toutoul Messages postés 55 Date d'inscription samedi 5 octobre 2002 Statut Membre Dernière intervention 26 mars 2010
2 juil. 2004 à 09:53
A enfin une réponse au message que j'ai recu avec GRenard au sujet de "Projet P3" ID code n° 24131.
cs_GRenard Messages postés 1662 Date d'inscription lundi 16 septembre 2002 Statut Membre Dernière intervention 30 juillet 2008 1
1 juil. 2004 à 18:50
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...
fronton Messages postés 4 Date d'inscription mercredi 16 juin 2004 Statut Membre Dernière intervention 29 mars 2010
1 juil. 2004 à 15:19
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
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
1 juil. 2004 à 13:12
Salut !

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

a ++
aze555666 Messages postés 208 Date d'inscription mardi 13 avril 2004 Statut Membre Dernière intervention 26 janvier 2009
1 juil. 2004 à 12:44
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 <? ?
guizmoworld Messages postés 26 Date d'inscription lundi 19 avril 2004 Statut Membre Dernière intervention 7 juillet 2004
1 juil. 2004 à 12:44
moi je fais les 2 dernier ...
<?php ?> ....
et pareil pour le post ;)
cs_GRenard Messages postés 1662 Date d'inscription lundi 16 septembre 2002 Statut Membre Dernière intervention 30 juillet 2008 1
1 juil. 2004 à 08:54
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 <?...
guizmoworld Messages postés 26 Date d'inscription lundi 19 avril 2004 Statut Membre Dernière intervention 7 juillet 2004
1 juil. 2004 à 02:09
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
cs_GRenard Messages postés 1662 Date d'inscription lundi 16 septembre 2002 Statut Membre Dernière intervention 30 juillet 2008 1
30 juin 2004 à 21:05
Utilises ca :
short_open_tag = Off
register_globals = Off
error_reporting = E_ALL

C'est pour mieux programmer !
aze555666 Messages postés 208 Date d'inscription mardi 13 avril 2004 Statut Membre Dernière intervention 26 janvier 2009
30 juin 2004 à 14:08
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...
Rejoignez-nous