webForumDet fria alternativet

Inloggning och sessions

13 svar · 425 visningar · startad av devotion

devotionMedlem sedan jan. 20013 582 inlägg
#1

:)
Håller på och gör en inloggning till min sida!

Har gjort följande kod:

<%
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.ConnectionString = "DSN=IntranetSydostel"
objConn.Open

strSQL = "SELECT * FROM tblUser WHERE userName = '" & replace(Request.Form("User"), "'", "''") & "' AND passWord = '" & Replace (Request.Form("Password"), "'", "''") & "'"
set objRS = objConn.Execute(strSQL)
If objRS.eof then
	Response.Write "Du är inte inloggad!<br>"
 	Response.Write "Ej inloggad-meny"

Response.Write "<form action=""leftFrame.asp"" method=""post"" name=""loginForm"" id=""loginForm"">"
Response.Write "<p>Anv&auml;ndarnamn: <input name=""User"" type=""text"" id=""User"" size=""15""></p><p>L&ouml;senord:<input name=""Password"" type=""password"" id=""Password"" size=""15""></p><p><input type=""submit"" name=""Submit"" value=""Login""></p>"
Response.Write "</form>"

else
	Session("User") = Request.Form("User")

	Response.Write "Du är inloggad!<br>"
 	Response.Write "Inloggad-meny"

end if
Session.Timeout = 10

objRS.Close
Set objRS = Nothing
objConn.Close
Set objConn = Nothing

%>

Tanken är att jag vill ha en leftFrame som innehåller menyn. Är man inte inloggad ska en "grundmeny" visas samtidigt som det finns ett inloggningsformulär under menyn. Över menyn ska det stå "Du är inte inloggad"

När Man sedan loggar in ska en annan meny laddas innehållet i den beror på vilken behörighetsnivå man tillhör. Över menyn skall det stå: "Du är inloggad som N N" och under ska det finnas en knapp "logga ut"

Det jag inte får till är utloggningsförfarandet. Då ska man återgå till "grundmenyn" texten "Du är inte inloggad" ska visas.

I tblUser finns all information om användaren. Hur visar jag namnet när användaren är inloggad?

Vad ska jag lagra i session?? Räcker det med användarid? Måste jag lagra behörighetsnivån i en session?

Nu har jag skrivit:

Session("User") = Request.Form("User")

Kan jag skriva:

Session("UserId") = objRS("UserId")

Mvh

devotionMedlem sedan jan. 20013 582 inlägg
#2

:)
Här händer det inte mycket idag...

;)

SicoMedlem sedan maj 20002 597 inlägg
#3

Re: Inloggning och sessions

devotion skrev:

Kan jag skriva:

Session("UserId") = objRS("UserId")

Oja

Du kan tex ange:
Session("User") = "Yes"

Sedan dra en If-sats runt inloggningsformuläret och logga ut knappen.

If Session("User") = "Yes" Then
'logga ut knapp
Else
'Inloggningsformulär
End if

Om du ska ha olika behörigheter kan du tex göra såhär:
Session("Admin") = objRS("admin")
Sen göra en check om man har rätt värde i "admin" för att se den administrativa informationen eller inte.

devotionMedlem sedan jan. 20013 582 inlägg
#4

:)
Hur många sessioner skall jag då ha?

mvh

PoffeMedlem sedan apr. 20022 743 inlägg
#5

Så många som du själv anser att du behöver för att täcka dina behov :)

devotionMedlem sedan jan. 20013 582 inlägg
#6

Jo, det är klart, men jag har läst att man ska begränsa antalet....

Är det inte så??

mvh

PoffeMedlem sedan apr. 20022 743 inlägg
#7

Tja, ju mer du använder ju mer får ju servern jobba så klart. Man ska ju försöka göra så mycket som möjligt med så lite kod som möjligt för att potimera det på bästa sätt.

Det räcker egentligen med endast en session även om du vill ha fler värden. Spara t.ex. alla värden i sessionen separerade med komma eller något och sen kör du en split på sessionen för att få ut varje värde för sig.

