Satan2k
Messages postés8Date d'inscriptiondimanche 20 juin 2004StatutMembreDernière intervention27 février 2006
-
27 févr. 2006 à 06:33
Satan2k
Messages postés8Date d'inscriptiondimanche 20 juin 2004StatutMembreDernière intervention27 février 2006
-
27 févr. 2006 à 11:05
Voila je fais un explorateur de dossier multi-utilisateurs en ligne mais voila j'ai un problème que je n'arrive pas à résoudre.
Je veux faire en sorte que les membres ne puissent pas interférer aux
dossier des autres membres donc pas les renommer ni les détruire.
Pour cela j'ai déja préparé la chose avec un
$_SESSION['repertoire_membre'] mais voila j'ai essayé un tas de choses
et j'y arrive pas. Ce que je voudrais faire c'est que quand on
execute une modification sur un fichier, si il est pas dans son
répertoire, lui botter le cul
Donc un boolean quoi. Je veux simplement vérifier que mettons le
dossier fichier.php se trouve dans le répertoire dossier
J'ai bien trouvé la fonction in_dir sur la documentation php.net mais le realpath ne fonctionne pas sur le serveur.
Voila le bout de code que j'ai récupéré
// Pour vérifier si un dossier est dans un autre dossier -> Sécurité multi utilisateur
Satan2k
Messages postés8Date d'inscriptiondimanche 20 juin 2004StatutMembreDernière intervention27 février 2006 27 févr. 2006 à 07:42
Apres plusieurs coup sur la tête, quelques clopes et beaucoup de patientes j'ai réussi a prendre le dessus.
Voici le code
function in_dir($verify,$dir)
{
// Définition pour les boucles
$directory = opendir($dir);
my_alert('on ouvre '.$dir);
// Simple boucle
while($file=readdir($directory))
{
if ($file!='.'&&$file!='..') // Cela va de soi
{
if (is_dir($file)) // Si c'est un repertoire
{
if($file==$verify){ // Si c'est ce qu'on cherchait
return true; // C'est bon
}
else {
in_dir($verify,$file); // Sinon on recommence
}
}
if (file_exists($verify)) // Si on trouve le fichier
return true; // Alors c'est bon
}
}
return false; // Sinon par défaut on retourne faux
}
Satan2k
Messages postés8Date d'inscriptiondimanche 20 juin 2004StatutMembreDernière intervention27 février 2006 27 févr. 2006 à 10:07
version corrigée et fonctionnelle et je me suis embeté avec la
colorisation syntaxique rien que pour vous (et pour m'excuser des
postes inutiles aussi )
// Pour vérifier si un dossier est dans un autre dossier -> Sécurité multi utilisateur
function in_dir($toverify,$dir)
{
// Ne permet pas d'ouvrir un fichier qui vient d'un dossier parent
if (preg_match('!/\.\./!',$toverify))
return false;
// Définition pour les boucles
$toverify = basename($toverify);
$directory = opendir($dir);
// On parcours les dossiers du membre a la recherche du fichier
while ($file =readdir($directory))
{
if ($file!='.'&&$file!='..')
{
$sub = $dir.'/'.$file;
if (file_exists($file))
{
// Le fichier existe, l'utilisateur peut continuer
return true;
break;
}
else
{
// Le fichier n'existe pas, on vérifie les autres dossiers
Satan2k
Messages postés8Date d'inscriptiondimanche 20 juin 2004StatutMembreDernière intervention27 février 2006 27 févr. 2006 à 11:05
// Pour vérifier si un dossier est dans un autre dossier -> Sécurité multi utilisateur
function in_dir($toverify,$dir)
{
// Ne permet pas d'ouvrir un fichier qui vient d'un dossier parent
if (preg_match('!/\.\./!',$toverify))
return false;
// Définition pour les boucles
$toverify = basename($toverify);
$directory = opendir($dir);
// On parcours les dossiers du membre a la recherche du fichier
while ($file =readdir($directory))
{
if ($file!='.'&&$file!='..')
{
$sub = $dir.'/'.$file;
if (file_exists($dir.'/'.$toverify))
{
// Le fichier existe, l'utilisateur peut continuer
return true;
break;
}
else {
// Le fichier n'existe pas, on vérifie les autres dossiers
if(is_dir($sub))
in_dir($toverify,$sub);
}
}
}
}
Apres correction des bugs. Si un admin passe par la il peut
supprimer tous les posts précédents . (et pas m'envoyer aux Teletubbies
si possible :p)
Satan2k
Messages postés8Date d'inscriptiondimanche 20 juin 2004StatutMembreDernière intervention27 février 2006 27 févr. 2006 à 11:05
// Pour vérifier si un dossier est dans un autre dossier -> Sécurité multi utilisateur
function in_dir($toverify,$dir)
{
// Ne permet pas d'ouvrir un fichier qui vient d'un dossier parent
if (preg_match('!/\.\./!',$toverify))
return false;
// Définition pour les boucles
$toverify = basename($toverify);
$directory = opendir($dir);
// On parcours les dossiers du membre a la recherche du fichier
while ($file =readdir($directory))
{
if ($file!='.'&&$file!='..')
{
$sub = $dir.'/'.$file;
if (file_exists($dir.'/'.$toverify))
{
// Le fichier existe, l'utilisateur peut continuer
return true;
break;
}
else {
// Le fichier n'existe pas, on vérifie les autres dossiers
if(is_dir($sub))
in_dir($toverify,$sub);
}
}
}
}
Apres correction des bugs. Si un admin passe par la il peut
supprimer tous les posts précédents . (et pas m'envoyer aux Teletubbies
si possible :p)