Avatar billede step Nybegynder
24. april 2002 - 23:49 Der er 7 kommentarer og
1 løsning

Fler-brugersystem med hver deres mappe.

Hej Eksperter!

Jeg har et problem.

Jeg vil gerne have et system på mit website som er således:

- Der kan oprettes mere end 1 bruger, ja mange.

- Brugerne får hver deres mappe (dir).

- Brugerne skal kunne uploade alle slags filer til deres egen mappe.

- Der skal kunne linkes fra deres website til den uploadede fil.

Er der nogen som kender sådan et script?
Eller er der nogen som vil hjælpe mig med at lave en?

Det behøves IKKE at være avanceret, men bare sådan at det nogenlunde opfylder mine behov.

Der gives 200 point!

Venlig Hilsen Klaus!
Avatar billede woolbox Nybegynder
25. april 2002 - 00:14 #1
Lytter med ;o)
Avatar billede rune_c Nybegynder
25. april 2002 - 00:43 #2
Det første med at oprette brugere skal du lave et almindeligt brugersystem med en db. Samtidigt skal den så oprette en mappe på din server. Den kunne evt hedde det samme som brugernes id. Til oprettelse af mapper skal du bruge FSO.

Først skal FSO startes:

Dim fso
Set fso = Server.CreateObject("Scripting.FileSystemObject")

Når en bruger opretter sig skal der også oprettes en mappe:

