Du får se till att subtypskonvertera i dina jämförelser. Tal skall jämföras som tal. Ex:
If Cint(RecSet("niva")) = 1 Then
11 svar · 598 visningar · startad av Biasse
Jag har ställt till det för mig själv och jag vet inte vad jag gjort för fel. Men min kontroll vill inte godkänna mig mer och ser inte vad jag gör för fel. nam,n & pass är rätt ändå kommer jag bara till admin.asp :r :q
<%
Function secure(txt)
txt = Replace(txt, "'", "''")
secure = txt
End Function
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & server.mappath("admin.mdb")
Set RecSet = Server.CreateObject("ADODB.Recordset")
anvNamn = secure(Request.Form("anvnamn"))
losenord = secure(Request.Form("losenord"))
SQL = "SELECT niva, anvnamn FROM user WHERE anvnamn='" & anvnamn & "' AND losenord='" & losenord &"'"
RecSet.Open SQL, Connect, 3, 3
If not RecSet.EOF Then
Response.Cookies("anvnamn") = RecSet("anvnamn")
Response.Cookies("niva") = RecSet("niva")
If RecSet("niva")="1" Then
strPage="index.asp?action=inne"
elseIf RecSet("niva")="2" Then
strPage="index.asp?action=inne"
End If
RecSet.Close : set recset = nothing
Connect.Close : set connect = nothing
End If
Response.Redirect "index.asp"
%>
Du får se till att subtypskonvertera i dina jämförelser. Tal skall jämföras som tal. Ex:
If Cint(RecSet("niva")) = 1 Then
Den villändå till index.asp?
If Cint(RecSet("niva")) = 1 Then
strPage="index.asp?action=inne?action=inne"
elseIf Cint(RecSet("niva"))="2" Then
strPage="index.asp?action=inne?action=inne"
Ja du skickar den till index.asp
Du får göra en
response.redirect strPage
istället om du ska till "index.asp?action..."
Och det i din if sats.
Om jag ändrar
Response-objekt, ASP 0158 (0x80004005)
En URL krävs.
If Cint(RecSet("niva")) = "1" Then
strPage="index.asp?action=inne"
elseIf Cint(RecSet("niva")) = "2" Then
strPage="index.asp?action=inne"
End If
End If
RecSet.Close : set recset = nothing
Connect.Close : set connect = nothing
Response.Redirect strPage
Isåfall är "strPage" tom. Är du säker på att "RecSet("niva")" innehåller 1 eller 2?
/red. Förresten, du har ett typkonverteringsfel. Cint(1) kan aldrig bli samma som "1", eftersom det senare är en sträng:
If Cint(RecSet("niva")) = 1 Then
strPage="index.asp?action=inne"
elseIf Cint(RecSet("niva")) = 2 Then
strPage="index.asp?action=inne"
End If
För den träffar ingen av dina If frågor.
Du konvertera för det första om en variabel till Int, och sen kollar du om den är lika med en sträng
1 = "1" är inte samma sak.
tabell - user
user_id=1
anvnamn=user1
losenord=test
niva=1
user_id=2
anvnamn=user2
losenord=test
niva=2
I min värld är 1=1 hehe men hur ska jag göra för nu funkar det inte vad jag än försöker. :=)
Ja, 1=1 men 1!="1".
Om du konverterar något till en integer med hjälp av CInt(x), kan du inte jämföra det mot en sträng! Du använder nämligen inte " runt tal. Alltså:
if minString = "innehåll" then
eller
if minInteger = 1 then
beroende på om det är en sträng eller ett tal.
Biasse skrev:
I min värld är 1=1 hehe men hur ska jag göra för nu funkar det inte vad jag än försöker. :=)
Jag gav ju ett kodförslag. Har du testat det?
Biasse skrev:
I min värld är 1=1 hehe men hur ska jag göra för nu funkar det inte vad jag än försöker. :=)
Lär dig skilja på strängar (text) och tal. Det hjälper dig mycket!
******
Studera skillnaden mellan dessa exempel:
tmp1 = 34
tmp2 = 6
response.write tmp1 + tmp2
tmp1 = "34"
tmp2 = "6"
response.write tmp1 + tmp2