Explorer en php

[Résolu]
Signaler
Messages postés
83
Date d'inscription
jeudi 27 juillet 2006
Statut
Membre
Dernière intervention
28 novembre 2010
-
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
-
Bonjour à tous,

Je cherche un explorateur en php, que je pourrais inclure dans une page de mon site.

quelle que soit la page que vous visionnez sur mon site, vous vous trouvez sur la page "accueil.php?..." grace à un jeu d'include. L'explorateur se trouvera dans un dossier "Fichiers" et sera appeler par include sur accueil.php.

Le problème est que je veux que les visiteurs ne puisse consulter l'explorateur que pour ce qui ce trouve dans Fichiers et pas ce qui se trouve à coté.

J'ai tenté plusieurs fois de modifier des codes existants sans trouvé la solution et Google ne m'a pas été d'une grande aide.

Merci pour vos réponses.

6 réponses

Messages postés
83
Date d'inscription
jeudi 27 juillet 2006
Statut
Membre
Dernière intervention
28 novembre 2010

Ca y est, je viens de trouver ce que je voulais:

<?php
if(isset($_GET['chemin']))
{
$chemin = $_GET['chemin'];
}
else
{
$chemin = 'Fichiers';
}

$ligne = 1;
if ($dir = opendir("$chemin"))
  {
  while($file = readdir($dir))
  {
    $chemins = realpath("$file");
    if($file != "." && $file != "..")
    {
        if(is_dir($chemin."/".$file))
        {
            echo '
';
            echo '[?section=Fichiers&chemin='.$chemin. '.$file.']
';
            echo '
';
            $ligne++;
                if($ligne == 3)
                {
                $ligne = 1;
                }
        }
        else
        {
            $tab = explode(".",$file);           
           
            echo '
';
            echo '['.$chemin. '.$file.']
';
            echo '
';
            $ligne++;
                if($ligne == 3)
                {
                $ligne = 1;
                }
        }
    }
  }
  closedir($dir);
}
?>
Messages postés
1123
Date d'inscription
mardi 8 janvier 2002
Statut
Modérateur
Dernière intervention
21 avril 2009
1
Ce que tu veux, c'est lister le contenu d'un repertoire, sans pouvoir aller dans un autre repertoire parent (genre on peux aller dans fichiers/repertoire_enfant, mais pas dans fichiers/../../repertoire_parent) ?

Quel est ta version de php ?
Messages postés
83
Date d'inscription
jeudi 27 juillet 2006
Statut
Membre
Dernière intervention
28 novembre 2010

oui, c'est ça.

pour la version php, je sais pas, j'utilise wamp je crois que c'est php5.
Messages postés
1123
Date d'inscription
mardi 8 janvier 2002
Statut
Modérateur
Dernière intervention
21 avril 2009
1
Perso moi je comparais l'adresse du repertoire Fichier (genre /mondisque/www/Fichiers) avec la variable
realpath($varDir);

Généralement si c'est le meme début (si le retour de la fonction realpath contient le meme début que /mondisque/www/Fichiers/ alors je suis dans le bon repertoire et pas dans un repertoire parent.

Ensuite utilise DirectoryIterator de la spl de PHP 5.2 pour le parcours du repertoire, ca t'aidera pour lister ton repertoire (j'ai fait une classe pour Php4 de DirectoryIterator si t'a pas Php5.2)

Wala, toutes les informations ici :

php.net/realpath
                        
                
Messages postés
1123
Date d'inscription
mardi 8 janvier 2002
Statut
Modérateur
Dernière intervention
21 avril 2009
1
Parfait :)
Alors valide en cliquant sur un "Réponse acceptée" ! :)
Merci ! :)
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
24
Hello,

ça n'empêche rien ton code : si je clique sur un dossier, je me retrouver avec une url du type :
http://www.monsite.com/dossier/dir.php?section=Fichier&chemin=Fichier/test
Maintenant, je modifie mon url :
http://www.monsite.com/dossier/dir.php?section=Fichier&chemin=../
et je valide.
Je me retrouve au-dessus.
Tu ne protégeras rien comme ça. Tu dois faire des tests de sécurité plus poussés : simplement vérifier que l'on soit toujours en-dessous de la section décidée. Ce que tu affiches et ce que ton script permet de faire sont deux choses bien différentes...