webForumDet fria alternativet

Vad är felet? (inloggningskod)

ASP

27 svar · 725 visningar · startad av magnusfeldth

Medlem sedan jan. 20034 480 inlägg
Frågan#1

Jag försöker genom att använda cookies och if-satser hålla en användare inloggad. Den kollar om sessionen inte är online, och är den inte det, men cookien "inloggad"=ja så ska den kolla om cookievärdena för användarnamn och lösenord finns i databasen, och om de finns så ska den skapa sessionen igen.
Kod:

<% if Session("VTXOnline") <> "Ja" and Request.Cookies("tubsockor")("inloggad") = "Ja" then
              
              	Set Connect = Server.CreateObject("ADODB.Connection")
	Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" &Server.MapPath("sockdb/vtforum.mdb")

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

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

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

	X = FALSE

	Do Until X = TRUE OR RecSet.EOF

	If RecSet("Usernamn") = Request.Cookies("tubsockor")("usernamn") 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("Losenord") = Request.Cookies("tubsockor")("losenord") Then
		Y = TRUE
		Exit Do
		End If

		RecSet.MoveNext

		Loop

	

	End If

	If X = TRUE AND Y = TRUE Then 

	Session("VTXOnline") = "Ja"
	Response.Cookies("tubsockor")("usernamn") = RecSet("usernamn")	
	Response.Cookies("tubsockor")("namn") = RecSet("Namn")
	Response.Cookies("tubsockor")("epost") = RecSet("Epost")
	Response.Cookies("tubsockor")("inloggad") = "Ja"
    Response.Cookies("tubsockor").Expires = DateAdd("d", 5, Date)

	
	end if 
	end if%>

Men det blir inget av det! Vad är fel?

Medlem sedan juni 200032 967 inlägg
#2

Till att börja med kan du kasta bort det där inloggningsscriptet (som verkar härstamma från idg, oh hemska idg), så långt du bara kan, gärna dit där pepparn växer.

Scriptet är värdelöst. Katastrofalt och hemskt, och lägg inte tid på att försöka få det att fungera.

Kika här i asp-forumet efter varianter som är 236 miljoner gånger bättre.

Mvh

Medlem sedan jan. 20034 480 inlägg
#3

:e , japp det är idg-script

Medlem sedan juni 200032 967 inlägg
#4

Scriptet tillåter nämligen att vilken användare som helst i tabellen loggar in med vilket lösenord som helst, som finns i tabellen.

Det är enkelt att göra ett inloggningsscript på cirkus fyra rader som är extremt mycket bättre, snabbare och säkrare än de exkrementer du försökt använda ovan.

Det finns inget kodstycke som någonsin producerats i denna värld som motsvarar detta inloggningsscripts värdelöshet.

Medlem sedan sep. 20026 425 inlägg
#5

@nders - du fet-rockar! (fast det visste du väl ;))

Medlem sedan mars 20033 686 inlägg
#6

Håller med m_soderlund!
Så jäkla cool :)

Medlem sedan juni 200032 967 inlägg
#7

Jag skrev om koden i första inlägget till detta:

<% 
if Session("VTXOnline") <> "Ja" and Request.Cookies("tubsockor")("inloggad") = "Ja" then
	Set Connect = Server.CreateObject("ADODB.Connection")
	Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" &Server.MapPath("sockdb/vtforum.mdb")
	strSQL = "SELECT * FROM sockuser [b]WHERE Usernamn = '" & f(Request.Cookies("tubsockor")("usernamn")) & "' AND Losenord = '" & f(Request.Cookies("tubsockor")("losenord")) & "'[/b]"
	set objRS = Connect.Execute (strSQL)
	if not objRS.EOF Then ' Inloggningen är korrekt
		Session("VTXOnline") = "Ja"
		Response.Cookies("tubsockor")("namn") = objRS("Namn")
		Response.Cookies("tubsockor")("epost") = objRS("Epost")
		Response.Cookies("tubsockor").Expires = DateAdd("d", 5, Date)
	End if
	objRS.Close : set objRS = Nothing
	Connect.Close : set Connect= Nothing
End if

function f(strText)
	f = Replace(strText, "'", "''")
