Avatar billede terib Nybegynder
28. oktober 2005 - 16:23 Der er 9 kommentarer og
1 løsning

Logge bruger id og ip og tidspunkt

Hej,
Jeg har en lille side hvor der kun er adgang for et begrænset antal brugere, men for at jeg kan checke at brugernavn og password ikke misbruges(så godt det nu kan lade sig gøre) kunne jeg tænke mig at logge brugerne når de logger ind på siden. Har en accessdb med tabellen admin og felterne user_id og password.

Hvordan klarer jeg lige den? - mit loginscript ser således ud:

<!--#include file="admin/conn.asp"-->
  <%
    dim username
    dim pass
    dim msg
    'dim checked

    username = Request.Form("username")
    pass = Request.Form("password")

    if request.Form("Submit")="OK" then
        dim rs
        dim cn

        set cn = server.CreateObject("Adodb.Connection")
        set rs = server.CreateObject("Adodb.Recordset")

        cn.Open conn
        rs.open "Select * From Admin Where User_ID='" & username & "'",cn
        if not rs.eof then

            if pass = rs.fields("Password") then
            session("AdminOk") = "true"
            session("Username") = username

            response.Redirect("default.asp")
            else
            msg = ("Password ikke korrekt")
            end if

        else
            msg = ("Brugernavn ikke korrekt")
        end if

        rs.Close
        cn.Close

        set rs = nothing
        set cn = nothing

    End if


    if request.QueryString("cmd") = "logout" then
        session.Abandon()
    End if

%>
<html>
<head>
<title>Login</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body style="background-image: url('images/euro_bg.gif')">
<div align="center">
  <table width="750" border="0">
    <tr bgcolor="#FFFFCC">
      <td colspan="2" background="images/logo.jpg" height="120"><div align="center">&nbsp;</div></td>
    </tr>
    <tr>
      <td width="100%" valign="top"> <div align="center">
        <form name="form1" method="post" action="">
  <p align="center"><font color="#FF0000"><%=msg%></font></p>
  <p align="center">&nbsp;</p>
  <table width="31%" border="1" align="center" cellpadding="1" cellspacing="1" bordercolor="#CCCCCC">
    <tr bgcolor="#CCCCCC">
      <td colspan="2"><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><strong>Login
        - Indtast brugernavn og password</strong></font></td>
    </tr>
    <tr>
      <td width="31%">
        <font size="2" face="Verdana, Arial, Helvetica, sans-serif">Brugernavn</font></td>
      <td width="56%">
        <input name="username" type="text" id="username" size="44"></td>
    </tr>
    <tr>
      <td><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Password</font></td>
      <td><input name="password" type="password" id="password" size="44"></td>
    </tr>
    <tr>
      <td>&nbsp;</td>
      <td><input type="submit" name="Submit" value="OK"></td>
    </tr>
  </table>
  <p>&nbsp;</p>
</form></td>
    </tr>
    <tr bgcolor="#FFFFCC">
      <td colspan="2" valign="top" bgcolor="#C0C0C0"><div align="center">
        <font face="Verdana, Arial, Helvetica, sans-serif" size="1">Login</font></div></td>
    </tr>
  </table>
</div>
</body>
</html>

På forhånd tak!
Avatar billede jps6kb Novice
28. oktober 2005 - 19:54 #1
Du kunne jo lave en tabel mere i din db, som hedder ex. logonLog .. som indeholder følgende felter:

username
date
time
ip

(bemærk at nogle af feltnavnene er reserverede, så de skal nok hedde noget andet, men du ser hvad jeg mener)

Hver gang en bruger logger på, gemmer du bare de data i logonLog tabellen..

Desuden er det en god idé at skrive "Forkert brugernavn eller password" i stedet for:
msg = ("Brugernavn ikke korrekt")

Håber det var nok?
Avatar billede terib Nybegynder
29. oktober 2005 - 06:17 #2
Hej
Takker for forslaget. Jeg var nu mere ude efter et forslag til hvordan koden skulle/kunne se ud for at logge, indarbejdet i den eksisterende kode.
Tabellen er lavet :-)
Mvh
Avatar billede jps6kb Novice
29. oktober 2005 - 09:20 #3
Ahh.. fair nok.. umiddelbart vil jeg tro du kan bruge det her. Jeg har ikke testet det, men prøv engang. Læg mærke til at feltnavnene har et l_  foran, for ikke at bruge reserverede navne ;)



if pass = rs.fields("Password") then
session("AdminOk") = "true"
session("Username") = username
   
    strDate = Date()
    strTime = Time()
    strIp = request.servervariables("REMOTE_ADDR")
    Set MyConn = Server.CreateObject("ADODB.Connection")
    MyConn.Open  "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("dindatabase.mdb")
    sql = "insert into loginLog(l_username, l_date, l_time, l_ip) values('"&session("Username")&"', '"&strDate&"', '"&strTime&"', '"&strIp&"'"
    Myconn.execute(sql)
Avatar billede terib Nybegynder
29. oktober 2005 - 11:11 #4
Hej igen,

Jeg får følgende fejl...
Microsoft JET Database Engine error '80040e14'
Syntax error in INSERT INTO statement.
/katalog/login.asp, line 32

Felterne i tabellen er rene tekstfelter - Skal det være anderledes?
OG jeg har lavet en lille ændring i din kode, som jeg tror den bør være:
Databaseforbindelsen er jo åben...
strDate = Date()
    strTime = Time()
    strIp = request.servervariables("REMOTE_ADDR")
    slettet---> Set MyConn = Server.CreateObject("ADODB.Connection")
    slettet--->MyConn.Open  "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("dindatabase.mdb")
    sql = "insert into loginLog(l_username, l_date, l_time, l_ip) values('"&session("Username")&"', '"&strDate&"', '"&strTime&"', '"&strIp&"'"
    ændret--->cn.execute(sql)

Er dette ikke korrekt hvis du kigger på scriptet i mit spørgsmål?
Mvh
Avatar billede jps6kb Novice
29. oktober 2005 - 11:13 #5
sql = "insert into loginLog(l_username, l_date, l_time, l_ip) values('"&session("Username")&"', '"&strDate&"', '"&strTime&"', '"&strIp&"')"

Min fejl-- havde glemt en )  .. :) Prøv den der så..
Avatar billede terib Nybegynder
29. oktober 2005 - 11:32 #6
Så nu skete der et eller andet :-)

Den laver fejl? - Overflow Som betyder hvad?

Henviser til denne linie - cn.execute(sql)

mvh
Avatar billede jps6kb Novice
29. oktober 2005 - 11:35 #7
Prøv lige og skriv hele fejlen den kommer med :)
Avatar billede terib Nybegynder
29. oktober 2005 - 11:37 #8
MIN fejl....jeg ændrede felterne fra tekstfelter....rettede tilbage igen og det virker som det skal.

Tusind tak for hjælpen.

Du virker som om du har helt styr på asp-access , har du lyst til at lave nogle opgaver for andet end point?
Læg et svar så får du lige pointene.
Mvh
Avatar billede jps6kb Novice
29. oktober 2005 - 11:39 #9
Her er dit svar.

Hvad har du i tankerne? Smid mig på MSN så kan vi snakke ;)

jps6kb(a)hotmail.com
eller send en mail på post(a)kimbang.dk
Avatar billede jps6kb Novice
29. oktober 2005 - 12:38 #10
Jeg takker for point. Det var godt det virkede til sidst. :)
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