webForumDet fria alternativet

inloggning

23 svar · 329 visningar · startad av maniac

maniacMedlem sedan feb. 200150 inlägg
#1

hur ska denna kod se ut för att man inte ska kunna använda tex. användare nr1s användarnamn och användare nr2s lösenord?

<%	Set Connect = Server.CreateObject("ADODB.Connection")
	Connect.Open "databas"

	Set RecSet = Server.CreateObject("ADODB.Recordset") %>

<% '====================================================================================================================== %>
<% ' Kontrollera användarnamn, lösenord och behörighet %>
<% '====================================================================================================================== %>

<% Visa = "SELECT * FROM tbMembers"
   RecSet.Open Visa, Connect, adOpenStatic, adLockOptimistic

	X = FALSE

	Do Until X = TRUE OR RecSet.EOF

	If RecSet("strUser") = Request.Form("Username") Then
	X = TRUE
	Exit Do
	End If

	RecSet.MoveNext

	Loop

	If X = TRUE Then

		Y = FALSE
		Do Until Y = TRUE OR RecSet.EOF

		If RecSet("strPass") = Request.Form("password") Then
		Y = TRUE
		Exit Do
		End If

		RecSet.MoveNext

		Loop

	End If

	If X = FALSE Then
	Response.Write "Wrong username!"

	ElseIf Y = FALSE Then
	Response.Write "Wrong password!"

	End If

	If X = TRUE AND Y = TRUE Then %>

<% session("username") = RecSet("strUser") %>
<% session("login") = "yes" %>

<%	If session("login") = "yes" then %>

<% Response.Redirect "admin_default.asp" %>

<% End If %>

<% Else %>

<%	End If
	RecSet.Close
	Connect.Close %>

------------------
kung fu fighter

@ndersMedlem sedan juni 200032 969 inlägg
#2

jag hatar idg. idgs inloggningsscript är sämst i hela världen.

skit, skit, skit, skit. avföring, exkrement.

<% 
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "databas"

Visa = "SELECT * FROM tbMembers where strUser = '" & request.form("username") & "' and strPass = '" & request.form("password") & "'"
set RecSet = Connect.execute(visa)

if RecSet.eof then
response.write "Du har angett fel användarnamn eller lösenord!"
else
session("username") = RecSet("strUser")
session("login") = "yes"
end if

RecSet.Close
Connect.Close

if session("login") = "yes" then Response.Redirect "admin_default.asp"

%>

kortare, smartare, säkrare och framför allt inte fel.

------------------
<A HREF="http://cartman.nu" TARGET=_blank>
nobody expects the spanish inquisition!</A>

maniacMedlem sedan feb. 200150 inlägg
#3

den står bara och tuggar efter jag fyllt i formuläret :/

@ndersMedlem sedan juni 200032 969 inlägg
#4

hur ser hela din kod ut nu då?

du förstod att den koden jag skrev var en ersättning för hela idg-skräpet?

------------------
<A HREF="http://cartman.nu" TARGET=_blank>
nobody expects the spanish inquisition!</A>

maniacMedlem sedan feb. 200150 inlägg
#5

Jag fick höra att det inte var så bra att kolla en session direkt så jag tog bort den...

<html>

<% 
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "databas"

Visa = "SELECT * FROM tbMembers where strUser = '" & request.form("username") & "' and strPass = '" & request.form("password") & "'"
Set RecSet = Connect.Execute(visa)

if RecSet.eof then
response.write "Wrong username or password"
else
session("username") = RecSet("strUser")
session("login") = "yes"
end if

RecSet.Close
Connect.Close

Response.Redirect "admin_default.asp"

%>

</html>

[Redigerat av maniac den 19 maj 2001]

jepsOMedlem sedan mars 2001484 inlägg
#6

I din kod skickas du vidare till admin_default.asp även om du skrivit in fel användarnamn/lösenord. Att det skulle vara dumt att kolla en session direkt låter bara befängt. Kör med @nders kod.

Sorgligt att så många börjar med IDG:s guide (inklusive jag själv) - man upptäcker sedan hur idiotiskt kodat det mesta är hos dem :(

------------------
/ jeps0

maniacMedlem sedan feb. 200150 inlägg
#7

jepso det var hans kod från början och den fungerade inte. kan du inte fixa till min så den är rätt ? :)

förresten var det Vide som sa det där om att det var dåligt att kolla sessions. han brukar ju ha rätt :)

crisse6Medlem sedan dec. 20002 526 inlägg
#8

