Håller på med en betalningslösning via MOSMS som går ut på att kunden får tillbaka en länk att ladda hem en fil ifrån. När filen är nerladdad skall länken raderas. Följande fil skapas när tjänsten anropas:
$filename="musik/hp.mp3";
$shortname = basename( $filename );
if( file_exists( $filename ) // sanity check
&& !eregi( "p?html?", $filename ) // security check
&& !eregi( "inc", $filename )
&& !eregi( "php3?", $filename ) ){
$size = filesize( $filename );
header("Content-Type: application/save");
header("Content-Disposition: attachment; filename=$shortname");
$fh = readfile("$filename"); // I use this instead of fopen because when fopen is used, it only reads 1KB of data
fpassthru($fh);
unlink("KPUCR.php");
}
else {
echo "nånting gick fel";
}
Jag antar att filen inte kan radera sig själv men jag har även testat med andra händelser istället för unlink och det verkar som att ingenting händer efter att nerladdningen startat.
Hade ju varit bra ifall du fick nåt felmeddelande utspottat. Du kan ju i alla fall kika på returvärdet från unlink() och se ifall det är true eller false, så ser du om det misslyckas.
En grej jag tycker du ska kolla är om PHP har rättigheter att radera den filen du vill ha bort. Enligt lite kommentarer här så verkar det som om PHP måste ha skrivrättigheter till katalogen filen ligger i för att du ska kunna ta bort den.
nja grejen var att när nerladdningen startar så verkar den inte forsätta läsa från filen av någon anledning, men jag har löst det så att det skapas två sidor när tjänsten anropas. Kunden får länken till den ena sidan som har ett formulär som skickar kunden till den andra sidan som först raderar föregående fil och sedan startar nerladdningen. Det funkar som jag vill i varje fall.
Jag vet inte hur svårt det är för vassa hackers att ta reda på var musiken ligger på servern men detta gör väl det hela lite svårare. Finns det något sätt att ge scriptet tillgång till filer som ligger i en htaccess-skyddad mapp?
264 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e