LISTAGE DE REPERTOIRE D'UN SITE WEB

Palleas_44 Messages postés 130 Date d'inscription lundi 12 décembre 2005 Statut Membre Dernière intervention 19 avril 2009 - 7 août 2006 à 14:58
CString Messages postés 20 Date d'inscription samedi 18 septembre 2004 Statut Membre Dernière intervention 19 avril 2007 - 4 sept. 2006 à 16:00
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/38974-listage-de-repertoire-d-un-site-web

CString Messages postés 20 Date d'inscription samedi 18 septembre 2004 Statut Membre Dernière intervention 19 avril 2007
4 sept. 2006 à 16:00
Ha tient j'avais pas vu celui la , j'ai posté casiment la même source que anthomicro ...
kurt67 Messages postés 48 Date d'inscription vendredi 30 avril 2004 Statut Membre Dernière intervention 4 avril 2007
22 août 2006 à 13:22
Ben dans le genre vous pouvez jetez un ptit coup d'oeil à ma source (oui je fait un peu de pub): http://zebigbrozer.free.fr/nav/ (il y a une démo et le zip)
Je l'avais aussi posté sur phpcs mais ce n'est pas la dernière version et quand j'essaye d'updater mon code il affichait un message d'erreur.
C'est aux normes xhtml1.0 strict et css et utilise le javascript et est largement paramétrable (il est justement possible de ne pas utiliser le javascript).
L'idée de base c'est d'avoir un navigateur expandable qui n'a pas besoin de se recharger (tout est chargé en une fois)
viking_force Messages postés 31 Date d'inscription lundi 14 février 2005 Statut Membre Dernière intervention 29 octobre 2008
22 août 2006 à 09:49
bonjour a tous......

aucune remarque a formulé (les autres l'on très bien fait)
je viens juste mettre mon grain de sel et proposer une autre technique, avec fonction recursive (pas dur) et affichage aux normes (normalement)

y'a p'tet deux ou trois trucs pas très catholique dans le code, mais en général il est plustot propre....

<?php
$num_folder = '1';

function ListFolder($Folder, $SkipFileExts, $SkipObjects) // Fonction pour lister les dossier
{
global $num_folder;
$dir = opendir($Folder);
while (false !($Current readdir($dir))) {// Boucle sur tout ce qu'il y a dans le répertoire
if ($Current !='.' && $Current != '..' && in_array($Current, $SkipObjects)===false) {
if(is_dir($Folder.'/'.$Current)) {// Si c'est un dossier
echo '
<li class="plus">[# '.$Current.']
';
$num_folder++;
ListFolder($Folder.'/'.$Current, $SkipFileExts, $SkipObjects); // On liste les dossiers contenue dans le dossier (récursivité)
echo '

</li>';
}else{
$FileExt = strtolower(substr(strrchr($Current ,'.'),1));
if (in_array($FileExt, $SkipFileExts)===false) { // On regarde si on dois afficher cette extension
echo '
<li class="folder">'.$Current.'</li>';
}
//c'est là que l'on reviens de la récursivité ou fichier a la racine
}
}
}
closedir($dir);
}
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
<title>:: Test</title>
<meta http-equiv="Content-Type" content="text/html; CHARSET=iso-8859-1" />
<style type="text/css">
img {
border: 0;
}
.plus {
list-style: url(./images/plus.gif);
}
.moin {
list-style: url(./images/moin.gif);
}
.folder {
list-style: url(./images/fichier.png);
}
</style>
<script type="text/javascript">
function ShowMenu(nomcouche) {
document.getElementById('Couche'+nomcouche).style.display=(document.getElementById('Couche'+nomcouche).style.display=='block')?'none':'block';
document.getElementById('Couche'+nomcouche).parentNode.className=(document.getElementById('Couche'+nomcouche).parentNode.className=='plus')?'moin':'plus';
}
</script>
</head>


<?php
$Folder = './';
$SkipExts = array('localized', 'ds_store'); //extension propre aux MAC
$SkipObjects = array('UnDossier', 'UnFichier');
ListFolder($Folder, $SkipExts, $SkipObjects);
?>


</html>

si ca peut aider......si y'a besoin d'explications.......
PS: le code n'est pas entièrement de moi, je me suis bcp inspirer de la création d'un menbre du site allhtml.com (me souviens plus qui...)
gallyhc Messages postés 386 Date d'inscription samedi 4 octobre 2008 Statut Membre Dernière intervention 19 février 2018 2
19 août 2006 à 02:00
Bonjour tout le monde,

Je suis en train de modifier cette version avec vos conseils. J'espere que cela sera beaucoup mieu ;-).

Vous pouvez toujours donner de bon conseil pour que cela devienne une source au "top" ;-)

Merci et A++
Gally
gallyhc Messages postés 386 Date d'inscription samedi 4 octobre 2008 Statut Membre Dernière intervention 19 février 2018 2
9 août 2006 à 12:09
Bonjour,

C'est au niveau des commentaires sa j'ai bien vu qu'il y en avait de très constructif et justement j'aissais de les analysés et de modifier mon code source.

Merci a tout ce qui on fait de bonne critiques,
A++
[Gally Home Corp]
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
9 août 2006 à 09:06
Gally => tu ferais mieux de faire plus attention aux commentaires qu'aux notes. Tu en as eu de constructifs : Kankrelune n'a pas lésiné sur les explications et Anthomicro t'a montré une autre façon de faire, plus correcte.
Après, les notes sans commentaires...il y en aura toujours. Mais elles ne font pas avancer grand chose.
Je n'efface pas les deux 1/10 parce que j'attends que leurs auteurs se justifient (ce qu'ils ne manqueront pas de faire, j'en suis sûr, vu qui ils sont). Ils ont sans doute leurs raisons.
kankrelune Messages postés 1293 Date d'inscription mardi 9 novembre 2004 Statut Membre Dernière intervention 21 mai 2015
9 août 2006 à 02:52
En fait moi j'ais mis 5 mais visiblement quelqu'un a mis 1 d'où la moyennne... faudrait virer le 1... .. . ;o)

Quand aux conseils n'hésite pas à demander.... on ne peut pas deviner... .. . :o)

Il n'y a aucune raison d'abandoner le php... on à tous débutés un jour... .. . ;o)