Set fc = fso.CreateFolder("C:\users\" & [hans id])

For at uploade noget skal du bruge et eller andet upload komponent. Hvad har du tilrådighed?

Når du så skal have filer og mapper vist skal brugeren logge sig ind og du henter så indholdet af den mappe.

Dim fc, folders, files, f1
Set fc = fso.GetFolder("C:\users\" & [hans_id])

Set folders = fc.SubFolders
Set files = fc.Files

For Each f1 in folders
  MsgBox f1.name & "&nbsp;&nbsp;" & f1.size & "&nbsp;bytes<br>"
Next

For Each f1 in files
  MsgBox f1.name & "&nbsp;&nbsp;" & f1.size & "&nbsp;bytes<br>"
Next

/Rune
Avatar billede rune_c Nybegynder
25. april 2002 - 00:44 #3
hov det skal lige være server-scripting....

For Each f1 in folders
  Response.Write f1.name & "&nbsp;&nbsp;" & f1.size & "&nbsp;bytes<br>"
Next

For Each f1 in files
  Response.Write f1.name & "&nbsp;&nbsp;" & f1.size & "&nbsp;bytes<br>"
Next
Avatar billede step Nybegynder
26. april 2002 - 14:41 #4
Ok. Men hvordan laver man et brugersystem med en db fil? Det skal også være sådan at man kan logge ind i brugersystemet. Og hvordan får jeg det FSO system ind i oprettelsen.

Jeg har et upload komponent som er afprøvet og virker 100%.
Avatar billede rune_c Nybegynder
26. april 2002 - 22:10 #5
jeg har lavet noget grundlæggende til dig som du kan arbejde ud fra. Du må bare spørge hvis det er noget mere du skal have hjælp til...

Nedenstående kræver at du i den mappe hvor du lægger default.asp filen har en mappe der hedder users. Dette kan du selvfølgelig bare ændre i koden. Det kræver også en Access database. Den database som dette script er bygget til kan du hente på http://isd.jaha.dk/db.mdb som også skal ligger i samme mappe som default.asp.

-- default.asp start --

<%

Option Explicit

dim mode, uid, pwd, conn, tmp, fso, fc, folders, files, f1

mode = Request.QueryString()

if mode = "0" then
    'Oprettelse af bruger
   
    uid = trim(Request.Form("uid"))
    pwd = trim(Request.Form("pwd"))

    set conn = Server.CreateObject("ADODB.Connection")
    conn.Open("DRIVER={Microsoft Access Driver (*.mdb)};DBQ="& Server.MapPath("db.mdb"))

    set tmp = conn.Execute("Select * from users where username = '"& uid &"'")

    if tmp.EOF then
        ' Indsæt data i databasen
        conn.Execute("Insert into users (username,password) VALUES ('"& uid &"','"& pwd &"')")
       
        'Oprette mappen med FSO

        set fso = Server.CreateObject("Scripting.FileSystemObject")

        set tmp = conn.Execute("select @@IDENTITY as id from users")       

        fso.CreateFolder(Server.MapPath("users\"& tmp("id")))

        'Bruger oprettet
    else
        'Bruger findes
       
        Response.Redirect("default.asp")

    end if
elseif mode = "1" then
    'Login

    uid = trim(Request.Form("uid"))
    pwd = trim(Request.Form("pwd"))

    set conn = Server.CreateObject("ADODB.Connection")
    conn.Open("DRIVER={Microsoft Access Driver (*.mdb)};DBQ="& Server.MapPath("db.mdb"))

    set tmp = conn.Execute("Select * from users where username = '"& uid &"' and password = '"& pwd &"'")

    if tmp.EOF then
        'Username og/eller password ikke korrekt!

        Response.Redirect("default.asp")

    end if

    set fso = Server.CreateObject("Scripting.FileSystemObject")
   
    Set fc = fso.GetFolder(Server.MapPath("users\" & tmp("id")))
   
    Set folders = fc.SubFolders
    Set files = fc.Files
   
    For Each f1 in folders
        Response.Write f1.name & "&nbsp;&nbsp;" & f1.size & "&nbsp;bytes<br>"
    Next

    For Each f1 in files
        Response.Write f1.name & "&nbsp;&nbsp;" & f1.size & "&nbsp;bytes<br>"
    Next

elseif mode = "2" then
    'Opret bruger
%>
<html>
<head>
<title>Opret bruger</title>
</head>
<body>
<form name="frm" method="post" action="default.asp?0">
<table cellspacing="0px" cellpadding="0px" border="0px">
<tr>
    <td width="100px">Brugernavn:</td>
    <td><input type="text" name="uid" style="width: 150px;"></td>
</tr>
<tr>
    <td>Password:</td>
    <td><input type="password" name="pwd" style="width: 150px;"></td>
</tr>
<tr>
    <td style="height: 10px;"></td>
</tr>
<tr>
    <td colspan="2" align="center"><input type="submit" value="Opret"></td>
</tr>
</table>
</form>
<a href="?">Allerede oprettet??</a>
</body>
</html>

<%

else
    'Login
%>
<html>
<head>
<title>Login</title>
</head>
<body>
<form name="frm" method="post" action="default.asp?1">
<table cellspacing="0px" cellpadding="0px" border="0px">
<tr>
    <td width="100px">Brugernavn:</td>
    <td><input type="text" name="uid" style="width: 150px;"></td>
</tr>
<tr>
    <td>Password:</td>
    <td><input type="password" name="pwd" style="width: 150px;"></td>
</tr>
<tr>
    <td style="height: 10px;"></td>
</tr>
<tr>
    <td colspan="2" align="center"><input type="submit" value="Login"></td>
</tr>
</table>
</form>
<a href="?2">Ikke oprettet??</a>
</body>
</html>
<%
end if
%>

-- default.asp end --


Her er et link til referencen for FSO. Her kan du se hvordan du åbner, sletter, opretter filer og mapper.

http://msdn.microsoft.com/library/en-us/script56/html/fsooriScriptingRun-TimeReference.asp

/Rune
Avatar billede step Nybegynder
27. april 2002 - 17:14 #6
Hej Rune C!

Tusind tak for hjælpen!

Jeg har rodet en del med det, men har ét problem.

Det upload-script jeg har kan jeg ikke få viklet ind i det script du har lavet. Ved du hvor jeg kan få et script der passer til? Kan du lave et upload script til?

Hilsen Klaus!
Avatar billede rune_c Nybegynder
27. april 2002 - 20:37 #7
prøv lige at sende dit upload script til isd@mail.dk
Avatar billede rune_c Nybegynder
29. april 2002 - 19:31 #8
-- default.asp start --

<%

Option Explicit

dim mode, uid, pwd, conn, tmp, fso, fc, folders, files, f1

mode = Request.QueryString()

if mode = "0" then
    'Oprettelse af bruger
   
    uid = trim(Replace(Request.Form("uid"),"'"," "))
    pwd = trim(Replace(Request.Form("pwd"),"'"," "))

    set conn = Server.CreateObject("ADODB.Connection")
    conn.Open("DRIVER={Microsoft Access Driver (*.mdb)};DBQ="& Server.MapPath("db.mdb"))

    set tmp = conn.Execute("Select * from users where username = '"& uid &"'")

    if tmp.EOF then
        ' Indsæt data i databasen
        conn.Execute("Insert into users (username,password) VALUES ('"& uid &"','"& pwd &"')")
       
        'Oprette mappen med FSO

        set fso = Server.CreateObject("Scripting.FileSystemObject")

        set tmp = conn.Execute("select @@IDENTITY as id from users")       

        fso.CreateFolder(Server.MapPath("users\"& tmp("id")))

        'Bruger oprettet
    else
        'Bruger findes
       
        Response.Redirect("default.asp")

    end if
elseif mode = "1" then
    'Login

    uid = trim(Replace(Request.Form("uid"),"'"," "))
    pwd = trim(Replace(Request.Form("pwd"),"'"," "))

    set conn = Server.CreateObject("ADODB.Connection")
    conn.Open("DRIVER={Microsoft Access Driver (*.mdb)};DBQ="& Server.MapPath("db.mdb"))

    set tmp = conn.Execute("Select * from users where username = '"& uid &"' and password = '"& pwd &"'")

    if tmp.EOF then
        'Username og/eller password ikke korrekt!

        Response.Redirect("default.asp")

    end if

    Session("loggin") = true
    Session("id") = tmp("id")

    Response.Redirect "default.asp?3"

elseif mode = "2" then
    'Opret bruger
%>
<html>
<head>
<title>Opret bruger</title>
</head>
<body>
<form name="frm" method="post" action="default.asp?0">
<table cellspacing="0px" cellpadding="0px" border="0px">
<tr>
    <td width="100px">Brugernavn:</td>
    <td><input type="text" name="uid" style="width: 150px;"></td>
</tr>
<tr>
    <td>Password:</td>
    <td><input type="password" name="pwd" style="width: 150px;"></td>
</tr>
<tr>
    <td style="height: 10px;"></td>
</tr>
<tr>
    <td colspan="2" align="center"><input type="submit" value="Opret"></td>
</tr>
</table>
</form>
<a href="?">Allerede oprettet??</a>
</body>
</html>

<%
elseif mode = "3" then

    if Session("id") = "0" or Session("loggin") <> true then
        Response.Redirect "default.asp"
    end if

    set fso = Server.CreateObject("Scripting.FileSystemObject")
   
    Set fc = fso.GetFolder(Server.MapPath("users\" & Session("id")))
   
    Set folders = fc.SubFolders
    Set files = fc.Files
   
    For Each f1 in folders
        Response.Write "Mappe: "& f1.name & "&nbsp;&nbsp;" & f1.size & "&nbsp;bytes<br>"
    Next

    For Each f1 in files
        Response.Write "Fil: "& f1.name & "&nbsp;&nbsp;" & f1.size & "&nbsp;bytes<br>"
    Next

    Response.Write "<br>"
    Response.Write "<form METHOD=""Post"" ENCTYPE=""multipart/form-data"" ACTION=""outputFile.asp"" id=""form3"" name=""form3"">"
    Response.Write "<input TYPE=""file"" NAME=""blob""><br>"
    Response.Write "<input TYPE=""submit"" value=""Upload billede"" NAME=""Enter"">"
    Response.Write "<br><br><a href=""?4"">Logout</a>"

elseif mode = "4" then
    ' Logout

    Session("id") = "0"
    Session.abandon
    Response.Redirect "default.asp"

else
    'Login
%>
<html>
<head>
<title>Login</title>
</head>
<body>
<form name="frm" method="post" action="default.asp?1">
<table cellspacing="0px" cellpadding="0px" border="0px">
<tr>
    <td width="100px">Brugernavn:</td>
    <td><input type="text" name="uid" style="width: 150px;"></td>
</tr>
<tr>
    <td>Password:</td>
    <td><input type="password" name="pwd" style="width: 150px;"></td>
</tr>
<tr>
    <td style="height: 10px;"></td>
</tr>
<tr>
    <td colspan="2" align="center"><input type="submit" value="Login"></td>
</tr>
</table>
</form>
<a href="?2">Ikke oprettet??</a>
</body>
</html>
<%
end if
%>

-- default.asp end --

-- outputfile.asp start --

<%
Response.Expires=0
Response.Buffer = TRUE
Response.Clear
byteCount = Request.TotalBytes
RequestBin = Request.BinaryRead(byteCount)
Dim UploadRequest
Set UploadRequest = CreateObject("Scripting.Dictionary")
BuildUploadRequest(RequestBin)
contentType = UploadRequest.Item("blob").Item("ContentType")
filepathname = UploadRequest.Item("blob").Item("FileName")
filename = Right(filepathname,Len(filepathname)-InstrRev(filepathname,"\"))
value = UploadRequest.Item("blob").Item("Value")
Set ScriptObject = Server.CreateObject("Scripting.FileSystemObject")
'pathEnd = Len(Server.mappath(Request.ServerVariables("PATH_INFO")))-14
'Response.Write (Request.ServerVariables("PATH_INFO"))
Set MyFile = ScriptObject.CreateTextFile(Server.mappath("users/"& Session("id") &"/"&filename))
For i = 1 to LenB(value)
    MyFile.Write chr(AscB(MidB(value,i,1)))
Next
MyFile.Close    %>

<!--#include file="upload.asp"-->

<%
Response.Redirect "default.asp?3"
%>

-- outputfile.asp end --

upload.asp er der ikke ændret ved.

upload.asp og outputfile.asp skal ligge i samme bibliotek som default.asp.
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester