Précédent   Forum des professionnels en informatique > PHP > Langage > Fichiers
Fichiers Forum d'entraide sur les fichiers avec PHP. Avant de poster -> FAQ fichiers et Sources fichiers
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 09/06/2007, 19h45   #1
Nouveau Membre du Club
 
Femme
Développeur Web
Inscription : janvier 2006
Messages : 102
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : janvier 2006
Messages : 102
Points : 28
Points : 28
Par défaut Droits pour le parcours de dossier

J'ai un problème en ce qui concerne le parcours de dossier.

J'ai fait une fonction qui me liste les fichiers et dossiers du répertoire d'un utilisateur. Lorsqu'il s'agit d'un dossier, je met un lien pour parcourir ce dossier ainsi qu'un lien "dossier précédent".

Voici mon code:

Code :
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
38
39
40
41
42
43
44
$rep_ini="C:/wamp/www/Porte-Doc(wamp)/Documents/".$_SESSION['login'];
 
 
if  (isset($_GET['suiv']))
{
	$rep_ini=$_GET['suiv'];
}
 
function parcourdos($rep_ini)
{
	chdir($rep_ini);
	if(($handle = opendir($rep_ini))!=false)
	{
	while (false !== ($file = readdir($handle)))
	{
		If ($file != "." && $file != "..") 
		{
			$fic=$rep_ini."/".$file;
			$type=filetype($fic);
			$taille=filesize($fic);
 
			If (is_dir($fic))
			{
				Echo "<Tr><Td><img src='Images/dossier.gif'><a href=\"accueil.php?suiv=$fic\">".$file."</a></Td><Td>".$type."</Td><Td>".$taille."</Td><Td></Td></Tr>";	
			}	
			Else
			{
				Echo "<Tr><Td>".$file."</Td><Td>".$type."</Td><Td>".$taille."</Td><Td><A Href=telecharger.php?fic=$fic>Télécharger</A></Td></Tr>";
			}
		}
		$d=getcwd();
		$rep_cour="C:/wamp/www/Porte-Doc(wamp)/Documents/".$_SESSION['login'];
 
		if  (($file == "..") && ($d !== $rep_cour))
		{
			Echo "<Tr><Td><Img Src='Images/parent.gif'><A href=\"accueil.php?suiv=$rep_ini/$file\">Dossier précédent</A></Td><Td></Td><Td></Td><Td></Td></Tr>";
		}
	}
	rewinddir($handle);
	closedir($handle);
	}
}
parcourdos($rep_ini);
?>
le problème, c'est qu'il remonte au dessus du dossier utilisateur alors que je veux interdire cela...mais je n'y parviens pas sachant que je veux faire un listing propre avec des liens vers dossier et sous dossier et dossier précédent.
Il me faut aussi gérer le cas des "../.." dans la barre d'adresse pour ne pas remonter plus haut dans l'arborescence...


comment faire?
gazelle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/06/2007, 20h03   #2
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
En contrôlant $rep_ini avant de faire le listing, par exemple :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
if (!isset($_SESSION['login'])) {
    die("Il faut s'authentifier avant ...");
}
 
define('RACINE', realpath('C:/wamp/www/Porte-Doc(wamp)/Documents/' . $_SESSION['login']));
 
 
if (isset($_GET['suiv'])) {
    $rep_ini = $_GET['suiv'];
} else {
    $rep_ini = RACINE;
}
 
if (!preg_match('.^' . preg_quote(RACINE) . '.D', realpath($rep_ini))) {
    die("Vous n'êtes pas autorisés à monter si haut");
}
 
# ...
(non testé)
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/06/2007, 18h25   #3
Nouveau Membre du Club
 
Femme
Développeur Web
Inscription : janvier 2006
Messages : 102
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : janvier 2006
Messages : 102
Points : 28
Points : 28
Merci beaucoup ça marche!

Resolu!
gazelle est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 11h45.


 
 
 
 
Partenaires

Hébergement Web