@ tchaOo°
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
8 août 2006 à 23:59
Quoi on a pas été sympas ? :-(
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
8 août 2006 à 23:29
Faudra te faire aux discussions et aux notes des PHPistes, aucun rapport avec les VBistes.
Le style est nettement plus bourru mais c'est juste une question d'habitude, de bons gars serviables en fin de compte.
Persévère et tout ira pour le mieux.
gallyhc Messages postés 386 Date d'inscription samedi 4 octobre 2008 Statut Membre Dernière intervention 19 février 2018 2
8 août 2006 à 22:23
Bonjour,

Visiblement cette source n'a aucune raison d'être sur ce site, vu la note et les critiques, je vais donc faire une demande de suppression de celle-ci. Ce qui est très dommage c'est pour certain au lieu de faire de grosse critique il serait bon de donné des conseils.

Et je vais continuer mon chemin en vb, parce-ce que visiblement le PHP c'est pas pour moi.

@++
[Gally Home Corp]
gallyhc Messages postés 386 Date d'inscription samedi 4 octobre 2008 Statut Membre Dernière intervention 19 février 2018 2
7 août 2006 à 23:29
Salut a ce qui on repondu,

Je viens du vb et toute les critiques constructives qui pourront me faire evoluer en php dont les bien venu. franchement desole si la premiere versont il y a beausoup de chose a dire. c'est la sessus que je compter pour avoir par la suite une version "super" pour tout le monde.

Sinon si vous regarder sur CS je suis un tres bon bosseur en VB et je me met en php et j'espere que avec vos conseil j'evolurer aussi dans le bon sens en php

merci encore
A++
Gally
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
7 août 2006 à 23:18
PS : désolé pour l'indentation...
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
7 août 2006 à 23:17
Salut,

j'ai fait un petit code qui me servait à lister les fichiers rapidement d'un site web (qui avait des failles en général m'enfin passons XD) :

<style>
code{
display:block;
width:900px;
overflow:auto;
}
</style>
<?php
function lire_dossier($dossier= '../..')
{
$dossier2=opendir($dossier);

while(($fichier=readdir($dossier2))!==FALSE)
{
$extension=strrchr($dossier.'/'.$fichier,'.');

if($fichier!=='.' AND $fichier!=='..' AND ($extension==='.php' OR $extension==='.txt' OR $extension==='.html' OR $extension==='.htm'))
{
if(is_file($dossier.'/'.$fichier))
{
echo '------------------------------
fichier : ',$dossier,'/',$fichier,'


',str_replace("\n",'
',htmlentities(file_get_contents($dossier.'/'.$fichier))),'
';
}
}
elseif($fichier! =='.' AND $fichier!=='..' AND is_dir($dossier.'/'.$fichier))
{
echo 'DOSSIER : ',$dossier,'/',$fichier,'

';

lire_dossier($dossier.'/'.$fichier);
}
}
}

lire_dossier('/');
?>
kankrelune Messages postés 1293 Date d'inscription mardi 9 novembre 2004 Statut Membre Dernière intervention 21 mai 2015
7 août 2006 à 20:05
Un peu tout... .. .

Il faut mettre le attributs en minuscules et non en majuscules... la valeur des attributs doit etre entre doubles quotes et non entre simples quotes... préfère les css plutot que des attributs html pour la mise en forme... la balise font est dépréciées (utilise les css)... .. .

Je rajouterais...

- il serait mieux de mettre ça en fonction afin de pouvoir l'utiliser dans différentes conditions

- tu ne teste pas ni l'existance du fichier cible (pas important dans ce cas d'utilisation mais ça peut l'etre) ni la réussite (ou non) de l'ouverture du dossier cible

- tu fais des tas de strtoupper, strtolower, strlen, strpos alors qu'un seul pourrait suffire (le résultat servant plusieurs fois) dans la plupart des cas

- remplacer

while($REP_FILE = readdir($REP_LIST))

par

while(false !($REP_FILE readdir($REP_LIST)))

- ton switch pour le type de fichier est totalement inutile

- tu fais des echo à la pelle là ou un seul suffirait... utilise les simples quotes pour entoure la chaine de caractères à afficher vu que tu concatène tes variables... .. .

- dans les lignes :

$LNGK = strpos($REP_FILE, '.');
$LNGK = strlen($REP_FILE)-$LNGK;
if ($LNGK > 0 && $LNGK < strlen($REP_FILE)){
$REP_TYPE = strtoupper(substr($REP_FILE,strlen($REP_FILE)-($LNGK-1),($LNGK-1)));
}else{
$LNGK = 0;
$REP_TYPE = '???';
}

tu fais comment si le strpos ne trouve pas le point et renvoi false... et tu fais comment si le fichier s'appel, par exemple, pwet.test.php ?

$LNGK = strrpos($REP_FILE, '.');

if($LNGK !== false)
$REP_TYPE = strtoupper(substr($REP_TYPE,$LNGK+1));
else
{
$LNGK = 0;
$REP_TYPE = '???';
}

Voila ce qui me vient à l'esprit (j'en ais peut être loupé)... une amélioration interessante serait de gérer (en option) la récursivitée... et éventuellement d'affficher le nom des fichiers/répertoire sous forme de lien pointant ces derniers... .. .


Je met 5/10... .. .

@ tchaOo°
gallyhc Messages postés 386 Date d'inscription samedi 4 octobre 2008 Statut Membre Dernière intervention 19 février 2018 2
7 août 2006 à 16:49
Bonjour Palleas_44,

Peu tu me dire ce ke tu ne trouve Sale et pas beau au niveau de l'HTML?

A++
Palleas_44 Messages postés 130 Date d'inscription lundi 12 décembre 2005 Statut Membre Dernière intervention 19 avril 2009
7 août 2006 à 14:58
J'ai peur de lire serieusement ce morceau de code, c'est sale :s double quote au lieu de simple, HTML pas bô etc... j'ai pas mis de note, j'attend de voir ^_^
Rejoignez-nous