webForumDet fria alternativet

Hjälp med inloggningsscript

ASP

2 svar · 210 visningar · startad av zlakker

Medlem sedan apr. 2001227 inlägg
Frågan#1

Jag håller på och försöker reda ut ett inloggningsscript. Jag hittade det när jag sökte i forumet. Själva koden fungerar bra och man kan logga in.

Nu vill jag utveckla det lite. I min tabell..(allt heter som orginalscriptet för tillfället) som heter tabellen finns tre kolumner:
anvandarnamn, losenord och access.
Just nu loggar man bara in om den hittar rätt lösenor med rätt användare. Men jag skulle vilja att den också kollar vilken access man har och beroende på vad det är för värde(A, B , C) så redirectar man användaren till olika sidor.

På de sidorna får man sedan kolla om sessionen är rätt annars kasta ut dem.

Så hur ska man göra för att scriptet ska kolla access-nivån också.

Login1.asp:


<html>
<head>
</head>
<body>

<form method=post action=login2.asp?status=check>
<table width="250" border="0" cellspacing="0" cellpadding="0" align="center">
<tr> 
<td width="120"><b>Användarnamn:</b></td>
<td width="280"><input type="text" name="anvandarnamn"></td>
</tr>
<tr> 
<td width="120"><b>Lösenord:</b></td>
<td width="280"><input type="password" name="losenord"></td>
</tr>
<tr> 
<td width="120"> </td>
<td width="280"> </td>
</tr>
<tr> 
<td width="120"> </td>
<td width="280"><input type="submit" name="Submit" value=" Logga in "></td>
</tr>
</table>
</form>
</body>
</html>

login2.asp:

<%
' LÄNGST UPP PÅ SIDAN START
if request.querystring("status") <> "check" then
response.redirect("login1.asp")
end if
' LÄNGST UPP PÅ SIDAN SLUT

if request.querystring("status") = "check" then
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source ="& Server.MapPath("db/dbse.mdb")
SQL = "SELECT anvandarnamn, losenord FROM tabellen " & _
"WHERE anvandarnamn = '"&request.form("anvandarnamn")&"' AND " & _
"losenord = '"&request.form("losenord")&"' "
Set RS = Connect.Execute(SQL)

if RS.eof then
	response.write "Du har skrivit fel användarnamn eller lösenord!"
else
	session("inloggad") = true
	response.write "Nu kan du gå till <a href=sidan.asp>sidan</a>"
end if
end if
Connect.close
Set Connect = nothing
Set RS = nothing
%>
Medlem sedan juli 20015 107 inlägg
#2
<%

if request.querystring("status") <> "check" then
	response.redirect("login1.asp")
end if

if request.querystring("status") = "check" then
	Set Connect = Server.CreateObject("ADODB.Connection")
	Connect.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source ="& Server.MapPath("db/dbse.mdb")

	SQL = "SELECT anvandarnamn, losenord, access FROM tabellen " & _
	"WHERE anvandarnamn = '"&request.form("anvandarnamn")&"' AND " & _
	"losenord = '"&request.form("losenord")&"' "
	Set RS = Connect.Execute(SQL)

	if RS.eof then
		response.write "Du har skrivit fel användarnamn eller lösenord!"
	else

	'## Lägga in Access i en variabel
	strAccess = RS("access")

	'## Skapa en session som innehåller access
	session("access") = strAccess
	session("inloggad") = true

	[red]'## Skicka vidare användaren till sida beroende på session
	IF session("access") = "A" THEN
		response.redirect "a.asp"
	elseif session("access") = "B" THEN
		response.redirect "b.asp"
	elseif session("access") = "C" THEN
		response.redirect = "c.asp"
	end if[/red]

	end if
end if

Connect.close
Set Connect = nothing
RS.close
Set RS = nothing
%>

Det rödfärgade skulle du kunna byta ut mot följande, om du vill att dom olika behörigheterna ska ligga i ett och samma dokument, fast du skiljer dom åt med en IF sats i måldokumentet.

'## Istället för rödmarkerade i kodstycket ovan
response.redirect "sidan.asp?access=" & session("access")

Session kontrollen för dom olika sidorna kan väl se ut på följande sätt, byt ut röda fetmarkerade mot övriga access, t.ex B och C i dom olika dokumenten

<%
If not session("access") = "[red][b]a[/b][/red]" THEN
	response.redirect "dokument.asp"
end if
%>

Om du vill ha hela inloggade sidan allt som allt i ett och samma dokument kan det se ut på detta vis exempelvis, dvs om du _inte_ använder den rödmarkerade koden, utan använder 1 rads varianten med querystring!

<%
strAccess = request.querystring("access")

If strAccess = "a" THEN
	If not session("access") = "a" THEN
		response.redirect "dokument.asp"
	end if
	response.write "Du är inne med behörighet A"

elseif strAccess = "b" THEN
	If not session("access") = "b" THEN
		response.redirect "dokument.asp"
	end if
	response.write "Du är inne med behörighet B"

elseif strAccess = "c" THEN
	If not session("access") = "c" THEN
		response.redirect "dokument.asp"
	end if
	response.write "Du är inne med behörighet C"

end if
%>
Medlem sedan apr. 2001227 inlägg
#3

Tack för att du tog dig tid :bire
Ska testa lite med de förslag du gav.

257 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)