vargefaret Skrevet 21. desember 2007 Forfatter Del Skrevet 21. desember 2007 HTML: <a href="http://www.mittdomene.no/mappe1/test/download.php?fil=navn" ... PHP: $path_2_file_folder = "test/"; Lenke til kommentar
vargefaret Skrevet 21. desember 2007 Forfatter Del Skrevet 21. desember 2007 Ikke f*** om det funker, gitt... Merkelige greier... Tar sjansen på det første scriptet, jeg... Men takk for all hjelpen i hvert fall..! Lenke til kommentar
vargefaret Skrevet 21. desember 2007 Forfatter Del Skrevet 21. desember 2007 (endret) <?php // Filnavn $pdf_filpath_raw = $_GET["fil"]; /* $filnavn = basename($pdf_filpath); $fil = explode(".", $filnavn); $filendelse = strtolower( $fil[count($fil)-1] ); unset($fil); Avslutt skriptkjøring hvis $pdf_filnavn ikke er et gyldig filnavn if($filendelse!='pdf' || !file_exists($pdf_filpath)) die("PDF-filen finnes ikke...[{$pdf_filpath}]"); */ $path_2_file_folder = "test/"; $available_files['1'] = 'Navn.pdf'; $available_files['dok'] = 'dokumentasjon.pdf'; $available_files['test'] = 'NavnTest.pdf'; $pdf_filpath = $path_2_file_folder . $available_files[$pdf_filpath_raw]; if(!file_exists($pdf_filpath)) die("PDF-filen finnes ikke...[{$pdf_filpath}]"); $len = filesize($pdf_filpath); // Gi nettleseren beskjed om at en pdf-fil sendes og SKAL lastes ned, ikke vises i nettleseren header("Content-Description: File Transfer"); header("Content-Type: application/force-download"); header("Content-Disposition: attachment; filename=".$filnavn.";"); header("Content-Transfer-Encoding: binary"); header("Content-Length: ".$len); // Send (innholdet i) filen @readfile($pdf_filpath); // Avslutt kjøring av skript exit; ?> Ender kun med å ville laste ned selve denne *.php-filen... Anyone??? Endret 21. desember 2007 av vargefaret Lenke til kommentar
PHPdude Skrevet 22. desember 2007 Del Skrevet 22. desember 2007 Med mindre du har noen mer spesielle behov ser ikke jeg ikke hvorfor du skal dra PHP inn i saken, det enkleste vil nok å være å stille inne webserveren, og siden du nevnte Linux så regner jeg med det er enn Apache-server og da kan du rett og slett opprette en .htaccess-fil hvor du putter følgende: <FilesMatch "\.(pdf)$"> Header set Content-Disposition '"attachment; filename="downloaded.pdf"' </FilesMatch> Da vil alle pdf-filer i den mappen (og undermapper) du opprettet .htaccess-filen bli sendt med Content-Disposition:attachment-headeren og vil "tvinge" nettleseren til å laste ned filen. 1. opprett en fil et sted på din egen maskin med navnet ".htaccess", skrevet nøyaktig sånn. 2. kopier koden min ovenfor inn i filen 3. kopier filen over til serveren via FTP eller hva du nå pleier å bruke. Det tryggeste er nok å kopiere .htaccess-filen til den samme mappen som PDF-filene dine ligger i. 4. Sjekk om det fungerer. http://httpd.apache.org/docs/2.2/mod/mod_headers.html http://httpd.apache.org/docs/2.2/howto/htaccess.html Lenke til kommentar
grimjoey Skrevet 22. desember 2007 Del Skrevet 22. desember 2007 enkleste du kan gjøre for å øke sikkerheten er å hardkode en mappe som er eneste tillatte nedlastningssti. så henter du basename() fra input. last.php <?php // Tillatte nedlastningsmappe $tillatt = 'pdf-mappe'; // Ikke avslutt med "/" // Filnavn $pdf_filpath = $_GET["fil"]; $filnavn = basename($pdf_filpath); $fil = explode(".", $filnavn); $filendelse = strtolower( $fil[count($fil)-1] ); unset($fil); Avslutt skriptkjøring hvis $pdf_filnavn ikke er et gyldig filnavn if($filendelse!='pdf' || !file_exists($pdf_filpath)) die("PDF-filen finnes ikke...[{$pdf_filpath}]"); $len = filesize($pdf_filpath); // Gi nettleseren beskjed om at en pdf-fil sendes og SKAL lastes ned, ikke vises i nettleseren header("Content-Description: File Transfer"); header("Content-Type: application/force-download"); header("Content-Disposition: attachment; filename=".$filnavn.";"); header("Content-Transfer-Encoding: binary"); header("Content-Length: ".$len); // Send (innholdet i) filen @readfile($tillatt.'/'.$filnavn); // Avslutt kjøring av skript exit; ?> 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å