Avatar billede bloody-123 Nybegynder
09. januar 2007 - 09:17 Der er 37 kommentarer og
1 løsning

Kode et login i ASP

Hej Drenge

Sidder og arbejder med et projekt i ASP og skal lave et lille login til noget forum eller kalender e.lign.??

Nogen som kan hjælpe mig med noget kode?

Det skal bare være simpelt!
Avatar billede fennec Nybegynder
09. januar 2007 - 09:32 #1
Er det database styret??
Avatar billede mbagge Nybegynder
09. januar 2007 - 09:35 #2
Hej

Her er lidt hurtigt til at hjælpe dig igang:

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

/Bagge
Avatar billede bloody-123 Nybegynder
09. januar 2007 - 09:43 #3
Kan vi godt bruge Access Database?
Avatar billede mbagge Nybegynder
09. januar 2007 - 09:45 #4
Ja, du kan bruge hvilken som helst database type, så længe det er muligt på serveren.
Det er access som regel sammen med asp

/Bagge
Avatar billede bloody-123 Nybegynder
09. januar 2007 - 09:46 #5
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?
Avatar billede mbagge Nybegynder
09. januar 2007 - 09:54 #6
Selve loginsiden skal du lave som en formular i alm html (men placer det i en asp fil)

Noget ala

<form action=checklogin.asp metohd=post>
<input type=text name=brugernavn>
<input type=password name=password>
<input type=submit name=submit value=login>
</form>

/Bagge
Avatar billede bloody-123 Nybegynder
09. januar 2007 - 10:20 #7
Er det muligt bare at lave en TXT fil hvor den så går ned og kigger i, istedet for vi ska lave en database?
Avatar billede fennec Nybegynder
09. januar 2007 - 10:24 #8
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...
Avatar billede fennec Nybegynder
09. januar 2007 - 10:41 #9
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>
Avatar billede fennec Nybegynder
09. januar 2007 - 10:47 #10
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
%>
Avatar billede bloody-123 Nybegynder
09. januar 2007 - 11:09 #11
Skal man lave de bruger i et ASP dok for sig selv?
Avatar billede bloody-123 Nybegynder
09. januar 2007 - 11:45 #12
Sry men vi fatter Hat af alt det her ASP :)
Avatar billede fennec Nybegynder
09. januar 2007 - 12:42 #13
Ja, du skal lave et aspdokument. Kald det f.eks brugere.asp. I det dokument skal være følgende kode:

<%
'fennec;hemligkode
'bloody-123;kodehemlig
'enAnden;hemligpassword
%>

Ret så:
set fil = fso.opentextfile(server.mappath("brugere.txt"), 1)

Til det filnavn du har givet den:
set fil = fso.opentextfile(server.mappath("brugere.asp"), 1)
Avatar billede bloody-123 Nybegynder
09. januar 2007 - 13:09 #14
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?
Avatar billede fennec Nybegynder
09. januar 2007 - 13:14 #15
Hvordan ser din kode ud??
Avatar billede bloody-123 Nybegynder
09. januar 2007 - 13:16 #16
Test.asp

<!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>

</BODY>
</HTML>

Brugere.asp

<%
'fennec;123456   
'bloody-123;654321
'enAnden;369852147
%>

DenneSide.asp


<!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>
 
<title>tid og dato</title>
<head>
</head>
<body background="baggrund_<% =Weekday(Now,VbMonday) %>.gif">

<B>Hurra vi har lavet vores første LOGIN i ASP :D</B>


</BODY>
</HTML>
Avatar billede fennec Nybegynder
09. januar 2007 - 13:23 #17
Med denneSide.asp mente jeg navnet på den fil koden står i. I dette tilfælde Test.asp.

<form action="DenneSide.asp?mode=login" metohd="post">

Skal derfor være:
<form action="test.asp?mode=login" metohd="post">
Avatar billede bloody-123 Nybegynder
09. januar 2007 - 13:26 #18
Ja ok - det ændret nu men meningen var så at når man logger ind skulle den komme med en ny side? eller vise fejl hvis man taster forkert?
Avatar billede fennec Nybegynder
09. januar 2007 - 13:35 #19
Du skal bare rette:
if Found then
  response.redirect "DuErLoggetInd.asp"
else
  response.redirect "ForkertLogin.asp"
end if

Til de sider som passer. Den sidste vil nok være den samme side som scriptsiden, altså test.asp i dette tilfælde. Det kunne f.eks være:

if Found then
  response.redirect "DuErLoggetInd.asp"
else
  response.redirect "test.asp?err=1"
end if

Du kan så lave et tjek på err også udskrive den tilhørende fejlbeskrivelse:

<% if request.querystring("err") = "1" then response.write "Forkert login" %>
<form action="DenneSide.asp?mode=login" metohd="post">
<input type="text" name="user">
<input type="password" name="pass">
<input type="submit" value="login">
</form>
Avatar billede fennec Nybegynder
09. januar 2007 - 13:37 #20
response.redirect "DuErLoggetInd.asp"

Vil jeg gætte på skal være:
response.redirect "DenneSide.asp"

ud fra din kode angivet 09/01-2007 13:16:44
Avatar billede bloody-123 Nybegynder
09. januar 2007 - 13:41 #21
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>
Avatar billede fennec Nybegynder
09. januar 2007 - 13:48 #22
Får du en fejl??
Avatar billede bloody-123 Nybegynder
09. januar 2007 - 13:49 #23
Nej den går bare hele tiden tilbage til den der Test.asp??? Det er det jeg ikke forstår - Det lige som om den ikke går ned i Brugere.asp og tjekker!!

Der skal ikke stå noget i DenneSide.asp vel?
Avatar billede fennec Nybegynder
09. januar 2007 - 13:54 #24
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

Hvad skriver den så ud på skærmen??
Avatar billede bloody-123 Nybegynder
09. januar 2007 - 14:01 #25
Siden kan ikke vises! :-( ved sku godt jeg er svær at have noget med at gøre men det min første gang ang. asp progjekt!
Avatar billede fennec Nybegynder
09. januar 2007 - 14:06 #26
Har du et link til siden??
Avatar billede bloody-123 Nybegynder
09. januar 2007 - 14:07 #27
Den er ikke online? Det jo bare sådan Localt? eller hvordan mener du link??
Avatar billede fennec Nybegynder
09. januar 2007 - 14:07 #28
Ellers gå lige op i Funktioner >> internetinstillinger >> advanceret >> fjern afkrydsning fra "Vis meddelser om uskadelige HTTP fejl"
Avatar billede fennec Nybegynder
09. januar 2007 - 14:08 #29
Det er i browseren du skal gøre dette...
Avatar billede bloody-123 Nybegynder
09. januar 2007 - 14:13 #30
Så det gjort - hjalp ikke noget
Avatar billede fennec Nybegynder
09. januar 2007 - 15:36 #31
Får du ikke en bedre fejlmeddelse?
Avatar billede bloody-123 Nybegynder
10. januar 2007 - 08:10 #32
Nej? får intet
Avatar billede fennec Nybegynder
10. januar 2007 - 08:16 #33
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
Avatar billede bloody-123 Nybegynder
10. januar 2007 - 08:19 #34
Der sker ikke en skid - Den bliver bare på TEst.asp siden..Hmm
Avatar billede bloody-123 Nybegynder
10. januar 2007 - 08:38 #35
Det er altså lige som om den ikke går ned og tjekker i den der brugere.asp fil om brugere er der eller ej?
Avatar billede fennec Nybegynder
10. januar 2007 - 08:47 #36
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">

Du kan se min test kode her:
http://www.henriknygaard.dk/experten/754799/login.asp

og hente den her:
http://www.henriknygaard.dk/experten/754799/754799.zip
Avatar billede bloody-123 Nybegynder
10. januar 2007 - 09:23 #37
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?
Avatar billede fennec Nybegynder
10. januar 2007 - 09:49 #38
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.
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