Avatar billede fauer Nybegynder
01. juni 2005 - 13:22 Der er 13 kommentarer og
1 løsning

En side der tjekker hvem der er logget ind??

Hvordan laver jeg en side der kan se hvem der er logget ind??

Mvh fauer
Avatar billede busschou Praktikant
01. juni 2005 - 13:32 #1
Altså en side hvor du som administrator kan se hvem der er logget ind?
Det kræver jo at du i en database har et felt "loggetin" som du sætter til sand når de logger ind, og falsk når de logger ud
Så kan du bare hive ud af den database
Avatar billede busschou Praktikant
01. juni 2005 - 13:34 #2
Du skal så være opmærksom på at man ikke nødvendigvis logger ud. Nogen lukker måske bare vinduet.
I din global.asa fil kan du under Session_OnEnd lave en funktion som logger personen ud når sessionen dør/timer ud. Dvs så bliver vedkommende normalt logget ud efter 20min
Dit database opslag på hvem som er online vil så være med forbehold for de 20min hvor nogen vil figurere som online selvom de har lukket deres browser
Avatar billede fauer Nybegynder
01. juni 2005 - 14:53 #3
Nej en side som siger....
Hej (brugernavnet fra db som er logget ind)
Du har søgt på produkt ID (fra db)
Avatar billede fauer Nybegynder
01. juni 2005 - 14:54 #4
Man logger ind og finder et produkt og køber det i sit eget navn.
Avatar billede busschou Praktikant
01. juni 2005 - 14:58 #5
Ok jamen så er det snildt nok
For når vedkommende logger ind så har du jo et database tjek sikkert ? som sikrer at vedkommende må logge ind ikke? :o)
Idet du logger ind så sætter du bare en session, altså ala
---
login siden:
navn = request.form("navn")
password = request.form("password")
//forbindelse og tjek på databasen
Session("navn") = navn
---
På alle andre sider kan du så referere til den session fx
---
response.write "Hej "&session("navn")&" du har ikke købt noget :o("
Avatar billede fauer Nybegynder
02. juni 2005 - 14:19 #6
Jamen kan man godt have 2 session igang på een gang??
Jeg har lavet min login og den virker fint, vil så gerne have det navn med ud.

Her er min Login.asp
                   
<%
If request.form("logud") = "logud" then
    session.abandon
end if
SET RS = Server.CreateObject("ADODB.Connection")
rs.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("../db/FFdatabase.mdb")

If Request("mode") = "Check" then

Function unQuote(strTekst)
  strTekst = Trim(strTekst)
  unQuote = Replace(strTekst,"%","53")
End Function

    ' Gemmer formfelterne i Variabler
        strUsername = unQuote(request("LoginID"))
        strPassword = unQuote(request("PasswordID"))

  Sql = "Select Count(*) as Found from KundeTabel where (LoginID = '" & strUsername  & "') and (PasswordID ='" & strPassword  & "')"
  Set LO = RS.Execute(Sql)
  if LO("Found") = 0 then
    Session("login") = ""
    error = "FEJL i indtastningen!"
  else
  strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("../db/FFdatabase.mdb")
  Set myConn = Server.CreateObject("ADODB.Connection")
  myConn.Open strDSN
  strSQL = "SELECT * FROM KundeTabel where (LoginID = '" & Request("LoginID") & "') and (PasswordID ='" & Request("PasswordID") & "')"
  Set ez = myConn.Execute(strSQL)
    Session("login") = "yes mate"
    Response.Redirect("kundenavn.asp?IDkunde="& ez("IDkunde"))
    'response.write
    EZ.Close
    RS.Close
    myConn.Close
  end if
end if
%></td>
</tr>                   
<tr>
<td class="norm">
<form method="POST" action="login.asp">
<input type="hidden" name="mode" VALUE="Check"> <br>
Login<br>
<input class="form" type='text' name='LoginID' value="<%=strbrugernavn%>" size="19"><br>
Password<br>
<input class="form" type="password" value="<%=strpassword%>" name="PasswordID" size="19"><br><br>
<input id="submit" type="submit" value="Login" name="submit">
<font class="rubrik"><%=error%></font>
</form>
Avatar billede busschou Praktikant
03. juni 2005 - 07:56 #7
Jeg ved ikke helt hvor du vil have det. Du har til dels ret i at man kun har en session pr person på sin side. Dvs sessionen får et unikt id som gør at din server kan adskille de forskellige personer fra hinanden. Men det er i dette id at du gemmer de forskellige oplysninger. Jeg kender ikke grænsen men du kan have mange mange forskellige objekter i din session.
Så du kan fx gøre sådan her
-----
<%
If request.form("logud") = "logud" then
    session.abandon
end if
SET RS = Server.CreateObject("ADODB.Connection")
rs.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("../db/FFdatabase.mdb")

If Request("mode") = "Check" then

Function unQuote(strTekst)
  strTekst = Trim(strTekst)
  unQuote = Replace(strTekst,"%","53")
