[PHP] Link genereren naar bestand buiten de webserver map

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Dark Wanderer
  • Registratie: September 2003
  • Laatst online: 11-08-2024
Hallo iedereen,

Ik zit met het volgende probleem

Ik heb een privé website draaien (onder IIS 6.0), op de locatie d:\webdata .
Gebruikers moeten zich inloggen met de besic authentication van iis. Ik roep met php de gebruikersnaam op, en zoek in een mysql db op welke rechten deze gebruiker heeft. Op basis van deze rechten ziet de gebruiker een lijst met bestanden die diegene mag downloaden op een bepaalde plaats op computer van de webserver (dus buiten d:\webdata, bijvoorbeeld c:\vakantiefotos\2005.zip). Ik weet alleen niet hoe ik een link kan plaatsen naar deze locatie. Ik wil het gebruik van IIS virtual directory niet gebruiken. Ik zat te denken om het via ftp te doen, dus dat de link naar ftp://anomynous:1234@mijnwebsite.nl/c:/vakantiefotos\2005.zip gaat, maar dat wil lekker werken in internet explorer vanwege de c:/ in de link. Mijn ftp server draait via Serv-U.

Kan iemand me een duwtje in de juiste richting geven? Ik hoop dat mijn topic uitgebreid genoeg is, ik weet er verder niet zoveel meer informatie over te vertellen.

Groeten

hand·te·ke·ning (de ~ (v.))


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Je kan het bestand in kwestie toch ook via het filesystem openen met PHP en dan vervolgens streamen? Dan heb je geen FTP nodig.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • Dark Wanderer
  • Registratie: September 2003
  • Laatst online: 11-08-2024
-NMe- schreef op woensdag 22 februari 2006 @ 00:30:
Je kan het bestand in kwestie toch ook via het filesystem openen met PHP en dan vervolgens streamen? Dan heb je geen FTP nodig.
Thanx,
Zoiets heb ik nodig, ik wist ff niet meer hoe ik het op moest lossen

Heb deze rakker van internet getrokken en t werkt nu lekker!
PHP:
1
2
3
4
5
6
7
8
9
10
11
<?php
$filename=$docinfo['filename'];
$file_path=$docinfo['path'];
$file=$file_path."/".$filename;
$len=filesize($file);
header("content-type: application/save");
header("content-length: $len");
header("content-disposition: attachment; filename=$filename");
$fp=fopen($file, "r");
fpassthru($fp);
?>

hand·te·ke·ning (de ~ (v.))


Acties:
  • 0 Henk 'm!

  • Paul
  • Registratie: September 2000
  • Laatst online: 20-09 22:51
Zolang je de filename maar niet (NOOIT!!!) uit de POST- of GET-variabelen haalt :) Doe je dat wel dan kunnen ze ieder willekeurig bestand van je computer lezen (mits je IIS-user er leesrechten toe heeft). Ik noem een "C:\Documents and settings\DarkW\My Documents\My Pictures\DarkW en vriendin in spannende poses.jpg" of "C:\bdienst\2005\belastingaangifte2005.prn"

Ik zou denk ik in de URL het primaire ID van een record meegeven. In dat record zoek je de filename op en check je en passant nog even of die gebruiker dat bestand wel mag hebben (zodat ze niet random nummertjes in kunnen vullen om bij bestanden die niet voor hun zijn te komen).

[ Voor 28% gewijzigd door Paul op 22-02-2006 00:50 ]

"Your life is yours alone. Rise up and live it." - Richard Rahl
Rhàshan - Aditu Sunlock


Acties:
  • 0 Henk 'm!

  • Dark Wanderer
  • Registratie: September 2003
  • Laatst online: 11-08-2024
Paul Nieuwkamp schreef op woensdag 22 februari 2006 @ 00:46:
Zolang je de filename maar niet (NOOIT!!!) uit de POST- of GET-variabelen haalt :) Doe je dat wel dan kunnen ze ieder willekeurig bestand van je computer lezen (mits je IIS-user er leesrechten toe heeft). Ik noem een "C:\Documents and settings\DarkW\My Documents\My Pictures\DarkW en vriendin in spannende poses.jpg" of "C:\bdienst\2005\belastingaangifte2005.prn"

Ik zou denk ik in de URL het primaire ID van een record meegeven. In dat record zoek je de filename op en check je en passant nog even of die gebruiker dat bestand wel mag hebben (zodat ze niet random nummertjes in kunnen vullen om bij bestanden die niet voor hun zijn te komen).
Ik heb het opgelost met 3 mysql tabellen

- Users, een lijstje met alle IIS users die in kunnen loggen
- Streamdirs, directory's die met streaming geopend kunnen worden, zoals mijn f:\ partitie voor muziek
- Streamrights, het het id nummer van user en streamdir. Hier kan ik per user aangeven uit welke folders hij mag downloaden.

Ik zoek nu alleen nog script die als je bestanden in een folder laat echo-en, de submappen ook uitgeklapt geeft.

hand·te·ke·ning (de ~ (v.))


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Dark Wanderer schreef op woensdag 22 februari 2006 @ 01:07:
Ik zoek nu alleen nog script die als je bestanden in een folder laat echo-en, de submappen ook uitgeklapt geeft.
Daar kun je (bijvoorbeeld) een recursieve functie voor schrijven.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • Dark Wanderer
  • Registratie: September 2003
  • Laatst online: 11-08-2024
-NMe- schreef op woensdag 22 februari 2006 @ 01:20:
[...]

Daar kun je (bijvoorbeeld) een recursieve functie voor schrijven.
Heb eens lopen zoeken op dit onderwerp, ik denk dat dit nog ff iets boven me pet gaat. :P

Ik trek wel ergens een script vandaan voor dit klusje

Groeten

hand·te·ke·ning (de ~ (v.))


  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 14:28
Bij readdir in de phpmanual staat al een voorbeeld: http://nl3.php.net/manual/en/function.readdir.php In de comments kijken!
Pagina: 1