ugrás a tartalomhoz

Fájl törlése PHP-val! Kész script, mi a hiba?

Km4t3 · 2006. Aug. 10. (Cs), 11.07
Sziasztok!
Lenne egy kész php kódom, ami elméletileg törli a fájlokat.
TÖkéletéesen müködik, az egyik mappábol töröl, de a másikból nem... és nem értem miért.
biztos én voltam figyelmetlen ezért kérném a segítségeteket, mert több szem többet lát :)
itt a kód:
$feltoltes_konyvtar = "../../apro/";

$DELETABLE = true;

if ($_REQUEST[del] && $DELETABLE)  {
if (strpos($_REQUEST[del],"/.")>0);
else if (strpos($_REQUEST[del],"../../apro/") === false);
else if (substr($_REQUEST[del],0,11)=="../../apro/") {
unlink($_REQUEST[del]);
print "<script>window.location.href='?message=Sikeres törlés'</script>";
}
}
 
1

jogosultság?

Joó Ádám · 2006. Aug. 10. (Cs), 12.17
Egyrészt: a $_REQUEST[del] az helyesen $_REQUEST['del'], de én inkább használnék konkrétan get-et vagy post-ot.
Másrészt: Van jogod törölni abban a mappában?
3

hát

Km4t3 · 2006. Aug. 10. (Cs), 12.36
én nem tudom már tényleg hogy mi lehet a baj :(
de most kicseréltem $_REQUEST['del'] -re de így se jo
a jogosultságokat azt nemtudom mert végülis a mappát commanderrel hoztam létre...
de most kitöröltem azt a mappát és csináltam egy ujat, de ugy sem jo.. :( de nem értem mert a másik mappábol töröl... ugyanez a kód csak a mappa neve a más...
2

Fájl törlése

Anonymous · 2006. Aug. 10. (Cs), 12.34
Ha a hibaüzenetek nem lennének letiltva, akkor látnád a hibaüzenetet, amit az unlink ad. De az is lehet, hogy az a sok strpos és substr eltéved valahol, és az unlink le sem fut.
Ha a törlendő file-nak teljes útvonalat alakítanál ki, és tudnád ezt az útvonalat, akkor egyszerűbb dolgod lenne, mert csak egy sima is_file paranccsal tudnád ellenőrizni, hogy jót akarsz-e törölni.
Valahogy így:
<?
define('PATH','/www/web/files/kepek/');
$file=$_POST['del'];     /* pl. "apro/rosszkep.jpg" */
if(is_file(PATH.$file)) {
     unlink(PATH.$file);
}
?>
Így akkor sem történik bajod, ha a $_POST['del']-be valami hülyeség kerül, vagy üresen marad,
mert a kialakított útvonal nem lesz létező file neve. Hacsak nincs valami fatális véletlen, és olyan értéket kap, ami eltalál valami fontos file-t. Ezért bele lehet írni valami ellenőrzést, pl. a dupla pontot cseréled valamire, hogy ne lehessen feljebb menni a könyvtárstruktúrádban.

Gyulus
4

hehe

Km4t3 · 2006. Aug. 10. (Cs), 12.54
hehe rájöttem hogy mi volt a hiba... bocsi srácok az uj témáért : )
itt a helyes kód:
$feltoltes_konyvtar = "../../apro/";

$DELETABLE = true;

if ($_REQUEST['del'] && $DELETABLE)  {
if (strpos($_REQUEST['del'],"/./.")>0);
else if (strpos($_REQUEST['del'], $feltoltes_konyvtar ) === false);
else if (substr($_REQUEST['del'],0,11) == $feltoltes_konyvtar ) {
unlink($_REQUEST['del']);
print "<script>window.location.href='?message=Sikeres törlés'</script>";
}
}