[PHP] Limiter taille d'un dossier

cacahuete586 Messages postés 2 Date d'inscription   Statut Membre Dernière intervention   -  
 jobo83.com -
Bonjour,

Je souhaiterais limiter la taille d'un dossier sur mon ftp, je vous explique, certains de mes membres de la communauté voudraient bien héberger leurs quelques fichiers persos sur mon ftp. Pour éviter les dérives je souhaiterais par exemple appliquer une taille limite de 20-30 mo par utilisateur. Il aurait un accès à son dossier sur son FTP. Cependant j'ai effectué des recherches sur le net mais sans succès.

J'avais pensé à calculer la taille du dossier (ça ok) et si celui-ci dépasse la taille limité, on ne peut plus rien uploadé. (ça je sais pas faire)

D'avance merci :)

1 réponse

jobo83
 
Donc, pour faire court, si tu as déjà réussi à calculer la taille du dossier, il te suffit d'en créer une variable (par exemple $taille_dir)
et de soumettre l'affichage du champs d'upload à une condition:

CODE:

if ($taille_dir > $taille_limite)
{
echo"Vos possibilités de télechargement sont épuisées!<br>
Vous occupez actuellement ".$taille_dir." Mo, la taille maximale étant de ".$taille_limite." Mo, nous vous conseillons de libérer de l'espace afin de pouvoir à nouveau envoyer vos images.<br>
Le webmaster"
}
else
{
<input type='file' name='userfile'>
}


Voilà, en espérant t'avoir aidé, et si tu souhaite la fonction complète, contacte moi par mail, je la rédigerais.

jobo83
-1
webmister
 
bonjour
je cherche egalement à limiter un répertoire à 100 mo sauf que moi je ne sais pas par ou commencer je ne sais pas comment calculer la taille du répertoire et encore moi en bloquer l'update si le quota est dépassé
si quelqu'un pouvez m'aider je lui en serais trés reconnaissant
0
jobo83.com
 
Bonjour webmister,

Voici donc la fonction complète, à toi ensuite de l'integrer à ton formulaire, mais cela devrait être assez simple:

<?
function spaceDir($adr=".") {
static $size;
$dp=opendir($adr);
do {
$itm=readdir($dp);
if (is_dir("$adr/$itm") && ($itm!=".") && ($itm!="..") && ($itm!="")) {
spaceDir("$adr/$itm");
}
elseif (($itm!=".") && ($itm!="..") && ($itm!="")) {
$size = $size + filesize("$adr/$itm");
}
}
while ($itm != false);
closedir($dp);

return round($size / (1024*1024),2);

}
$taille_dir = spaceDir();//Taille de repertoire courant en MO
//$taille_dir = spaceDir("../../dossier_X");//Taille d'un repertoire distant en MO
$taille_limite = 100;//Taille limite fixée en Mo (ici 100 Mo, il suffit de remplacer par la valeur de ton choix)
if ($taille_dir > $taille_limite)
{
echo"Vos possibilités de télechargement sont épuisées!<br>
Vous occupez actuellement ".$taille_dir." Mo!<br>
La taille maximale étant de ".$taille_limite." Mo, nous vous conseillons de libérer de l'espace afin de pouvoir à nouveau envoyer vos images.<br>
Le webmaster";
}
else //Autrement on autorise l'affichage du champ d'upload
{
echo"<form><input type='file' name='userfile'><input type=submit name=submit value=Valider></form>";
}
?>

Voilà, pour plus d'infos, tu peux me contacter par le biais de mon site:
http://www.jobo83.com

@+
0