Men handlar det om typ två, tre sessions så spelar det ingen större roll.

devotionMedlem sedan jan. 20013 582 inlägg
#8

Inga fler ideér på detta??

Mvh

OveRRidEMedlem sedan feb. 200112 078 inlägg
#9

Poffe skrev:

Det räcker egentligen med endast en session även om du vill ha fler värden. Spara t.ex. alla värden i sessionen separerade med komma eller något och sen kör du en split på sessionen för att få ut varje värde för sig.

Frågan är ifall det är bättre, eftersom det fortfarande blir samma mängd data som finns i minnet, plus skiljetecken för att separera datat åt. Dessutom blir det inte skalbart för fem öre.

Att ha lite strängdata i session dör inte servern av. Det man kan tänka sig är väl att lagra enbart det som är absolut nödvändigt i session, som t.ex. inloggningsstatus och användarid för att sedan med dessa se till att hämta från databasen när man väl behöver datat istället för att ha det släpande i session hela tiden.

PoffeMedlem sedan apr. 20022 743 inlägg
#10

OveRRidE skrev:

Frågan är ifall det är bättre, eftersom det fortfarande blir samma mängd data som finns i minnet, plus skiljetecken för att separera datat åt. Dessutom blir det inte skalbart för fem öre.

Att ha lite strängdata i session dör inte servern av. Det man kan tänka sig är väl att lagra enbart det som är absolut nödvändigt i session, som t.ex. inloggningsstatus och användarid för att sedan med dessa se till att hämta från databasen när man väl behöver datat istället för att ha det släpande i session hela tiden.

Det är frågan ja, och personligen så kör jag hellre med fler och som du sa endast de nödvändigaste uppgifterna. Det blir enklare och vad jag märkt ingen större skillnad, om ens någon, prestanda mässigt.

Det vara bara ett förslag på hur man kan göra det. Men min rekomenda tion är som Sicos och, som jag uppfattade det, OveRRidEs. Alltså spara endast relevant data men spara i olika sessions för enkelhetens skull.

devotionMedlem sedan jan. 20013 582 inlägg
#11

:) :)

Okidoki

Mvh

devotionMedlem sedan jan. 20013 582 inlägg
#12

:)
Ingen som kan hjälpa mig med lite kod för utloggningen. Får inte ihop det eftersom allt ska vara på "en sida"

Hur används session.abandon i det här fallet?

Och hur gör amn för att vid fel inloggning komma tillbaka till inloggningsformuläret men under det står det "Fel användarnamn eller lösenord, försök igen"

Mvh

SicoMedlem sedan maj 20002 597 inlägg
#13

Om jag nu fattade rätt så...

Tillbaka-knapp:

<a href='javascript:history.go(-1)'>Tillbaka</a>

Logga ut:

If Request.QueryString("logoff") = "check" Then 
	Session.Abandon
	Response.Redirect "index.asp"
End If

Eller menade du funktionen hur man skriver ut att någor är fel med inloggningen?
tex..

SQL = "Select * from MEMBERS Where USER='" & Request.Form("Username") & "'"
set rs = Connect.Execute(SQL)
If rs.EOF Then
'Användaren finns inte
ElseIf rs("PASSWORD") <> Request.Form("Password") Then
'Lösenordet är fel
Else
'Sätt dina sessions och vidareskicka användaren till rätt sida
End If
rs.close

Du måste lägga If-satser runt det mesta och jobba mycket med querystrings när allt ska vara på samma sida. Inkluderar du inga sidor? Det är svårt att svara när man inte vet hur sidan är upplagd.

devotionMedlem sedan jan. 20013 582 inlägg
#14

:)

Hej!

Tack alla som svarat...

Ska nog reda ut det nu!

Annars återkommer jag.... :)

mvh

137 ms totalt · 3 externa anrop · v20260731065814-full.beb2e261
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)