Ahoj, potřeboval bych trochu poradit: na svých stránkách sem udělal adresář bez indexu (zobrazují se pouze soubory ve složce) ,v něm stránku s php upload-skriptem, aby tam mohli vybraní uživatelé ukládat a sdílet např. svoje fotky apod. A teď - potřeboval bych nastavit (.htaccess?) max. velikost té složky, aby tam ti uživatelé nemohli dát dejme tomu třeba soubory čítající dohromady víc jak 5MB. Zároveň bych tam také potřeboval nastavit (.htaccess či php script?:)) aby se ten nahraný soubor třeba po 5 dnech po nahrání smáznul a nezabíral zbytečně místo v té složce (a koneckonců aby to nebylo braný dle pravidel jako skladiště). Doufám že jsem to napsal srozumitelně:-)
Předem moc díky za odpovědi...;-)
obávám se, že je na to .htaccess krátký
umím si představit php skrit, který sečte velikost souborů ve složce, vypočítá volnou kapacitu a pak povolí nebo zakáže upload. Automatické mazání lze zajistit pomocí programu cron, který ale na WZ není, musel by se nastavit na nějakém jiném servru, třeba na http://webcron.org/
a nebo při uploadu souboru kontrolovat jestli nějaký není starší než nastavený limit a ten smazat
Hmm.. takže z toho asi nic nebude... tak si to budu muset ohlídat ručně;)
Ale stejně díky za odpověď...
já si to dokážu představit tak, aby to pracovalo navíc s databází....ta by si to pohlídala
Nevim proc vsechno musi byt ve spojeni s databazi? Toto jsou vetsinou myslenky zacatecnika, co neumi programovat. V tomto pripade to jde v pohode i bez DB.
Mne se zamlouva napad ds. Velikost adresare sectenim souboru a automaticke mazani bud pres crona, nebo pomoci testu skriptu.
Jenže já php moc neovládám (natož DB), takže si budu muset nechat zajít chuť:-/
Jádro programu, která bude sledovat obsah adresáře, může být celkem jednoduché, např.
<?php
$ca=time();
$cm=time()-(5 * 24 * 60 * 60);
echo "Nyní je : ".date("r",$ca)."<br>\n";
echo "Soubory nahrané před :".date("r",$cm)." budou smazány<br>\n";
if ($handle = opendir('.')) {
$cv=0;
$ms=0;
while (false !== ($file = readdir($handle))) {
if ($file != "." && $file != "..") {
$velikost=filesize ( $file );
$cv+=$velikost;
$uts=filemtime($file);
$cas=date("r",$uts);
if($uts<$cm){
$smaz="smazat";
$ms+=$velikost;
}else{
$smaz="";
}
echo "$file - $velikost - $cas - $smaz<br>\n";
}
}
closedir($handle);
}
echo "Soubory v adresáři zabírají : $cv b<br>\n";
echo "Smazáním lze získat : $ms b";
?>
Fajn! Paráda... Akorát mi to tam započítává i php soubor pro upload a .htaccess...:-) Což by nebylo dobrý smazat:) Jde tam nastavit, aby to z toho vyjmulo ty dva konrétní soubory? Promiň, že se na to ptám tak blbě polopatě, ale fakt to moc neumím...:-) Díky za každou radu...
if ($handle = opendir('.'))
Tady si nastav cestu k adresáři, který to bude načítat, tečka znamená aktuální adresář (/3w/wz.cz/s/sumatra/...
No, tak jsem na to ukládání udělal složku, tu jsem nastavil i k uploadu a teď mi to po nahrání pokusnýho obrázku vyhodí dvě chyby:
Warning: filesize(): Stat failed for PGT-LS.JPG (errno=2 - No such file or directory) in /3w/...
a
Warning: filemtime(): Stat failed for PGT-LS.JPG (errno=2 - No such file or directory) in /3w/... (PGT-LS.JPG je pokusnej obrázek)
Poradíš ještě? Díky!
No such file or directory - nejspíš je špatně zadaná cesta k adresáři
Ta se mi zdá správně... Tady se na to můžeš podívat: http://sumatra.wz.cz/upload/ - soubor upload.php
doplň si tam to, kde je $dirname
<?php
$ca=time();
$cm=time()-(5 * 24 * 60 * 60);
echo "Nyní je : ".date("r",$ca)."<br>\n";
echo "Soubory nahrané před :".date("r",$cm)." budou smazány<br>\n";
$dirname='/3w/wz.cz/s/sumatra/upload/share';
if ($handle = opendir($dirname)) {
$cv=0;
$ms=0;
while (false !== ($file = readdir($handle))) {
if ($file != "." && $file != "..") {
$file="$dirname/$file";
$velikost=filesize ( $file );
$cv+=$velikost;
$uts=filemtime($file);
$cas=date("r",$uts);
if($uts<$cm){
$smaz="smazat";
$ms+=$velikost;
}else{
$smaz="";
}
echo "$file - $velikost - $cas - $smaz<br>\n";
}
}
closedir($handle);
}
echo "Soubory v adresáři zabírají : $cv b<br>\n";
echo "Smazáním lze získat : $ms b";
?>