Liste d'une arborescence FTP

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Liste d'une arborescence FTP

Re: Liste d'une arborescence FTP

par casio » 17 oct. 2016, 16:42

Merci de l'aide.

Néanmoins, j'ai beaucoup de mal à décoder la fonction.
Je n'arrive pas à bien isoler le flux de data rendu à chaque tour.

J'ai fait un truc moche comme ça :

Code : Tout sélectionner

if(strpos($f, '.') === FALSE){ echo "Serveur_<strong>WDA</strong>/"; $files[$f] = ftp_get_recursive_paths($conn, $f, $max_level-1); echo $f; echo "<br>"; //}else{ // $files[] = basename($f); }

Re: Liste d'une arborescence FTP

par moogli » 17 oct. 2016, 12:07

salut

pour la mise en page tu peux tenter d'afficher un arbre, en ajoutant des espaces pour identer chaque ligne en fonction de la profondeur de profondeur de l'arbre (un paramètre en plus pour la fonction récursive).
ensuite des pictos suivant si c'est un fichier ou un dossier (dans le cas du fichier, suivant le type tu change de picto).

pour la gestion du écache", pourquoi un fichier txt ? c'est du html que tu génères ;)
donc oui il fichier html dont tu récupères le contenu et l'affiche au milieu du reste.
par exemple
<?php
$fileCacheHtml = ''lefichercache.html'';
// il faut ajouter un paramètre pour la date de validités du fichier (ou pas ça dépends du temps que ça pour générer le fichier). 
if(!file_exists($fileCacheHtml )) {
// génération du fichier
}
echo file_get_contents(fileCacheHtml );

@+

Re: Liste d'une arborescence FTP

par casio » 17 oct. 2016, 00:02

Oki, corrigé. :)

La c'est quand même assez moche.
Une idée pour la mise en page ?

J'ai une sorte de back-office créé de mes mains avec le temps, je pourrais héberger le fichier générateur de la liste dessus, et le lancer de temps à autre, mais comment présenter la chose au public à votre avis ? Un lien avec un .TXT en include ?

Re: Liste d'une arborescence FTP

par or 1 » 16 oct. 2016, 21:37

Par contre, le " if(strpos($f, '.') == FALSE){ ", y'avais trois =... Je pense à une faute de frappe... Nop ?
non, voir la doc http://php.net/manual/fr/function.strpos.php

Re: Liste d'une arborescence FTP

par casio » 16 oct. 2016, 21:05

Bien, j'essaye, mais c'est un peu du Chinois pour moi...

Voila ou j'en suis, mais j'essaye encore de comprendre chaque partie :

Code : Tout sélectionner

