<?php
|
/*---------------------------------------------------------------*/
|
/*
|
Titre : Listage récursif d'un dossier FTP
|
|
URL : https://phpsources.net/code_s.php?id=1032
|
Auteur : KOogar
|
Date édition : 16 Fév 2019
|
*/
|
/*---------------------------------------------------------------*/
|
|
function scan_ftp($host , $login , $pass , $path="/" , $depth=-1){
|
if (is_string($host)){
|
$conn_id = ftp_connect($host);
|
// authentification avec nom de compte et mot de passe
|
$login_result = ftp_login($conn_id, $login, $pass);
|
// vérification de la connexion
|
if ((!$conn_id) || (!$login_result)) {
|
echo "La connexion FTP a échoué!";
|
echo "Tentative de connexion à $host avec $login";
|
return array();
|
}
|
} else {
|
$conn_id = $host;
|
}
|
|
$retour = array();
|
$fichiers = ftp_rawlist($conn_id, $path);
|
foreach($fichiers as $fichier){
|
$details = preg_split("/\s+/", $fichier);
|
// le premier element de fichier est les droits
|
// si la premiere lettre est un d, c'est un dossier
|
if ($details[0] = "d"){
|
// le nom du fichier est en neuvieme position
|
// les tableaux commencent à 0
|
if ($depth == 0){
|
$retour[$details[8]] = array("Dossier non scanne");
|
} else {
|
// note en recursif, on ne passe que la ressource
|
// pas besoin de faire passer le reste, car on est deja connecte
|
$retour[$details[8]] = scan_ftp($conn_id, "", "", $path."/".$details[8],
|
$depth -1);
|
}
|
} else {
|
$retour[] = $details[8];
|
}
|
}
|
return $retour;
|
|
}
|
?>
|
|
|