Bonjours, j’ai un mini projet a realiser en php, pour mes études.
La consigne est disponible ici: Porte document multi utilisateur
Comme vous pouvez le voir, il faut gérer les droits.
En ce moment, je suis en train de realiser une fonction listing qui sera chargé d’afficher le repertoire qu’on lui passe en paramétre.
Voici l’algorithme:
fonction listing(repertoire)
début
si dossier courant = dossier de l'utilisateur
parcourir le dossier avec une boucle while
si le fichier lu est un dossier
afficher le nom du dossier avec un lien pour voir son contenu (role de la page changedir.php)
sinon
afficher le nom du fichier + un lien pour telecharger celui ci
fin si
fin tant que
sinon
parcourir le dossier avec une boucle while
si le fichier lu est un dossier
afficher le nom du dossier avec un lien pour voir son contenu
sinon
afficher le nom du fichier + lien SI le droit est: public
fin si
fin tant que
fin si
fin
Je pense que celui ci est bon.
Mon probléme est que je ne sais pas comment tester si le fichier lu est un fichier ou un dossier, la fonction isdir ne marche pas (inutile de me dire “ajoute tel ou tel bibliothéque”, en local ca marchera, mais quand le miniprojet sera fini, il sera sur le serveur de l’iut, auquel je ne pourrais pas ajouter de librairie)
voici le code du fichier listing.php:
function listing($repertoire){
echo '<br>le repertoire est:<br>'.$repertoire.'<br><br>';
chdir($repertoire);
$dh = opendir($repertoire);
$tab=parse_ini_file("droits.ini",true);
//ici on va récupérer le nom du récpertoire courant, soit repertoires, soit le dossier d'un utilisateur
if ($_SESSION['repwanted']=='repertoires/')
$current='repertoires';
else{
$bibi=explode("/",$_SESSION['repwanted']);
$current=$bibi[1];
}
echo '<table><tr><td><b>Nom</b></td><td><b>Description</b></td></tr>';
//si l'utilisateur est dans son repertoire
if ($_SESSION['nom']==$current){
while ($filename = readdir($dh)) {
if ($filename!='.' && $filename!='..' && $tab){
if (isdir($filename)){
echo '<tr><td><a href="/changedir.php?'.$current.'/'.$filename.'">'.$filename.'</a></td><td>'.$tab['descriptions'][$filename].'<td></td></tr>';
}
else{
echo '<tr><td><a href="'.$repertoire.'/'.$filename.'">'.$filename.'</a></td><td>'.$tab['descriptions'][$filename].'<td></td></tr>';
}
}
}
}
//sinon, on va devoir afficher que les fichiers ayant le droit public
}
Et aussi, quelques spécifications sur l’organisation de mon projet:
-a la racine du site, il y a un dossier nommé “repertoires” qui contient les dossiers des compte utilsateurs.
Par exemple, les fichiers de l’utilisateur bibi se trouverons dans repertoires/bibi/
-le dossier a afficher est stocké dans $_SESSION[‘repwanted’], par exmple: repertoires/ ou repertoires/pierre
-la page changedir.php?dir=… se charge de mettre a jour $_SESSION[‘repwanted’] avec le paramétre contenu dans $_GET[‘dir’] et fait une redirection sur index.php
-index.php appel la fonction listing pour afficher le contenu du repertoire $_SESSION[‘repwanted’]