1) Lav en database med de brugeroplysninger du skal brug. Herunder brugernavn og password
2) Lav en formular til indtasting af brugernavn og password
3) Lav en side der behandler de indtastede brugerinfo. Der skal indgå noget i stil med
sql = "select brugerid from brugertabel where brugernavn = _indtastet_brugernavn_ and password = _indtastet_password_ set rs = db.execute(sql) if not rs.eof session("login") = true session("brugerid") = rs("brugerid") else response.redirect "nologin.asp" end if
4) På hver side der skal være login beskyttet tilføjer du følgende kode i toppen: if session("login") <> true then response.redirect "login.asp" response.end end if
Jamen forstår ikke helt alt det kode der - (er jo ny til ASP) men den kode der får man der et login billede frem INDEN man kommer ind til selve Forummet/Kalenderen vi vil have?
Ja, det er muligt. Via FSO kan man læse tekstfiler, også er det bare at løbe den fil i gennem og finde en match. Jeg har lavet en kode til det tidligere her på E, så jeg prøver om jeg kan finde den frem...
Kunne ikke finde siden, så jeg biksede dette sammen:
Lav en fil som indeholder brugere/pass stående sådan her: user1;pass1 user2;pass2
<% if Request.querystring("mode") = "login" then set fso = server.createobject("scripting.filesystemobject") set fil = fso.opentextfile(server.mappath("brugere.txt"), 1) user = request.form("user") pass = request.form("pass") Found = false do while (not fil.AtEndOfStream) or (not Found) arr = split(fil.readline & "", ";") if uBound(arr)=1 then if (arr(0) = user) and (arr(1) = pass) then Found = true session("login") = true end if end if loop if Found then response.redirect "DuErLoggetInd.asp" else response.redirect "ForkertLogin.asp" end if end if %> <form action="DenneSide.asp?mode=login" metohd="post"> <input type="text" name="user"> <input type="password" name="pass"> <input type="submit" value="login"> </form>
Af sikkerhedshensyn er det nok en ide at lave txt filen som en ASP fil i stedet, så den ikke kan downloades, og derved give mulighed for at se alle bruger/pass:
[brugere.asp] <% 'user1;pass1 'user2;pass2 %>
Bemærk at der skal være ' foran. Brug så denne kode i stedet: <% if Request.querystring("mode") = "login" then set fso = server.createobject("scripting.filesystemobject") set fil = fso.opentextfile(server.mappath("brugere.txt"), 1) user = replace(request.form("user"),"'","") pass = replace(request.form("pass"),"'","") Found = false do while (not fil.AtEndOfStream) or (not Found) line = replace(fil.readline&"", "'", "") arr = split(line, ";") if uBound(arr)=1 then if (arr(0) = user) and (arr(1) = pass) then Found = true session("login") = true end if end if loop if Found then response.redirect "DuErLoggetInd.asp" else response.redirect "ForkertLogin.asp" end if end if %>
Hey Fennec - Takker MANGE gange for din hjælp, men nu har jeg gjort nøjagtigti som der står men nu kan man bare logge ind uden at skrive noget eller noget - Det lige som om den ikke går ned og tjekker i den der Brugere.asp fil jeg er lavet?
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD> <TITLE> New Document </TITLE> <META NAME="Generator" CONTENT="EditPlus"> <META NAME="Author" CONTENT=""> <META NAME="Keywords" CONTENT=""> <META NAME="Description" CONTENT=""> </HEAD>
<BODY>
<% if Request.querystring("mode") = "login" then set fso = server.createobject("scripting.filesystemobject") set fil = fso.opentextfile(server.mappath("brugere.asp"), 1) user = replace(request.form("user"),"'","") pass = replace(request.form("pass"),"'","") Found = false do while (not fil.AtEndOfStream) or (not Found) line = replace(fil.readline&"", "'", "") arr = split(line, ";") if uBound(arr)=1 then if (arr(0) = user) and (arr(1) = pass) then Found = true session("login") = true end if end if loop if Found then response.redirect "DuErLoggetInd.asp" else response.redirect "ForkertLogin.asp" end if end if %> <form action="DenneSide.asp?mode=login" metohd="post"> <input type="text" name="user"> <input type="password" name="pass"> <input type="submit" value="login"> </form>
Ja kan godt se det nu :D Men kan stadig ikke få det til at virke .. hmmm
Kode:
<% if Request.querystring("mode") = "login" then set fso = server.createobject("scripting.filesystemobject") set fil = fso.opentextfile(server.mappath("brugere.asp"), 1) user = replace(request.form("user"),"'","") pass = replace(request.form("pass"),"'","") Found = false do while (not fil.AtEndOfStream) or (not Found) line = replace(fil.readline&"", "'", "") arr = split(line, ";") if uBound(arr)=1 then if (arr(0) = user) and (arr(1) = pass) then Found = true session("login") = true end if end if loop if Found then response.redirect "DenneSide.asp" else response.redirect "test.asp" end if end if %> <form action="test.asp?mode=login" metohd="post"> <input type="text" name="user"> <input type="password" name="pass"> <input type="submit" value="login"> </form>
Så må vi til at debugge løkken. Smid en write ind og en end efter løkken:
do while (not fil.AtEndOfStream) or (not Found) line = replace(fil.readline&"", "'", "") response.write line &"<br>" arr = split(line, ";") if uBound(arr)=1 then if (arr(0) = user) and (arr(1) = pass) then Found = true session("login") = true end if end if loop response.write "!!SLUT!!" response.end
Så må vi jo smide noget fejl håndtering ind: if Request.querystring("mode") = "login" then on error resume next set fso = server.createobject("scripting.filesystemobject") set fil = fso.opentextfile(server.mappath("brugere.asp"), 1) user = replace(request.form("user"),"'","") pass = replace(request.form("pass"),"'","") Found = false do while (not fil.AtEndOfStream) or (not Found) line = replace(fil.readline&"", "'", "") arr = split(line, ";") if uBound(arr)=1 then if (arr(0) = user) and (arr(1) = pass) then Found = true session("login") = true end if end if loop if err.number <> 0 then response.write err.description else response.write "Alt OK." end if on error goto 0 response.end if Found then response.redirect "DenneSide.asp" else response.redirect "test.asp" end if end if
Ok. Det var så en lille fejl. Jeg tog alt koden og smed den ud på mit eget site, og fandt fejlen. Method er stavet forkert: <form action="test.asp?mode=login" metohd="post">
Skal selvfølgelig være: <form action="test.asp?mode=login" method="post">
Fennec TAKKER RIGTIG MANGE GANGE og du får 100% pointene Men et lille problem - Når vi taster forkert brugernavn og password kommer den bare med "siden kan ikke vises"? nogen ide til hvad det kan være?
Har du hentet min kode?? Der har jeg lavet fejlbeskeder når man indtaster forkerte loginoplysninger, samt går ind på forum.asp uden at have logget ind.
Har du logget ind og vil teste igen så lav en kill.asp side med: <% session.abandon %>
Det skal være en selvstændig side da abandon først træder i kraft når siden er kørt færdig.
Synes godt om
Ny brugerNybegynder
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.