Gå til innhold

Nedlasting - ikke åpning av linkinnhold


Anbefalte innlegg

Videoannonse
Annonse
<?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 av vargefaret
Lenke til kommentar

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

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

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...