webForumDet fria alternativet

fel vid hämtning av id

ASP

19 svar · 457 visningar · startad av Sico

Medlem sedan maj 20002 597 inlägg
Frågan#1

Jag har lagrat värdet såhär

Response.Cookies("Login")("UserID") = rsUser("f_ID")

När jag ska hämta cookievärdet eller sessionvärdet genom sql-strängen så blir det fel...

SQL = "SELECT * FROM t_Members Where f_ID="& Session("UserID") &" OR f_ID="& Request.Cookies("Login")("UserID") &""

Error Type:
Microsoft JET Database Engine (0x80040E14)
Syntax error (missing operator) in query expression 'f_ID= OR f_ID=173'.

Medlem sedan juni 200032 967 inlägg
#2

Så kan du inte göra, som du märkte. Du får kontrollera innan du skapar SQL-satsen om värdet kommer från en cookie eller en session.

if isnumeric(Request.Cookies("Login")("UserID")) then
     intID = Request.Cookies("Login")("UserID")
elseif isnumeric(Session("UserID")) then
     intID = Session("UserID")
end if

SQL = "SELECT * FROM t_Members Where f_ID="& intID

Mvh,

Medlem sedan maj 20002 597 inlägg
#3

tackar @nders, trodde man kunde gör det i SQL-strängen :( .. man lär sig mkt här.. 100% av mina tummar står upp för wF :e

Medlem sedan maj 20002 597 inlägg
#4

Sen vidare till nästa problem
Vid utloggningen hade jag då tänkt mig...

If Request.QueryString("menu") = "logoff" Then 

	If Request.Cookies("Login")("User") = "Yes" Then
	     [b]Response.Cookies("Login")("User").Expires[/b]
	ElseIf Session("User") = "Yes" Then
	     Session.Abandon
	End If

Response.Redirect "login.asp?login"
End If

Error Type:
Microsoft VBScript runtime (0x800A01B6)
Object doesn't support this property or method: '[object]'
/forum/admin.asp, line 23

Jag lägger till kakorna såhär..

		Response.Cookies("Login")("User") = "Yes"
		Response.Cookies("Login")("UserID") = rsUser("f_ID")
		Response.Cookies("Login")("Admin") = rsUser("f_Admin")
		Response.Cookies("Login")("User").Expires = DateAdd("y",2,Now())

Kanske finns bättre sätt att göra? hur?

Medlem sedan juni 200032 967 inlägg
#5

Du måste sätta ett datum för då kakan slutar gälla.

Response.Cookies("Login").Expires [b] = dateadd("d", -20, date)[/b]

red: glömde stänga fettext

Mvh,

Medlem sedan maj 20002 597 inlägg
#6

tackar, mkt probs nu.... såg ett fel vid ditt förra svar.. det funkar inte om man loggar in med session av nån anledning

Error Type:
Microsoft JET Database Engine (0x80040E14)
Syntax error (missing operator) in query expression 'f_ID='.

Medlem sedan juni 200032 967 inlägg
#7

Heter sessionen UserID?

Det verkar som att den sessionen inte har något värde av någon anledning. Är du säker på att sessionen är satt?

Medlem sedan maj 20002 597 inlägg
#8

jepp

Medlem sedan maj 20002 597 inlägg
#9

men du kan få inspektera mitt inloggnings-script.. jag är inte nöjd med det.. det är inte så bra koder va?

If Request.QueryString("login") = "check" Then 

Set rsUser = Server.CreateObject("ADODB.Recordset")

SQL = "Select * from t_Members Where f_User='" & Request.Form("Username") & "'"

RSUser.Open SQL,Connect,1,2

If rsUser.EOF Then

Response.Write "<font class=smallheader>Användaren finns inte.</font><br>" &_
	"<a href=""javascript:history.go(-1)"">Tillbaka</a>"

ElseIf rsUser("f_Password") <> Request.Form("Password") Then

Response.Write "Lösenordet är felaktigt för" &_
	"<font class=smallheader> "& Request.Form("Username") &" </font><br>" &_
	"<a href=""javascript:history.go(-1)"">Tillbaka</a>"

Else
	If rsUser("f_Cookie") = "1" Then
		Response.Cookies("Login")("User") = "Yes"
		Response.Cookies("Login")("UserID") = rsUser("f_ID")
		Response.Cookies("Login")("Admin") = rsUser("f_Admin")
		Response.Cookies("Login").Expires = DateAdd("y",2,Now())
		Response.Redirect "admin.asp?profile"
	Else
		Session("User") = "Yes"
		Session("UserID") = rsUser("f_ID")
		Session("Admin") = rsUser("f_Admin")
		Response.Redirect "admin.asp?profile"
	End If

End If

RSUser.close
Connect.close

End If
Medlem sedan juni 200032 967 inlägg
#10

När du kommer till admin-sidan, vilket värde har då Session("UserID")? Prova att skriva ut det direkt när du kommer till adminsidan.

mvh,

Medlem sedan maj 20002 597 inlägg
#11

Då skriver den det korrekta värdet

Medlem sedan juni 200032 967 inlägg
#12

Som är? Numeriskt? Om du skriver ut isnumeric(session("UserID")), vad säger den då?

Prova detta stället:

if isnumeric(Request.Cookies("Login")("UserID")) then
     intID = Request.Cookies("Login")("UserID")
else
     intID = Session("UserID")
end if

mvh,

Medlem sedan maj 20002 597 inlägg
#13

samma fel.. jepp. det är numeriskt

Medlem sedan maj 20002 597 inlägg
#14

hmm, när jag skriver ut isnumeric(session("UserID")) så bliur resultatet True

Medlem sedan juni 200032 967 inlägg
#15

Då får vi prova lite fulkod:

intID = Request.Cookies("Login")("UserID")
if not session("UserID") = "" then intID = Session("UserID")

mvh,

Medlem sedan maj 20002 597 inlägg
#16

det funkade. har du nån aning varför?
vet ju inte om det känns så stabilt när du säger fulkod ;)

Medlem sedan juni 200032 967 inlägg
#17

Kan det vara så att cookien finns, trots att man har en session?

Medlem sedan maj 20002 597 inlägg
#18

jag testade å skriva ut kakan när jag loggat in med session å då stog det "True" ..

Medlem sedan juni 200032 967 inlägg
#19

Då är det därför.

Vi gör så här istället.
Vi kollar längd istället.

if Len(Request.Cookies("Login")("UserID")) >0 then
     intID = Request.Cookies("Login")("UserID")
elseif len(Session("UserID")) >0 then
     intID = Session("UserID")
else
     'varken eller, vi sätter till 0
     intID = 0
end if

Jag lade till en else. Jag vet dock inte om den behövs eftersom jag inte sett resten av din kod. Du får väl plocka bort den om den inte behövs.

Mvh,

Medlem sedan maj 20002 597 inlägg
#20

det funkade med både sessions å cookies.. tackar...
en fråga angående loginscriptet... hur väl e det gjort? det finns en röst inne i mig som säger att dkoderna inte är dom bästa precis

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