jag hade också idg´s skript, men som sagt det är värdelöst... skriver du in ett username (ditt te x) om du skriver in någon annans lösen = du kommer in x(

skit!

jag tog brw´s skript och fick hjälp av asp-kungarna här på wf... PatrikB oså...
kolla:

<%
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open ("driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("users.mdb"))

Visa = "SELECT * FROM users WHERE Username='" & Request.Form("Username") & "' AND Password='" & Request.Form("Password") & "'"
Set RecSet = Connect.Execute(Visa)

If RecSet.EOF Then
	Response.Redirect("om man skriver fel.asp")
Else

	Session("Username") = RecSet("Username")
	Session("Password") = RecSet("Password")
	Session("id") = RecSet("id")
	
	'##### ditt usernam = om den känner av att du te x med ett visst username så kommer du till adminsidan!
	If Session("username") <> "ditt username" Then
		Response.Redirect("sidan där medlemmar kommer till.asp")
	Else
	'######## Sidan för adminen, för ändringar mm #######
		Response.Redirect "adminsidan.asp"
	End If

End If

'## -- clean up --
	RecSet.Close
Set RecSet = nothing

	Connect.Close
Set Connect = nothing
%>

sedan en include, inte på den sidan som har koden ovan! (då tuggar den)
denna include koden:

<%
If Session("username") = "" Then
Response.Redirect "test.asp"
ElseIf Session("password") = "" Then
Response.Redirect "test.asp"
End If
%>

och sedan en annan include som ligger på adminsidan för att försäkra sig om någon inte adminare försöker ta sig in har du denn kod i includen, men bara på dom sidor som är admin!

<% 
Session.Timeout = 10

If Session("username") <> "ditt valda username" Then
Response.Redirect("start.asp")
End If
%>

------------------
www.groda.net *kvack*, *kvack*

jepsOMedlem sedan mars 2001484 inlägg
#9

Kom iofs på vad Vide kan ha menat. Om en annan site med ASP-inloggning använder en likadan cookie kan det innebära att man loggas in på din site med.
Såhär:

<% 
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "databas"
Visa = "SELECT * FROM tbMembers where strUser = '" & request.form("username") & "' and strPass = '" & request.form("password") & "'"
set RecSet = Connect.execute(visa)

if RecSet.eof then
response.write "Du har angett fel användarnamn eller lösenord!"
else
session("username") = RecSet("strUser")
session("login") = "yes"
login="yes"
end if

RecSet.Close
Connect.Close

if login = "yes" then Response.Redirect "admin_default.asp"
%>

Enda skillnaden är att du använder en vanlig variabel istället för en session.

------------------
/ jeps0

[Redigerat av jepsO den 19 maj 2001]

PatrikBMedlem sedan mars 20002 836 inlägg
#10

Jag fick höra att det inte var så bra att kolla en session direkt så jag tog bort den...

Varför då sätta någon session överhuvudtaget om du inte ska "kolla" den/i den?

cya,
PatrikB

------------------
*Det tar sig sa han som hade eld i håret*

@ndersMedlem sedan juni 200032 969 inlägg
#11

Om en annan site med ASP-inloggning använder en likadan cookie kan det innebära att man loggas in på din site med.

risken är obefintlig.

någon som kan förstå varför min kod ovan inte är funkis förresten?

------------------
<A HREF="http://cartman.nu" TARGET=_blank>
nobody expects the spanish inquisition!</A>

jepsOMedlem sedan mars 2001484 inlägg
#12

Nej, är så gott som identiskt med mina fullt fungerande inloggningsscript.

Skulle gissa att maniac kanske implementerad den fel i sin kod.

------------------
/ jeps0

maniacMedlem sedan feb. 200150 inlägg
#13

@nders...jag tror inte det var din kod det var fel på :)
när jag ändrade på sidan man skickades till så funkade jeps0s script..så det var nog det som var problemet.

VideMedlem sedan dec. 19998 577 inlägg
#14

Kom iofs på vad Vide kan ha menat. Om en annan site med ASP-inloggning använder en likadan cookie kan det innebära att man loggas in på din site med.

Detta gäller endast om den andra sajten ligger på samma webbplats (inte webbserver).

Jag skulle nog använt @nders kod, men ändrat på en liten detalj (inte kritisk):

<%
Response.buffer = true
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "databas"
Visa = "SELECT * FROM tbMembers where strUser = '" & request.form("username") & "' and strPass = '" & request.form("password") & "'"
set RecSet = Connect.execute(visa)

if RecSet.eof then
response.write "Du har angett fel användarnamn eller lösenord!"
else
session("username") = RecSet("strUser")
session("login") = "yes"
Response.Redirect "admin_default.asp"
end if

RecSet.Close
Connect.Close
%>

Tror knappast det gör skillnad dock... :l

------------------
Budweiser - Slightly contaminated water... probably harmless, but I would recommend boiling before you drink it...
webEye.nu SweQuake.com

[Redigerat av Vide den 20 maj 2001]

@ndersMedlem sedan juni 200032 969 inlägg
#15

vide, varför vill du göra en response.redirect innan du stänger objekten?

------------------
<A HREF="http://cartman.nu" TARGET=_blank>
nobody expects the spanish inquisition!</A>

jepsOMedlem sedan mars 2001484 inlägg
#16

Bra fråga :)

------------------
/ jeps0

VideMedlem sedan dec. 19998 577 inlägg
#17

Är det inte så att hela sidan precesseras klart innan all response tillförs om man kör buffer = true?

Rätta mig om jag har fel, då vill jag gärna veta ;)

------------------
Budweiser - Slightly contaminated water... probably harmless, but I would recommend boiling before you drink it...
webEye.nu SweQuake.com

@ndersMedlem sedan juni 200032 969 inlägg
#18

ok, rätta mig om jag har fel... ;)

syftet med response.buffer = true måste väl ändå vara att ingenting skickas till brusaren innan sidan är helt processad.

inte tills varje kodrad är läst jag kan inte se hur servern kan komma till .close-raderna?

jag tolkar det som så att ingenting skickas till klienten innan servern är klar och har processat hela admin_default.asp.

jag tror vide har fel, men är inte helt säker.

därför ropar jag högt och ljudligt: emission!!! LarsG!!! hilfe!

------------------
<A HREF="http://cartman.nu" TARGET=_blank>
nobody expects the spanish inquisition!</A>

LarsGMedlem sedan dec. 200012 464 inlägg
#19

Jo, det stämmer väl (att response.redirect utförs omedelbums).

Det som behandlas särt är session.abandon som inte utförs förrän hela sidan har processerats.

------------------
essentitia preter non sans multiplicandum

PatrikBMedlem sedan mars 20002 836 inlägg
#20

Jepp, likaså utförs dessa direkt innan hela sidan processat klart:

Response.Flush
Response.End

finns säkert ngt mer :o

cya,
PatrikB

------------------
*Det tar sig sa han som hade eld i håret*

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