Bonjour.
Je réalise un squelette pour SPIP que j’utilise dans mon entreprise. Je désirerais récupérer l’arborescence d’un répertoire partagé sur mon réseau et l’afficher dans SPIP(sans recopier les fichiers sur le serveur web). Est ce que quelqu’un aurait une astuce à m’indiquer merci
@+Arno.
Le Samedi 25 Octobre 2003 15:34, cariou NOOS a écrit :
Bonjour.
Je réalise un squelette pour SPIP que j'utilise dans mon entreprise.
Je désirerais récupérer l'arborescence d'un répertoire partagé sur
mon réseau et l'afficher dans SPIP(sans recopier les fichiers sur le
serveur web). Est ce que quelqu'un aurait une astuce à m'indiquer
salut,
en php, il y a curl qui peut t'aider, encore faudrait il que le fichier
distant soit accessible par un serveur de fichiers (apache ou autre).
Bon, un petit exemple. J'utilisais un truc pour fabriquer des pages en
html d'après une base de données mysql. La page d'administration
contenait cette fonction pour contrôler l'existence du fichier distant
afin de proposer soit de lire la page.html, soit de la fabriquer dans
le cache local.
La fonction était dans fonctions.php3 et appelée par
<?include('fonction.php');?> dans la page ou la fonction devait être
appelée.
function VerifLink($Verify)
{
$Verify= str_replace("\\", "/",$Verify);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$Verify);
$crqstring = "";
$crqstring .= "HEAD " .$Verify." HTTP/1.0\r\n\n";
curl_setopt($ch, CURLOPT_CUSTOMREQUEST,$crqstring);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);
// pour debugger
//curl_setopt($ch, CURLOPT_HEADER, 1);
$Data = curl_exec($ch);
$Code=curl_getinfo($ch,CURLINFO_HTTP_CODE);
curl_close($ch);
if($Code=="200"||$Code=="301"){$presence="ok";}else{$presence="no";}
return $presence;
}
?>
Dans le fichier qui appellait la fonction, il y avait une initialisation
de la variable $Verify par des champs de la table contenant en gros ce
qui est dans la table spip_meta.
$Verify="http://".$row[2]."/".$row[3];
$BaseUrl=$Verify;
print
"<tr><td>".$StrBaseUrl."</td><td>http://".$row[2]."/".$row[3]."/</td><td
class=".VerifLink($Verify)."></td></tr>";
Et dans la feuille de style, class=no donne une croix rouge comme fond
de table data, avec no repeat, left et 16px par 16px. Si c'était ok,
une coche verte.
Il te suffit de changer des options pour rappatrier autre chose que
l'entête et peut être un peu plus que le code de retour, tu trouveras
des infos sur ce module à curl - The Art Of Scripting HTTP Requests Using Curl
et la façon de l'utiliser dans php à
http://fr3.php.net/manual/fr/ref.curl.php
En effet, tu ne peux pas utiliser readdir sur un systeme de fichiers
distant. Aussi c'est pourquoi je te mets sur cette petite piste. je
pense qu'il est possible de remplacer "http://" par "file://" dans
cette fonction
gilles
--
Je reponds ordinairement a ceux qui me demandent raison de mes voyages :
que je sais bien ce que je fuis, mais non ce que je cherche.
-- Montaigne, Essais