January 21, 2002
Hej!
jag har gjort en hemsida där man kan logga in, som inloggad kan man bl.a. ladda upp filer och det funkar bra. Grejen är att filerna läggs i en mapp som är tillänglig från internet. Jag skulle vilja göra så att filerna åtkomliga bara när man tex är inloggad. Hur ska detta göras??
Jag har testat att lägga filerna man laddar upp i en mapp som inte är direkt tillgänglig från internet, men då kan jag inte komma åt filerna istället...
Att lösa det med htaccess är inte helle aktuellt då det blir för krångligt för den som är inloggad att hålla på med lösenord och användarnamn fler ggr.
jag kör WinXp med Apache 2.0.39 och PHP 4.2.2.
tack på förhand för alla smarta förslag 🙂 // Anders
November 1, 2002
Lägg dina filer "utanför" webbplatsen och skapa ett PHP-script som tar fram dem beroende på om man är inloggad. Spara filnamn och "Content-type" i en databas. Ha ett ID associerat med varje fil och anropa scriptet med
visafil.php?id=whatever
Såhär kanske scriptet kan se ut...
<?
// sök igenom databasen och hitta filen med id whatever och lägg information i variablerna $filnamn och $contenttype.
if ($inloggad)
{
$f = fopen($filnamn, "rb");
header("Content-type: " . $contenttype);
header("Content-Disposition: inline; filename = " . $filnamn);
header("Content-length: " . strval(filesize($filnamn)));
fpassthru($f);
fclose($f);
}
?>
I det script som tar emot de uppladdade filerna får man "Content-type" av
<?
if (is_uploaded_file($fil))
{
$contenttype = $fil_type;
}
?>
Hoppas det hjälper. :bgrin:
January 21, 2002
Tack så mycket för svaret Marty, det verkar funka till viss del. Men alla filer blir korrupta (jag har användt den kod du gjorde nästan rakt av)... Har testat med lite olika format och allt har hittils blivit fel :((
kolla denna t.ex. (en bild med ett mönster)
http://62.95.71.164/test.php
Jag har kikat på php.net och även testat med funktionen 'readfile($filnamn)' men det blir samma sak. Vet nån vad det kan bero på??
November 1, 2002
Jag har aldrig provat det här själv. Sök efter fpassthru på php.net så kanske du får några tips.
I header-raden där det står Content-Dispositon och filename så ska filnamnet vara inom citationstecken
... filename = " . (""" . $filnamn . """)
Vet inte om det löser några problem...
January 21, 2002
Tyvärr gjorde det ingen skillnad. Jag har suittit hela helgen och kollat php.net och googlat men hittat nån anledning till att filerna blir korrupta, verkar jättekonstigt.
Eftersom jag inte kommer på vad felet kan va har jag börjat fundera på andra lösningar.
Skulle det funka om man har en .htaccess-fil som varje gång nån loggar ändras så att dens ip som loggar blir godkänt och att access på så sätt tillåts. Och när personen loggar ut tas det bort. Eller skulle det vara en stor säkerhetsrisk??
Eller finns det möjligtvis ett helt annat sätt annat skydda filerna??
Alla förslag mottages tacksamt!
// Anders
May 8, 2001
Vet inte vad du kör för webbserver men om den stödjer Java så är det inte så svårt att skriva en Servlet som håller ordningn på inloggningar med hjälp av sessioner. Den kan sen skicka filen till användaren. Om du kan köra Java så hjälper jag gärna till.
[Edit] Nu vet jag vad du använder för webbserver, var ju bara att läsa hela meddelandet... 😉
Om du vill använda Java så behöver du installera Tomcat för att det ska fungera.
Desktop: Gigabyte GA-MA770-DS3 | AMD Phenom II 955 BE | 8GB PC6400 | Samsung 1TB + 500GB | Powercolor HD3870
3DMark 2006: 11932 3DMark Vantage: P5137
Laptop: Macbook Pro 2012 | 8GB | Samsung 830 128GB SSD
HTPC: Mac Mini | 3GB | 500GB
January 21, 2002
jonaz wrote: Vet inte vad du kör för webbserver men om den stödjer Java så är det inte så svårt att skriva en Servlet som håller ordningn på inloggningar med hjälp av sessioner. Den kan sen skicka filen till användaren. Om du kan köra Java så hjälper jag gärna till.
[Edit] Nu vet jag vad du använder för webbserver, var ju bara att läsa hela meddelandet... 😉
Om du vill använda Java så behöver du installera Tomcat för att det ska fungera.
Tack, men jag har redan löst det här med .htaccess.
Men jag har en fråga rörande Java om du gärna får hjälpa mig med. 🙂
https://www.nordichardware.com/forum/viewtopic.php?t=41925&sid=8913f619a77e298ebbed81dc36d5ec67
May 8, 2001
: : Anders : : wrote: [quote=jonaz]Vet inte vad du kör för webbserver men om den stödjer Java så är det inte så svårt att skriva en Servlet som håller ordningn på inloggningar med hjälp av sessioner. Den kan sen skicka filen till användaren. Om du kan köra Java så hjälper jag gärna till.
[Edit] Nu vet jag vad du använder för webbserver, var ju bara att läsa hela meddelandet... 😉
Om du vill använda Java så behöver du installera Tomcat för att det ska fungera.
Tack, men jag har redan löst det här med .htaccess.
Men jag har en fråga rörande Java om du gärna får hjälpa mig med. 🙂
https://www.nordichardware.com/forum/viewtopic.php?t=41925&sid=8913f619a77e298ebbed81dc36d5ec67
Hmm... Kollade på ditt andra inlägg, rörde JavaScript och inte Java.
Desktop: Gigabyte GA-MA770-DS3 | AMD Phenom II 955 BE | 8GB PC6400 | Samsung 1TB + 500GB | Powercolor HD3870
3DMark 2006: 11932 3DMark Vantage: P5137
Laptop: Macbook Pro 2012 | 8GB | Samsung 830 128GB SSD
HTPC: Mac Mini | 3GB | 500GB
1 Guest(s)