end function
%>

Fungerar det bättre?

Medlem sedan jan. 20034 480 inlägg
#8

Sorry, felmess:

Kompileringsfel i Microsoft VBScript (0x800A03EA)
Syntaxfel
/vitatubsockorweb/kollavtxinlogg.asp, line 5, column 170
strSQL = "SELECT 1 FROM sockuser WHERE Usernamn = '" & f(Request.Cookies("tubsockor")("usernamn")) & "' AND Losenord = '" & f(Request.Cookies("tubsockor")("losenord")) & '" &
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------^
Medlem sedan mars 20033 686 inlägg
#9
strSQL = "SELECT 1 FROM sockuser WHERE Usernamn = '" & f(Request.Cookies("tubsockor")("usernamn")) & "' AND Losenord = '" & f(Request.Cookies("tubsockor")("losenord")) & "'" &

Fungerar detta?

Medlem sedan juni 200032 967 inlägg
#10

Så här borde det se ut:

strSQL = "SELECT 1 FROM sockuser WHERE Usernamn = '" & f(Request.Cookies("tubsockor")("usernamn")) & "' AND Losenord = '" & f(Request.Cookies("tubsockor")("losenord")) & "'"

Ledsen, jag klantade mig. Igen.

Mvh

Medlem sedan mars 20033 686 inlägg
#11

@nders skrev:

Ledsen, jag klantade mig. Igen.

Ja! hoppas du skämms rejält nu.
;)

Medlem sedan juni 200032 967 inlägg
#12

Jag kan ju passa på att nämna, att om man ändå håller på, kan man ju passa på att byta ut Access-drivisen till OLEDB-dito. Se https://www.connectionstrings.com .

Mvh

Medlem sedan mars 20033 686 inlägg
#13

Varför skall man göra detta @nders?
Har aldrig riktigt fattat det!

Medlem sedan juni 200032 967 inlägg
#14

OLEDB-drivern är snabbare, och i min uppfattning även bättre än att använda den gamla Access-drivern.

Du kan se jämförelserna här, även om artikeln inte direkt bär dagens datum.

Mvh

Medlem sedan mars 20033 686 inlägg
#15

Okej tack...Ska kolla :)

Medlem sedan jan. 20034 480 inlägg
#16

@nders skrev:

Ledsen, jag klantade mig. Igen.

En tillklantning till så väntar det kanske ett jobb hos IDG? :e

Funkar finfint nu. Ska ta och ändra om detta till min ordinarie inloggskod också, så kan ju idg dra dit peppar växer som nån klok man sa för länge sedan.

Medlem sedan mars 2003970 inlägg
#17

magnusfeldth skrev:

En tillklantning till så väntar det kanske ett jobb hos IDG? :e

Njäe...någon som @nders kan bara inte halka så lågt. :OO :e

Medlem sedan juni 200032 967 inlägg
#18

magnusfeldth skrev:

Funkar finfint nu. Ska ta och ändra om detta till min ordinarie inloggskod också, så kan ju idg dra dit peppar växer som nån klok man sa för länge sedan.

Härligt!

Jag ska be att få understryka dock, att idg gör mycket annat bra. Men just detta inloggningsscript är alldeles fantastiskt, sensationellt, superlativt illa så det faktiskt sjunger sämre än Håkan Hellström.

Mvh

Medlem sedan jan. 20034 480 inlägg
#19

OBS! Det var visst vissa fortsatta problem med koden. Den gillar inte detta:

Körningsfel i Microsoft VBScript (0x800A000D)
Inkompatibla typer: 'Recset'
/vitatubsockorweb/kollavtxinlogg.asp, line 9

Testat att ändra till RS alternativt Recset överallt, samma prob uppstår.

Rad nio är "Response.Cookies("tubsockor")("namn") = Recset("Namn")"

Medlem sedan juni 200032 967 inlägg
#20

Hmm.

Om det är från min kod ovan, så ska det vara objRS, inget annat.

287 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
131 ms — deklarationer (db)
0 ms — hämta statistik (cache)
149 ms — hämta tråd, inlägg och bilagor (db)
130 ms — ändringar (db)