webForumDet fria alternativet

Låta enbart inloggade användare ladda ned vissa filer

PHP

8 svar · 492 visningar · startad av jme

Medlem sedan maj 20012 237 inlägg
Frågan#1

Jag vill att inloggade användare skall kunna ladda ned vissa filer.
Hur kan jag göra filerna tillgängliga för enbart inloggade personer?

Jag har filerna i en skyddad katalog som man inte kan nå direkt, t ex genom att skriva sökvägen till katalogen i web-läsarens URL-fält.

Medlem sedan mars 20025 907 inlägg
#2

jme skrev:

Jag har filerna i en skyddad katalog som man inte kan nå direkt, t ex genom att skriva sökvägen till katalogen i web-läsarens URL-fält.

Ja då har du ju redan löst problemet. I den koden du använder för att streama ut filerna till besökarna lägger du bara till en koll om besökaren är inloggad (ex. genom att en viss session finns).

Medlem sedan maj 20012 237 inlägg
#3

Vad menar du med att streama ut filerna? :)

Är det skillnad då på att om användaren skriver t ex https://www.address.com/filer/fil.zip

och att servern listar filerna så att man kan ladda ned dem?

Medlem sedan mars 20025 907 inlägg
#4

jme skrev:

Vad menar du med att streama ut filerna? :)

Eftersom filerna inte var åtkommliga direkt från webbläsaren har du väl någon form av script som läser in filen och skickar den till besökaren? Det är det som är streaming.

<?php
if(isset($_SESSION['woo'])){
       header ("Cache-Control: must-revalidate, post-check=0, pre-check=0");
       header ("Content-Type: application/octet-stream");
       header ("Content-Length: " . filesize($theFile));
       header ("Content-Disposition: attachment; filename=$theFileName");
       readfile($theFile);
}?>
Medlem sedan maj 20012 237 inlägg
#5

Just nu har jag inget 100%-gt skydd då användaren kan ladda ned filen om han/hon vet namnet på den.

Medlem sedan maj 20012 237 inlägg
#6

Raden_header ("Content-Type: application/octet-stream");
ger mig:

Fatal error: Call to undefined function: ÊÊÊÊÊÊÊheader() in /Library/WebServer/Documents/jme/test.php on line 10

Medlem sedan maj 20012 237 inlägg
#7

hmm

Nu får jag istället ett felmeddelande att filen inte kan laddas ned för att användaren inte har acces till filen. Kan även vara så att www-servern inte har access till filen.

Medlem sedan maj 20012 237 inlägg
#8

Strul med nedladdning av filer/Apache

Jag har följande html-sida:

<a href="test2.php?file=dslmodems.pdf">dslmodems.pdf</a>

<a href="test2.php?file=jsf-blank.zip">jsf-blank.zip</a>

Nedan har jag innehållet i test2.php


<?php
session_start();
$file = $HTTP_GET_VARS['file'];

$theFile = "C:/Apache/Apache2/htdocs/jme/secret/" . $file;
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Content-Type: application/octet-stream");
header("Content-Disposition: attachment; filename=$file");
readfile($theFile);
exit();
?>

Om jag väljer en av länkarna så får jag möjligheten att spara filen.
Det funkar bra.

Trycker jag däremot på en länk och sen trycker på "avbryt" så skiter sig Apache. Försöker jag nå sidan som visade länkarna så laddas sidan inte längre. Jag måste starta om Apache för att det ska funka igen.

Inte ens http://localhost funkar då.

Btw, katalogen secret är skyddad med htaccess.

Medlem sedan juli 200255 inlägg
#9

jme skrev:

Om jag väljer en av länkarna så får jag möjligheten att spara filen.
Det funkar bra.

Trycker jag däremot på en länk och sen trycker på "avbryt" så skiter sig Apache. Försöker jag nå sidan som visade länkarna så laddas sidan inte längre. Jag måste starta om Apache för att det ska funka igen.

Inte ens http://localhost funkar då.

Btw, katalogen secret är skyddad med htaccess.

Jag har samma problem, hur löste du detta?

279 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
138 ms — deklarationer (db)
0 ms — hämta statistik (cache)
138 ms — hämta tråd, inlägg och bilagor (db)
130 ms — ändringar (db)