IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Exclure l'affichage de certains fichiers


Sujet :

Langage PHP

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 46
    Par défaut Exclure l'affichage de certains fichiers
    Re

    Ouassi un bout de code que ceusse qui parlent couramment le PHP n'auont aucun mal à comprendre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
    $dir_nom = '.'; // dossier listé (pour lister le répertoir courant : $dir_nom = '.'  --> 
     
    $dir = opendir($dir_nom) or die('Erreur de listage : le répertoire n\'existe pas'); // on 
     
    //ouvre le contenu du dossier courant
    $fichier= array(); // on déclare le tableau contenant le nom des fichiers
    $dossier= array(); // on déclare le tableau contenant le nom des dossiers
     
    while($element = readdir($dir)) {
    	if($element != '.' && $element != '..' && strrchr($element,'.') != '.php') {
    		if (!is_dir($dir_nom.'/'.$element)) {$fichier[] = $element;}
    		else {$dossier[] = $element;}
    	}
    }
     
    closedir($dir);
     
    if(!empty($dossier)) {
    	sort($dossier); // pour le tri croissant, rsort() pour le tri décroissant
    	echo "<h2>Liste des dossiers accessibles</h2>";
    	echo "\t\t<ul>\n";
    		foreach($dossier as $lien){
    			echo "\t\t\t<li><a href=\"$dir_nom/$lien \">$lien</a></li>\n";
    		}
    	echo "\t\t</ul>";
    }
     
    if(!empty($fichier)){
    	sort($fichier);// pour le tri croissant, rsort() pour le tri décroissant
    	echo "<h2>Liste de fichiers divers</h2>";
    	echo "\t\t<ul>\n";
    		foreach($fichier as $lien) {
    			echo "\t\t\t<li><a href=\"$dir_nom/$lien \">$lien</a></li>\n";
    		}
    	echo "\t\t</ul>";
     }
    Il marche bien, mais si bien que mon .htaccess et l'.htpasswd qui va avec s'affiche aussi avec le nom des fichiers (.pdf, .doc, etc.) que je veus rendre visibles.
    Comment exclure certaines extensions de l'affichage ?
    C'est ma question du soir.
    Bonsoir.

  2. #2
    Membre Expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Par défaut
    Bonsoir,
    Tu pourrais déclarer un tableau qui contient les types de fichiers autorisés et voir si l'extension du fichier correspond courant dans la boucle a une occurence dans le tableau.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    $dossier= array(); // on déclare le tableau contenant le nom des dossiers
    $allowed_ext = array('jpeg','jpg','jfif','gif','png');
    while($element = readdir($dir)) {
            $ext_element = end(explode(".", $element));
    	if($element != '.' && $element != '..' && array_search($ext_element,$allowed_ext) > 0) {
    		if (!is_dir($dir_nom.'/'.$element)) {$fichier[] = $element;}
    		else {$dossier[] = $element;}
    	}
    }

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 46
    Par défaut
    Re Thomas,
    ah oui.
    Mais ça fait disparaitre l'affichage des dossiers.

  4. #4
    Membre Expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Par défaut
    Ha, oups

    Mais bon la logique était là, il te suffisait d'adapter légèrement la structure du code, trèves d'explications
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    $dossier= array(); // on déclare le tableau contenant le nom des dossiers
    $allowed_ext = array('jpeg','jpg','jfif','gif','png');
    while($element = readdir($dir)) {
            if (!is_dir($dir_nom.'/'.$element)){
               $ext_element = end(explode(".", $element));
        	    if($element != '.' && $element != '..' && array_search($ext_element,$allowed_ext) > 0){
                    $fichier[] = $element;
        	    }
            }
            else{
                $dossier[] = $element;
            }
    }

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 46
    Par défaut
    Ah... Okey.
    Mes dossiers apparaissent mais au dessus je me retrouve avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    			<li><a href="./.%20">.</a></li>
    			<li><a href="./..%20">..</a></li>
    et bien sûr, tu l'as deviné je ne pige pas pourquoi c'est 2 lignes arrivent.
    Désolé.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 46
    Par défaut
    Good morrrrrrning !

    Si j'ai trafiqué le code dans tous les sens pour supprimer l'affichage de ces points "." ".." c'est avec un certain succès.

    C'est pas pour me vanter mais je suis parvenu en effet, et sans aucune erreur de syntaxe , à n'avoir plus rien d'affiché du tout.

    Ce n'était peut être pas l'objectif mais, quand même, vous noterez l'exploit : passer 4 heures sur un script PHP de 60 lignes qui n'affiche rien.
    Il faut l'enregistrer dans les annales!

    Si quelqu'un passe par là ce weekend au lieu d'aller faire ses courses de Noël, par exemple, qu'il n'hésite pas à me dire où le bug se situe.
    J'envelopperai ma reconnaissance éternelle dans un papier rouge avec un noeud doré.

  7. #7
    Membre Expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Par défaut
    Bonjour (les courses commencent cette après-midi ),

    Le '.' correspond au répertoire courant, et le '..' correspond au répertoire parent.

    Donc dans le script donné par ThomasR, '.' et '..' étant des répertoires, il sont ajoutés dans $dossier (clause else).

    Une solution (non testée) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    if (!is_dir($dir_nom.'/'.$element))
    {
        $ext_element = end(explode(".", $element));
        if (array_search($ext_element, $allowed_ext) > 0)
        {
            $fichier[] = $element;
        }
    }
    else
    {
        if ($element != '.' && $element != '..')
        {
            $dossier[] = $element;
        }
    }

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 46
    Par défaut
    Citation Envoyé par Eusebe Voir le message
    Bonjour (les courses commencent cette après-midi ),
    ah bon alors tu reviendras chercher ton cadeau ici :
    Citation Envoyé par nomasis
    J'envelopperai ma reconnaissance éternelle dans un papier rouge avec un noeud doré.
    Tu l'auras bien mérité : ça marche parfaitement !
    Avec tous mes remerciements.
    Passez tous de bonnes fêtes.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. find : exclure certains fichiers
    Par sergeh dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 21/02/2014, 13h56
  2. Réponses: 12
    Dernier message: 06/08/2010, 15h56
  3. Réponses: 2
    Dernier message: 01/08/2008, 12h56
  4. Compiler et exclure certains fichiers
    Par Frederik dans le forum Maven
    Réponses: 11
    Dernier message: 19/07/2007, 18h10
  5. Réponses: 2
    Dernier message: 22/05/2006, 16h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo