Yom Skrevet 31. august 2007 Del Skrevet 31. august 2007 Hei! Jeg lurer på hvordan jeg kan hindre folk i å laste ned spesifikke filer hvis de ikke er innlogget på siden. Jeg vet hvordan jeg kan lage et login-system og hindre folk fra å komme inn på spesifikke sider, men ikke filer. Anyone? Lenke til kommentar
magikern Skrevet 31. august 2007 Del Skrevet 31. august 2007 med mindre du er åpen for å bruke noe alla en .htaccess løsning med dertilhørende .htpasswd, så må du plassere filene ett sted de ikke er direkte tilgjengelige via web og lage ett system i f.eks php for å la innloggede brukere laste ned fra den mappen... Lenke til kommentar
Rasks Skrevet 1. september 2007 Del Skrevet 1. september 2007 hvis du legger filene i en database og har en script som henter ut filene fra databsen lar dette seg fint gjøre. Lenke til kommentar
Martin A. Skrevet 1. september 2007 Del Skrevet 1. september 2007 (endret) Databaser skal ikke brukes til å lagre filer. Men du kan derimot bruker databasen til å lagre hvor bildene ligger. ID | Filbane | Nedlastinger ---------------------------------- 1 | /filer/we.mp3 | 0 Så lager du et script, feks download.php. Denne mottar ID'en til saken som skal nedlastes <?php /* * Mysql connect and such */ $id = mysql_real_escape_string( intval( $id ) ); if( !empty( $id ) ) { $q = "SELECT filbane FROM filer WHERE id={$id}"; $res = mysql_query( $q ) or die( mysql_error() ); $r = mysql_fetch_assoc( $res ); // Så oppdaterer vi nedlastinger i DB mysql_query( "UPDATE filer SET nedlastiner=nedlastinger+1" ) or die( mysql_error() ); /* * Noen header() som gjør at $r['filbane'] lastes ned */ } else { header( "Location: index.php" ); } ?> Endret 1. september 2007 av M4rTiN Lenke til kommentar
ventle Skrevet 5. september 2007 Del Skrevet 5. september 2007 (endret) Slik kan du la brukeren laste ned en fil fra serveren som er beskyttet med 'deny from all' i .htaccess. "Umulig" å komme forbi, selv om man vet hvor filen ligger lagret. PHP <?php if ($user->is_logged_in) { // Disse linjene må være med header("Pragma: public"); header("Expires: 0"); header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); header("Cache-Control: public"); header("Content-Description: File Transfer"); // denne bør du endre til rett type for filen som skal nedlastes. header('Content-Type: application/zip'); // filename="barebra.zip" kan droppes, med denne kan du gi // filen som sendes til brukeren hvilket navn som helst, // og lagre den med ett kryptisk filnavn på serveren header('Content-Disposition: attachment; filename="barebra.zip"'); header("Content-Transfer-Encoding: binary"); // Content-Length kan droppes, men da vet ikke // nettleseren hvor mye som skal lastes ned eller hvor // lang tid som gjenstår header('Content-Length: '.filesize("files/secret.zip")); $fp = fopen("files/secret.zip","r"); fpassthru($fp); fclose($fp); } else { die("Du har ikke tilgang til filen"); } ?> merk at denne metoden ikke egner seg for større filer, da scriptet kræsjer hvis nedlastingen tar lengre tid enn max_execution_time... Endret 5. september 2007 av ventle Lenke til kommentar
Yom Skrevet 8. september 2007 Forfatter Del Skrevet 8. september 2007 Takk for svar! Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå