03. juni 2004 - 18:05Der er
10 kommentarer og 2 løsninger
Logfil i ASP
På min hjemmeside, har jeg et punkt hvor man skal være oprettet som bruger, for at komme ind og læse det.
Jeg vil gerne i en logfil kunne se, hvem der har været logget ind, og hvornår.
Jeg har en Access database, med brugernavne og adgangskoder. Jeg har fra min udbyder hvor min hjemmeside er, fået flg. kode:
Dim Fobj Set Fobj = Server.CreateObject("Scripting.FileSystemObject") Dim Fstat Set Fstat = Fobj.OpenTextFile(server.mappath("logon.log"), 8) Fstat.WriteLine(now & " Name:[" & sname") Fstat.Close Set Fstat = Nothing Set Fobj = Nothing
De har fortalt mig, at koden skal være i min login.asp fil men jeg ved bare ikke hvor i koden, og jeg kan ikke forstå koden, for hvor laver den logfilen?, hvordan jeg skulle kunne læse i logfilen? og hvad hedder filen?.
Da jeg ikke er helt stiv i ASP, kunne jeg så ikke få din mail adr., så jeg kunne maile login.asp til dig, og du så ville sætte koden ind det rigtige sted?
<% 'Her definere vi at LoginMessage skal hente sin tekst fra querystringen (adresselinjen) LoginMessage = Request.querystring("LoginMessage")
'Og hvis altså loginmessage er større eller mindre end ingenting, så skal den skrive det. if LoginMessage <> "" Then Response.Write(LoginMessage&"<br>") end if %>
<% 'Her starter vi med at spørge om vores session loginOk er større eller mindre end True (altså ingenting), og hvis ja, ' så skal den vise det som står på de efterfølgende linjer... if Session("LoginOK") <> "True" Then %> <form name="LoginForm" action="Login.asp?login=in" method="post"> <b>Indtast brugernavn : </b><br> <input type="text" name="feltBrugernavn" size="30"> <br><br>
<input type="submit" name="login" value="Login"> <input type="button" value="Luk" onclick="self.close();"> </form> <% 'Hvis session loginOK er true, så skal den skrive det på de efterfølgende linjer... else %> <p><b>Velkommen</b></p>
Her har du mulighed for at logge ud. <input type="button" onclick="location.href='Login.asp?login=out'" name="logout" value="Logout">
<% 'Så slutter vi med at spørge om noget som helst :P end if %>
Det kan jeg så ikke forstå, for det er min login.asp fil.
Men det hele er her hvis det kan hjælpe mere:
<% 'Her siger jeg: Hvis der er noget data i en post-form og login-formen ikke er tom, så skal den begynde at indlæse dette. if Request.ServerVariables("REQUEST_METHOD") = "POST" AND Request.form("login") <> "" then
'Her åbner jeg database forbindelsen (husk at erstatte ******** med din adgangskode til databasen, under PWD=) Set Conn = Server.CreateObject("ADODB.Connection") DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath ("database/database.mdb") & "; PWD=appelsin" Conn.Open DSN
'Her trimmer og erstatter vores qourt med ' og '' sammentidig med at form-dataerne bliver lagt i variabler. Dim strBrugernavn, strAdgangskode strBrugernavn = Trim(Replace(request.form("feltBrugernavn"),"'","'" )) strAdgangskode = Trim(Replace(request.form("feltAdgangskode"),"'","''" ))
'På de følgende to linjer (under kommentaren) bliver rs defineret, og vi spørger om der er et brugernavn og en 'adgangskode passer sammen med noget af vores data i databasen. SQL = "SELECT * FROM [Brugere] where Brugernavn = '" & strBrugernavn & "' AND Adgangskode = '" & strAdgangskode & "'" Set rs = Conn.Execute(SQL)
'Her spørger vi; Hvis brugernavn og adgangskoden ikke findes i databasen, så... if rs.eof then
'Bliver brugeren sendt tilbage, med en lille besked i røven (LoginMessage) response.redirect "Login.asp?LoginMessage=Brugernavn eller adgangskode var forkert"
'Her siger vi så; Ellers hvis ikke databasen er tom for det brugernavn og den adgangskode, så.. elseif Not (rs.BOF Or rs.EOF) Then
'Lav en session der hedder Login, og den skal være True. Session("LoginOK") = "True" 'Her sætter vi en tid på til hvornår vores session skal udløbe. Her er den sat til 10 minutter Session.Timeout = 10 'Og så skal du brugeren lige sendes til vagtplan/hjalper.asp response.redirect "vagtplan/hjalper.asp"
'så afslutter vi lige vores bruger pjat ;-) end if
'Og lukker databasen... conn.close set conn = nothing
'Her afslutter vi lige at vi har spurgt om der er blevet sendt et login forsøg (3. linje) end if
'Så er vi klar til at spørge om der er blevet trykket på vores >log ud< knap... if Request("login") = "out" then
'Hvis der er blevet trykket på knappen, så bliver ens session lukket. Session.Abandon 'Og man bliver sendt videre til login siden, med en kommentar i røven... response.redirect "Login.asp?LoginMessage=Du er nu logget ud!"
'Så slutter vi spørgsmålet om, om der blev trykket på logud knappen. end if %> <!-- Så starter vi på vores htmlkode --> <html> <head> <title>Sneumann - Login/Logout Script</title> </head>
<% 'Her definere vi at LoginMessage skal hente sin tekst fra querystringen (adresselinjen) LoginMessage = Request.querystring("LoginMessage")
'Og hvis altså loginmessage er større eller mindre end ingenting, så skal den skrive det. if LoginMessage <> "" Then Response.Write(LoginMessage&"<br>") end if %>
<% 'Her starter vi med at spørge om vores session loginOk er større eller mindre end True (altså ingenting), og hvis ja, ' så skal den vise det som står på de efterfølgende linjer... if Session("LoginOK") <> "True" Then %> <form name="LoginForm" action="Login.asp?login=in" method="post"> <b>Indtast brugernavn : </b><br> <input type="text" name="feltBrugernavn" size="30"> <br><br>
<input type="submit" name="login" value="Login"> <input type="button" value="Luk" onclick="self.close();"> </form> <% 'Hvis session loginOK er true, så skal den skrive det på de efterfølgende linjer... else %> <p><b>Velkommen</b></p>
Her har du mulighed for at logge ud. <input type="button" onclick="location.href='Login.asp?login=out'" name="logout" value="Logout">
<% 'Så slutter vi med at spørge om noget som helst :P end if %>
</font>
</body> </html>
Min udbyder siger jo, at for at lave en logfil, skal flg. i min login.asp
Dim Fobj Set Fobj = Server.CreateObject("Scripting.FileSystemObject") Dim Fstat Set Fstat = Fobj.OpenTextFile(server.mappath("logon.log"), 8) Fstat.WriteLine(now & " Name:[" & sname") Fstat.Close Set Fstat = Nothing Set Fobj = Nothing
men jeg ved bare IKKE hvor!!!
Jeg har jo en Access database, med brugernavn og adgangskode.
<% '******************************************************** 'oprettet en funktion - det er nemmest 'kald den når du vil skrive i loggen '1 paramter - navnet på brugeren function writeLog(sname) Dim Fobj Set Fobj = Server.CreateObject("Scripting.FileSystemObject") Dim Fstat Set Fstat = Fobj.OpenTextFile(server.mappath("logon.log"), 8) Fstat.WriteLine(now & " Name:[" & sname") Fstat.Close Set Fstat = Nothing Set Fobj = Nothing
end function '*********************************************************
'Her siger jeg: Hvis der er noget data i en post-form og login-formen ikke er tom, så skal den begynde at indlæse dette. if Request.ServerVariables("REQUEST_METHOD") = "POST" AND Request.form("login") <> "" then
'Her åbner jeg database forbindelsen (husk at erstatte ******** med din adgangskode til databasen, under PWD=) Set Conn = Server.CreateObject("ADODB.Connection") DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath ("database/database.mdb") & "; PWD=appelsin" Conn.Open DSN
'Her trimmer og erstatter vores qourt med ' og '' sammentidig med at form-dataerne bliver lagt i variabler. Dim strBrugernavn, strAdgangskode strBrugernavn = Trim(Replace(request.form("feltBrugernavn"),"'","'" )) strAdgangskode = Trim(Replace(request.form("feltAdgangskode"),"'","''" ))
'På de følgende to linjer (under kommentaren) bliver rs defineret, og vi spørger om der er et brugernavn og en 'adgangskode passer sammen med noget af vores data i databasen. SQL = "SELECT * FROM [Brugere] where Brugernavn = '" & strBrugernavn & "' AND Adgangskode = '" & strAdgangskode & "'" Set rs = Conn.Execute(SQL)
'Her spørger vi; Hvis brugernavn og adgangskoden ikke findes i databasen, så... if rs.eof then
'Bliver brugeren sendt tilbage, med en lille besked i røven (LoginMessage) response.redirect "Login.asp?LoginMessage=Brugernavn eller adgangskode var forkert"
'Her siger vi så; Ellers hvis ikke databasen er tom for det brugernavn og den adgangskode, så.. elseif Not (rs.BOF Or rs.EOF) Then
'Lav en session der hedder Login, og den skal være True. Session("LoginOK") = "True" 'Her sætter vi en tid på til hvornår vores session skal udløbe. Her er den sat til 10 minutter Session.Timeout = 10 'Og så skal du brugeren lige sendes til vagtplan/hjalper.asp response.redirect "vagtplan/hjalper.asp"
'så afslutter vi lige vores bruger pjat ;-) end if
'Og lukker databasen... conn.close set conn = nothing
'Her afslutter vi lige at vi har spurgt om der er blevet sendt et login forsøg (3. linje) end if
'Så er vi klar til at spørge om der er blevet trykket på vores >log ud< knap... if Request("login") = "out" then
'Hvis der er blevet trykket på knappen, så bliver ens session lukket. Session.Abandon 'Og man bliver sendt videre til login siden, med en kommentar i røven... response.redirect "Login.asp?LoginMessage=Du er nu logget ud!"
'Så slutter vi spørgsmålet om, om der blev trykket på logud knappen. end if %> <!-- Så starter vi på vores htmlkode --> <html> <head> <title>Sneumann - Login/Logout Script</title> </head>
<% 'Her definere vi at LoginMessage skal hente sin tekst fra querystringen (adresselinjen) LoginMessage = Request.querystring("LoginMessage")
'Og hvis altså loginmessage er større eller mindre end ingenting, så skal den skrive det. if LoginMessage <> "" Then Response.Write(LoginMessage&"<br>") end if %>
<% 'Her starter vi med at spørge om vores session loginOk er større eller mindre end True (altså ingenting), og hvis ja, ' så skal den vise det som står på de efterfølgende linjer... if Session("LoginOK") <> "True" Then %> <form name="LoginForm" action="Login.asp?login=in" method="post"> <b>Indtast brugernavn : </b><br> <input type="text" name="feltBrugernavn" size="30"> <br><br>
<input type="submit" name="login" value="Login"> <input type="button" value="Luk" onclick="self.close();"> </form> <% 'Hvis session loginOK er true, så skal den skrive det på de efterfølgende linjer... else %> <p><b>Velkommen</b></p>
Her har du mulighed for at logge ud. <input type="button" onclick="location.href='Login.asp?login=out'" name="logout" value="Logout">
<% 'Så slutter vi med at spørge om noget som helst :P end if %>
<% '******************************************************** 'oprettet en funktion - det er nemmest 'kald den når du vil skrive i loggen '1 paramter - navnet på brugeren function writeLog(sname) Dim Fobj Set Fobj = Server.CreateObject("Scripting.FileSystemObject") Dim Fstat Set Fstat = Fobj.OpenTextFile(server.mappath("logon.log"), 8) Fstat.WriteLine(now & " Name:[" & sname") Fstat.Close Set Fstat = Nothing Set Fobj = Nothing
end function '*********************************************************
'Her siger jeg: Hvis der er noget data i en post-form og login-formen ikke er tom, så skal den begynde at indlæse dette. if Request.ServerVariables("REQUEST_METHOD") = "POST" AND Request.form("login") <> "" then
'Her åbner jeg database forbindelsen (husk at erstatte ******** med din adgangskode til databasen, under PWD=) Set Conn = Server.CreateObject("ADODB.Connection") DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath ("database/database.mdb") & "; PWD=appelsin" Conn.Open DSN
'Her trimmer og erstatter vores qourt med ' og '' sammentidig med at form-dataerne bliver lagt i variabler. Dim strBrugernavn, strAdgangskode strBrugernavn = Trim(Replace(request.form("feltBrugernavn"),"'","'" )) strAdgangskode = Trim(Replace(request.form("feltAdgangskode"),"'","''" ))
'På de følgende to linjer (under kommentaren) bliver rs defineret, og vi spørger om der er et brugernavn og en 'adgangskode passer sammen med noget af vores data i databasen. SQL = "SELECT * FROM [Brugere] where Brugernavn = '" & strBrugernavn & "' AND Adgangskode = '" & strAdgangskode & "'" Set rs = Conn.Execute(SQL)
'Her spørger vi; Hvis brugernavn og adgangskoden ikke findes i databasen, så... if rs.eof then
'Bliver brugeren sendt tilbage, med en lille besked i røven (LoginMessage) response.redirect "Login.asp?LoginMessage=Brugernavn eller adgangskode var forkert"
'Her siger vi så; Ellers hvis ikke databasen er tom for det brugernavn og den adgangskode, så.. elseif Not (rs.BOF Or rs.EOF) Then
'Lav en session der hedder Login, og den skal være True. Session("LoginOK") = "True" 'Her sætter vi en tid på til hvornår vores session skal udløbe. Her er den sat til 10 minutter Session.Timeout = 10
'*********************************************** 'skriv logfil 'inden brugeren sendes til den næste side writeLog(strBrugernavn) '***********************************************
'Og så skal du brugeren lige sendes til vagtplan/hjalper.asp response.redirect "vagtplan/hjalper.asp"
'så afslutter vi lige vores bruger pjat ;-) end if
'Og lukker databasen... conn.close set conn = nothing
'Her afslutter vi lige at vi har spurgt om der er blevet sendt et login forsøg (3. linje) end if
'Så er vi klar til at spørge om der er blevet trykket på vores >log ud< knap... if Request("login") = "out" then
'Hvis der er blevet trykket på knappen, så bliver ens session lukket. Session.Abandon 'Og man bliver sendt videre til login siden, med en kommentar i røven... response.redirect "Login.asp?LoginMessage=Du er nu logget ud!"
'Så slutter vi spørgsmålet om, om der blev trykket på logud knappen. end if %> <!-- Så starter vi på vores htmlkode --> <html> <head> <title>Sneumann - Login/Logout Script</title> </head>
<% 'Her definere vi at LoginMessage skal hente sin tekst fra querystringen (adresselinjen) LoginMessage = Request.querystring("LoginMessage")
'Og hvis altså loginmessage er større eller mindre end ingenting, så skal den skrive det. if LoginMessage <> "" Then Response.Write(LoginMessage&"<br>") end if %>
<% 'Her starter vi med at spørge om vores session loginOk er større eller mindre end True (altså ingenting), og hvis ja, ' så skal den vise det som står på de efterfølgende linjer... if Session("LoginOK") <> "True" Then %> <form name="LoginForm" action="Login.asp?login=in" method="post"> <b>Indtast brugernavn : </b><br> <input type="text" name="feltBrugernavn" size="30"> <br><br>
<input type="submit" name="login" value="Login"> <input type="button" value="Luk" onclick="self.close();"> </form> <% 'Hvis session loginOK er true, så skal den skrive det på de efterfølgende linjer... else %> <p><b>Velkommen</b></p>
Her har du mulighed for at logge ud. <input type="button" onclick="location.href='Login.asp?login=out'" name="logout" value="Logout">
<% 'Så slutter vi med at spørge om noget som helst :P end if %>
Jeg kan ikke få det til at virke, når jeg kopiere det ind i min login.asp fil kommer den ud, og siger siden kan ikke vises.
Godt nok fortalte min udbyder mig, at koden skulle være i login.asp filen, men jeg har også en fil, som hedder checklogin.asp som indeholder flg.:
<% Response.Buffer = true Response.Expires = 0
If Session("LoginOK") = "" Then Response.redirect("login.asp") Response.end End If %>
Tror du koden skal være der, i stedet for i login.asp?
Håber at høre fra dig igen.
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.