Haha, nu när jag trodde allt skulle fungera så har det blivit ett annat knäppt fel. När jag klickar på länken till test.pdf så öppnas den i webbläsaren och en massa konstiga tecken skrivs ut. Hela webbläsaren fylls med dessa tecken. Har även provat på en annan dator.
Om jag istället provar att länka till index.php så fungerar mitt skript som säger att filen inte existerar.
Antar att jag kanske glömt någon header som krävs för att få någon slags decoding att fungera?
Länk:
<a href="test.php?file=test.pdf" target="_blank">File</a><br>
<a href="test.php?file=test2.pdf" target="_blank">Fil2</a><br>
<a href="test.php?file=index.php" target="_blank">INDEX</a>
test.php:
<?php
session_start();
$basepath = 'doc/protected/';
$file = preg_replace("/[^a-zA-Z0-9._ -]/", "", str_replace(" ", "_", $_GET['file'])); // Ändrar " " till "_" och tillåter bara a-z A-Z 0-9 . _ och - i filnamn
// Verifiera att man är inloggad
if(!$_SESSION['auth']) {
die('Du måste logga in för att ladda ned filer.');
}
$pdf = $basepath . $file;
// Kontrollera att filen existerar.
if(!file_exists($pdf)) {
die("Tyvärr finns inte denna fil tillgänglig.");
}
// Skicka headers
header('Content-Type: application/pdf');
header('Content-Disposition: attachment; filename=' . $file);
// Hämta filen
readfile($pdf);
?>
Alltså: test.pdf och test2.pdf öppnas i webbläsaren med enbart en massa konstiga tecken, det skrivs ut i form av text. Alltså inte som om det vore en pdf. index.php ger felmeddelande.
Detta felmeddelande ser för övrigt ut såhär: Tyvärr finns inte denna fil tillgänglig. Kan det ha något att göra med problemet jag har med pdf-filen?