End Function

    ' Gemmer formfelterne i Variabler
        strUsername = unQuote(request("LoginID"))
        strPassword = unQuote(request("PasswordID"))

  Sql = "Select Count(*) as Found from KundeTabel where (LoginID = '" & strUsername  & "') and (PasswordID ='" & strPassword  & "')"
  Set LO = RS.Execute(Sql)
  if LO("Found") = 0 then
    Session("login") = ""
    error = "FEJL i indtastningen!"
  else
  strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("../db/FFdatabase.mdb")
  Set myConn = Server.CreateObject("ADODB.Connection")
  myConn.Open strDSN
  strSQL = "SELECT * FROM KundeTabel where (LoginID = '" & Request("LoginID") & "') and (PasswordID ='" & Request("PasswordID") & "')"
  Set ez = myConn.Execute(strSQL)
    Session("login") = "yes mate"
    Session("navn") = strUsername
    Response.Redirect("kundenavn.asp?IDkunde="& ez("IDkunde"))
    'response.write "VELKOMMEN "&session("navn")
    EZ.Close
    RS.Close
    myConn.Close
  end if
end if
%></td>
</tr>                   
<tr>
<td class="norm">
<form method="POST" action="login.asp">
<input type="hidden" name="mode" VALUE="Check"> <br>
Login<br>
<input class="form" type='text' name='LoginID' value="<%=strbrugernavn%>" size="19"><br>
Password<br>
<input class="form" type="password" value="<%=strpassword%>" name="PasswordID" size="19"><br><br>
<input id="submit" type="submit" value="Login" name="submit">
<font class="rubrik"><%=error%></font>
</form>
------
Bemærk dog at det ikke lige virker der hvor det står fordi du laver en redirect inden.
Men på den side du redirecter til kan du også hente din Session("navn").. den er jo global for den enkelte bruger

En helt anden ting er at det er fint nok at du laver en unquote funktion men du bør tilføje en replace(tekst,','') så du undgår sql injecktion. Endvidere bør du i begge dine sql sætninger benytte strUsername og strPassword. For ellers kan  du jo risikere at den ene sql sætning bliver misbrugt :o)
Avatar billede fauer Nybegynder
03. juni 2005 - 09:17 #8
busschou
Først tak for at du gider hjælpe...
Sandheden er at det der login er et jeg har hentet på nettet, og jeg ved ikke helt hvordan det virker.
Så jeg ved eks. ikke hvordan jeg henter den session på den side jeg redirecter til, men jeg ved at det er lige precis det jeg gerne vil.
Og de sidste tre linjer du har skrevet til mig er "russisk", jeg ved ikke hvad en unquote funktion er, jeg jeg forstår hellerikke hvordan sql sætningen kan blive misbrugt.

Mvh fauer
Avatar billede fauer Nybegynder
03. juni 2005 - 13:45 #9
Det virker bare...
Men... jeg vil gerne have personens rigtige navn vist, så jeg kunne godt tænke mig at lave noget med.

strSQL = "Select * From FFtabel where Session("navn")=" & request.querystring LoginID
Set rs = Conn.Execute(strSQL)

Kan jeg det???
Avatar billede fauer Nybegynder
03. juni 2005 - 13:46 #10
Øhhh ikke fra FFtabel men KundeTabel selvfølgelig.
Avatar billede fauer Nybegynder
03. juni 2005 - 13:51 #11
Uanset hvad så send mig lige et svar, så du kan få dine points.

Mvh fauer
Avatar billede busschou Praktikant
03. juni 2005 - 16:53 #12
Når personen logger ind så laver du jo allerede følgende linje:
strSQL = "SELECT * FROM KundeTabel where (LoginID = '" & Request("LoginID") & "') and (PasswordID ='" & Request("PasswordID") & "')"
Hvis personens rigtige navn findes i din tabel så kan du jo få den sådan her
Session("navn") = ez("NAVNET PÅ RÆKKEN I TABELLEN HVOR NAVNET STÅR")
hvis du forstår? , altså jeg ved jo ikke hvad du kalder feltet i databasen men hvis det hedder username fx.. så sådan her
Session("navn") = ez("username")

Alle de steder på alle de sider du ønsker at skrive brugerens navn ud skal du i stedet for navnet blot skrive Session("navn")
Altså i stedet for at skrive
response.write("hej brian velkommen")
så skriver du
response.write("hej "&Session("navn")&" velkommen")

Jeg håber du forstår, ellers må du endelig spørge mere
Det med sql injection er et stort og vigtigt emne hvis du tror der er risiko for at nogen vil ødelægge og misbruge din database mm.
Så det afhænger af hvor meget du ønsker gøre ud af din sikkerhed.
Jeg vil foreslå dig først ordne det andet og så tager vi sikkerheden bagefter - ikke at det ikke er vigtig. Men hvis du ikke er helt ferm til asp endnu.. så er det måske en stor mundfuld at tage det hele på en gang :o)
Avatar billede fauer Nybegynder
04. juni 2005 - 19:15 #13
Jeg har fået det til at virke .... og er meget glad....
Det der med sikkerhed må vente, da dette "kun" er en demoversion. Men måske om ikke så lang tid skal det ud i den virkelig verden, og så vil jeg meget gerne have sikkerheden i orden.

Jeg har stadig mange spørgsmål... men er løbet tør for points, og har ikke tid til selv at arbejde points sammen, da jeg skal aflevere projekt demoversion på mandag...
Hvad gør man så???

fauer
Avatar billede busschou Praktikant
04. juni 2005 - 20:18 #14
hehe ja hvad gør man så... så stiller man spørgsmål til 0 point og håber venlige folk vil hjælpe :o)
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