<?php function ftp_get_recursive_paths($conn, $path, $max_level = 0){ $files = array(); if($max_level < 0) return $files; if($path !== '/' && $path[strlen($path) - 1] !== '/') $path .= '/'; $files_list = ftp_nlist($conn, $path); foreach($files_list as $f){ if($f !== '.' && $f !== '..' && $f !== $path){ if(strpos($f, '.') == FALSE){ $files[$f] = ftp_get_recursive_paths($conn, $f, $max_level-1); echo $f; echo "<br>"; //}else{ // $files[] = basename($f); } } } return $files; } $connection = ftp_connect('mon.adresse.ftp'); if(ftp_login($connection, 'log', 'pass')){ ftp_pasv($connection, TRUE); ftp_get_recursive_paths($connection, '/', 3); ftp_close($connection); } ?>
Par contre, le " if(strpos($f, '.') == FALSE){ ", y'avais trois =... Je pense à une faute de frappe... Nop ?

Re: Liste d'une arborescence FTP

par @rthur » 16 oct. 2016, 13:52

Whaouuu... Heu, j'suis pas sorti de l'auberge la ;)
Ce n'est pas si terrible, t'inquiète.
Voila un exemple qui fonctionne : http://zurb.com/forrst/posts/PHP_ftp_re ... isting-LRI

En revanche c'est assez long de parcourir toute ton arborescence (chaque répertoire et sous répertoire) donc à mon avis il faudra soit que tu mettes en cache ces infos (avec une lise à jour une fois toute les 24h par exemple)
Ou sinon que tu proposes une interface où tu vas chercher les infos sur le FTP répertoire par répertoire en fonction de ce que le visiteur souhaite regarder.

Je te déconseille la génération d'un PDF si ton but est d'être indexé par Google, il est préférable de faire des pages web.
Pour que tes fichiers ne soient pas indexés directement par Google, mais seulement la page qui y donne accès, tu peux mettre sur le lien fichier un rel="nofollow" + mettre le lien comme actuellement via le FTP avec les identifiants driver:driver dedans

Re: Liste d'une arborescence FTP

par casio » 16 oct. 2016, 11:56

Whaouuu... Heu, j'suis pas sorti de l'auberge la ;)

Sinon, oui, visiblement, fopen est actif sur mon mutualisé :
allow_url_fopen : On

Re: Liste d'une arborescence FTP

par moogli » 16 oct. 2016, 11:46

salut,

tu peux faire une interface au dessus du FTP pour le masquer.
en php tu te connecte sur le serveur ftp et récupère la liste des dossiers à la racine.
tu affiches la liste avec un lien pour chaque. le lien est de la forme : content.php?dir=dffd/dddd
La page cible c'est la page qui affiche le contenu de la racine, c'est juste que tu vérifies si $_GET['dir'] existe non vide et que dans ce cas tu initialises le répertoire à lire avec ce qu'il y a dans $_GET['dir'] (pense à virer tous ce qui est ../ au début pour éviter de donner accès au répertoire parent en modifiant l'url.
connexion ftp : http://php.net/manual/en/function.ftp-connect.php
lister les fichers / dossier d'un ftp : http://php.net/manual/fr/function.ftp-nlist.php

à l'affichage il faut que tu test si tu affiches un dossier ou un fichier (tu peux avoir l'info avec ftp_rawlist y a un peu de parse à faire mais c'est jouable.
si c'est un fichier il faut simplement que tu récupères le contenu ftp_get et le pousse vers le navigateur (header + echo).
Pour ce cas un fichier qui ne fait que cela serait utile histoire de pas trop polluer le premier.

Avec un tel système les robots passent sur ton site et suivent tout les liens et n'index pas le ftp (car masqué).

sinon il est aussi possible d'utiliser les fonctions php classique qui sopportent le wrapper ftp et ainsi simplifier l'utilisation dans le code.
Ceci c'est possible que si le paramètre allow_url_fopen est actif (à vérifier dans un phpinfo()).

@+

Re: Liste d'une arborescence FTP

par casio » 16 oct. 2016, 09:56

Y'a aussi le fait que je n'aimerais pas que Google donne juste les liens de download, mais renvoie sur la page dédiée sur notre site.
Ce pourquoi je pensais à la génération d'un PDF.

Re: Liste d'une arborescence FTP

par casio » 15 oct. 2016, 09:25

Bah si, mais j'avoue avoir toujours fonctionné avec le FTP, j'ai créé un compte user, qui n'autorise que le download.
Sinon, c'est sur un gros NAS Synology, donc, je peux mettre tous les protocoles que je veux normalement...

Ma motivation, c'est un gain de temps de chargement. Je fais la guerre au lags... :)

La passerelle FTP est ici : http://drivers.wda-fr.org

Re: Liste d'une arborescence FTP

par arnaud69 » 15 oct. 2016, 09:18

Bonjour,

Et tu n'as que le ftp ?
Pas de serveur web qui délivrerait un protocole http histoire d'être crawlé ?

Sinon, c'est assez simple à coder, quand même quelques lignes, mais assez simple.

Liste d'une arborescence FTP

par casio » 14 oct. 2016, 14:55

Salutations,

Je cherche depuis maintenant assez longtemps à faire une liste (TXT ou PDF par ex.) mise à jour de façon automatique (si possible) régulièrement d'une longue arborescence FTP de fichiers / dossiers.

En fait, notre asso. propose depuis 1996 une mise à dispo. de pilotes matériels stockés sur nos serveurs FTP internes (cnx FAI normal fibre), et nous souhaitons que Google et ses copains scannent le contenu de ce FTP réguliérement, ce pourquoi nous pensons à une liste de l'arbo.

Je suis assez mauvais en code, et je cherche à décomposer depuis longtemps des bribes PHP de moteurs / crawlers FTP en PHP, mais sans succès. La plupart proposent des client FTP en PHP qui ne m’intéresse pas.

Pourriez-vous m'aider ? Me conseiller ?