24. januar 2004 - 22:12Der er
34 kommentarer og 2 løsninger
Login beskyttelses af filer f.eks. .doc .pdf
Jeg har et site hvor det kun er brugere der er oprettet der må hente bestemte filer. Jeg har ingen problemer med almindelige aspsider hvor jeg bare sætter ”<!--#include virtual="login.asp"-->” ind og så har brugerne adgang. Men det kan man jo ikke sætte ind en fil eller en mappe. Sitet køre på en Microsoft-IIS/5.0 server med en Accessdatabase
Så vidt jeg ved er det ikke muligt dine ligger som links på en asp side hvor dine medlemmer logger ind og det er også fint nok men hvis nogen finder på at linke til dine filer kan alle få fat i dem :o( Men hvis der er en der har en løsning der virker er jeg med på en lytter :o)
Når folk vil downloade filerne, skjuler du deres sti ved at udskrive filerne direkte til browseren. På den måde downloade filerne direkte, uden at afsløre hvor de ligger.
Det man typisk gør at at ligge filerne i en folder som ikke kan se af browseren, men af den ASP kode som køre. Så kan man nemlig ikke linke direkte til filerne med det HTML link. Så laver man en fil som thesurfer har vist og et kalder den eksvis download.asp og så man man give et filnavn til den download.asp?fil=aaa.pdf
download.asp filen kan du så beskytte med: <!--#include virtual="login.asp"-->”
Hvordan skjuler jeg så en mappe så browseren ikke kan den? og vil Google ikke finde filerne med et link til den mappe de ligger og køre uden om "downloadfil.asp?file=q1c.dwg"
Man ligger filerne i en folder som ligger før wwwroot eller samme med wwwroot:
c:\inetpub\filer c:\inetpub\wwwroot
Så er det kun ASP koden på den sever som kan finde filerne. Google kan ikke finde dem. Der er også flere web-hoteler med respect for deres brugere som har en folder sat op på den måde til database filer og andre filer man ikke bare lige må få fingre i.
Ja du kan dele point, på flere måder, hvis vi begger svare kan du markere begge væres svar og acceptere dem. Eller trykke advanceret og skrive et point tal til hver.
Set objStream = Server.CreateObject("ADODB.Stream") objStream.Open objStream.Type = adTypeBinary objStream.LoadFromFile strFilePath
strFileType = lcase(Right(strFileName, 4))
' Feel Free to Add Your Own Content-Types Here Select Case strFileType Case ".pdf" ContentType = "application/pdf" Case ".asf" ContentType = "video/x-ms-asf" Case ".avi" ContentType = "video/avi" Case ".doc" ContentType = "application/msword" Case ".zip" ContentType = "application/zip" Case ".xls" ContentType = "application/vnd.ms-excel" Case ".gif" ContentType = "image/gif" Case ".jpg", "jpeg" ContentType = "image/jpeg" Case ".wav" ContentType = "audio/wav" Case ".mp3" ContentType = "audio/mpeg3" Case ".mpg", "mpeg" ContentType = "video/mpeg" Case ".rtf" ContentType = "application/rtf" Case ".htm", "html" ContentType = "text/html" Case ".asp" ContentType = "text/asp" Case Else 'Handle All Other Files ContentType = "application/octet-stream" End Select
Response.AddHeader "Content-Disposition", "attachment; filename= strFileName Response.AddHeader "Content-Length", strFileSize ' In a Perfect World, Your Client would also have UTF-8 as the default ' In Their Browser Response.Charset = "UTF-8" Response.ContentType = ContentType
Ok hvis nu min skjulte mappe hedder scripts/opgaver/folder.pdf hvordan skal linket så skrives <a href="scripts/opgaver/folder.doc">Folder</a> Jeg er ik så hurtig
Du kunne putte download.asp filen i /download mappen. Så tror folk at dine filer ligger i /download mappen. Dit link kunne så være <a href="/download.asp?fil=folder.pdf">download folder.pdf</a>
Dit script der ligger i /download/download.asp læser "C:\inetpub\filer\" & Request.QueryString("fil"), som så er: "C:\inetpub\scripts\opgaver\folder.pdf"
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.