Comment puis-je utiliser la fonction Opendir pour lire la liste de répertoires d'un serveur distant connaissant son adresse IP? P>
3 Réponses :
En supposant que vous essayez d'accéder au serveur distant à l'aide de HTTP, vous ne pourrez pas le faire directement. Puisque HTTP accède vraiment au service Web de votre serveur distant, il contrôle la manière dont les fichiers vous sont présentés. Dans le cas de nombreux serveurs Web, vous pouvez activer «index» pour le contenu du dossier. Cela entraîne l'affichage des entrées dans le dossier dans votre navigateur en tant que HTML. Afin de traverser la structure de répertoire, vous devez analyser ce HTML pour trouver les informations de chemin.
Si vous utilisez FTP, vous pouvez transmettre le Un exemple des références ci-dessus: p> FTP: // ... code> URL à
Opendir () Code> à partir de la version 5.0. Notez que cette fonctionnalité peut être désactivée par votre administrateur de serveur. Si vous ne pouvez pas utiliser cette fonction directement, reportez-vous à la section Fonctions FTP manuel pour PHP (y compris
ftp_nlist () code>
pour la liste des fichiers). P>
En supposant que vous disposez du prolongement FTP chargé pour PHP sur votre serveur, vous devriez pouvoir utiliser PHPS FTP Fonctions P>
Pour les fichiers / dossiers visibles au public, vous pouvez le faire avec ce script: pas de ftp, pas de strugglin. Cela vous donnera tous les noms de fichiers dans un dossier distant. Si vous pouvez ouvrir le dossier avec un navigateur, vous pouvez également le lire avec PHP. Happy Leeching;)
Mise à jour: Ceci ne répertorie que les fichiers disponibles pour le public, sans aucun des fichiers qui ne sont visibles que pour un utilisateur de certains utilisateurs! P>
function get_text($filename) { $fp_load = fopen("$filename", "rb"); if ( $fp_load ) { while ( !feof($fp_load) ) { $content .= fgets($fp_load, 8192); } fclose($fp_load); return $content; } } $matches = array(); preg_match_all("/(a href\=\")([^\?\"]*)(\")/i", get_text('http://www.xxxxx.com/my/cool/remote/dir'), $matches); foreach($matches[2] as $match) { echo $match . '<br>'; }
Il ne donne que ce que le serveur affiche, qui est une liste de répertoires partiels. Essentiellement collecter tous les chemins des liens. Pas la liste.
Pas de problème, mais ce n'est pas la liste de répertoires. Il ne montre aucun fichier index.html par exemple. Ou tout autre fichier qui ne figure pas dans les liens. Si tout ce que vous avez à faire est de collecter toutes les balises d'ancrage de la page, c'est bien. Mais si vous avez besoin d'une liste de répertoires, il ne vous aide certainement pas.
En fait, il retournera tout ce que l'URL serve, qui pourrait être une page Web.
Y a-t-il quelque chose contre l'utilisation de la fonction PHPS File_get_Contents au lieu de Votre propre fonction get_text code>?