webForumDet fria alternativet

Inloggningssida funkar ej

ASPur ASP

26 svar · 429 visningar · startad av plelkes

plelkesMedlem sedan mars 2002823 inlägg
#1

Hej,

har snickrat på en inloggningssida.
Själva formuläret kan ses här

logg.asp

<%
if Request.Form("in") = "stig in" Then 'vill användaren logga in?

Set gbok = Server.CreateObject( "Adodb.Connection" )
gbok.Provider = "Microsoft.Jet.OLEDB.4.0"
MdbFilePath = Server.MapPath("\plelkes\db\guests.mdb")
gbok.ConnectionString = "Data Source='" & MdbFilePath & "'"
gbok.open
strUser = Request.Form("Anamn")
strPasw = Request.Form("pword")

strSQL1 = "SELECT* FROM admin WHERE anvnamn='"& strUser &"'"
strSQL2 ="SELECT* FROM admin WHERE password ='" & strPasw & "'"
Set rs = gbok.Execute( strSQL1)
IF rs.EOF Then
Respons.Write "Du angav fel Användarnamn! <BR> Försök igen!"
Response.Redirect("default.asp")
Else
Set rs = gbok.Execute( strSQL2)
IF rs.EOF Then
Respons.Write "Du angav fel Lösenord! <BR> Försök igen!"
Response.Redirect("default.asp")
End if
Session("inloggad") = "Ja"
gbok.Close
Set gbok = Nothing

Response.Redirect "redigera.asp"
End If %>

Följande händer:

  • oavsett om jag anger rätt eller fel kombination av namn och lösenord får jag följande felutskrift:

Microsoft VBScript compilation error '800a03f6'

Expected 'End'

/plelkes/logg.asp, line 29

Och "line 29" ser ut som:

End If %>

Den lösenordsskyddade sidan:

<%
If Session ("Inloggad") = "Ja" then
Else
Response.Write "Du är inte auktoriserad"
%>

<html>
<head>
<title>Redigera</title>
<meta http-equiv=Content-Type content=text/html; charset=iso-8859-1>

</head>

<%  
Session.LCID = 1053 
dim minCon 'Connection
     dim rsGbok 'recordsetten f&ouml;r nya inl&auml;gg
     dim strSQL

Set minCon = Server.CreateObject("ADODB.Connection")
set rsGbok = Server.CreateObject("ADODB.Recordset")

minCon.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("\plelkes\db\guests.mdb")
strSQL =" SELECT * FROM guestbook ORDER by ID DESC"
rsGbok.Open strSQL, minCon, 3, 3
	Response.Write "<p align=center><font size=7><b><i><font color=#FFCC33 SIZE=""+3"">"
	Response.Write "Nu kan du" & rs.guests.admin("Fnamn") 
	Response.Write "redigera g&auml;stboken!"
	Response.Write "</U></font></i></b></font></p><BR><BR><BR>"
	Response.Write "<FORM ACTION=""radera.asp"" METHOD=""post""></FORM>"
	Response.Write "<TABLE WIDTH=""800""  BORDER=""1"" ALIGN=""CENTER"" CELLPADDING=""5"" CELLSPACING=""5"">"
Do While Not rsGbok.EOF
    Response.Write "<TR> <TD WIDTH=""149""><H3><B><U>"
    Response.Write rsGbok("Namn")
	Response.Write "</U></B></H3></TD>"
	Response.Write "<TD WIDTH=""556"">"
    Response.Write rsGbok("Message")
	Response.Write "</TD><TD WIDTH=""37"">"
	Response.Write "<INPUT NAME=""delete"" TYPE=""checkbox"" VALUE="""& rsGbok("ID") &""">"
    Response.Write "</TD></TR>"
	Response.Write "<TR ALIGN=""RIGHT"" VALIGN=""MIDDLE"">"
    Response.Write "<TD COLSPAN"="3"">"
	Response.Write "<INPUT TYPE=""submit"" VALUE=""Radera markerade"">"
	Response.Write "</TD></TR>"
rsGbok.MoveNext
Loop
  Response.Write "</TABLE></FORM>"
rsGbok.Close
Set rsGbok = Nothing
Set minCon = Nothing
End If  %>
</body>
</html>
cyprysMedlem sedan dec. 20003 563 inlägg
#2

logg.asp

<%
if Request.Form("in") = "stig in" Then 'vill användaren logga in?

Set gbok = Server.CreateObject( "Adodb.Connection" )
gbok.Provider = "Microsoft.Jet.OLEDB.4.0"
MdbFilePath = Server.MapPath("\plelkes\db\guests.mdb")
gbok.ConnectionString = "Data Source='" & MdbFilePath & "'"
gbok.open

strUser = Request.Form("Anamn")
strPasw = Request.Form("pword")

StrSQL = "SELECT anvnamn, [password] FROM admin WHERE anvnamn = '" & strUser & "' AND [password] = '" & strpasw & "'
Set Rs = gbok.Execute(strSQL)

Dim errmsg
if Rs.Eof then
  errmsg = true
else
  Session("inloggad") = true
end if

gbok.Close
Set gbok = Nothing

if errmsg = true then response.redirect("default.asp")
if session("inloggad") = true then response.redirect("redigera.asp")

End If %>
plelkesMedlem sedan mars 2002823 inlägg
#3

Tack för ditt snabba svar,
men med din lösning så vet ju "inloggaren" inte ifall det är fel på användarnamnet, eller på lösenordet.
Det är vad jag försker åstadekomma med mina kråkfötter till kod

cyprysMedlem sedan dec. 20003 563 inlägg
#4

Visserligen, men är det verkligen nödvändigt?

Men om du skriver response.write och sedan response.redirect direkt efter så förflyttas du ju utan att se något meddelande.

Ska denne se meddelande eller förflyttas?

Exempel på hur göra med ditt önskelmål

Set rs1 = conn.execute(SQL1)
if rs1.eof
    response.write("Fel användarnamn")
else
    Set rs2 = conn.execute("SELECT * FROM tbl WHERE username = strUser AND pass = strPasw")
    if rs2.eof then
        response.write("Fel lösenord")
    else
        session("inloggad") = true
    end if
end if

Tankegången illustreras i alla fall.
Jag rekommenderar i alla fall mitt sätt.
Att visa när man har rätt användarnamn men fel lösenord för, vad jag menar, inget gött med sig. ;)

plelkesMedlem sedan mars 2002823 inlägg
#5

Envis som en åsna är jag, och har därför ändrat lite i min kod

<%
if Request.Form("in") = "stig in" Then 'vill användaren logga in?

Set gbok = Server.CreateObject( "Adodb.Connection" )
gbok.Provider = "Microsoft.Jet.OLEDB.4.0"
MdbFilePath = Server.MapPath("\plelkes\db\guests.mdb")
gbok.ConnectionString = "Data Source='" & MdbFilePath & "'"
gbok.open
strUser = Request.Form("Anamn")
strPasw = Request.Form("pword")

strSQL1 = "SELECT* FROM admin WHERE anvnamn='"& strUser &"'"
strSQL2 ="SELECT* FROM admin WHERE password ='" & strPasw & "'"
Set rs = gbok.Execute( strSQL1)
IF rs.EOF Then
Response.Redirect("fel_anv.html")
Else
Set rs = gbok.Execute( strSQL2)
IF rs.EOF Then
Response.Redirect("fel_passw.asp")
End if
Session("inloggad") = "Ja"
gbok.Close
Set gbok = Nothing

Response.Redirect "redigera.asp"
End If %>

Fortfarande dock samma felutskrift:

Microsoft VBScript compilation error '800a03f6'

Expected 'End'

/plelkes/logg.asp, line 27

Engine^Medlem sedan dec. 20003 887 inlägg
#6
<%
if Request.Form("in") = "stig in" Then [blue]'vill användaren logga in?[/blue]

  Set gbok = Server.CreateObject( "Adodb.Connection" )
  gbok.Provider = "Microsoft.Jet.OLEDB.4.0"
  MdbFilePath = Server.MapPath("\plelkes\db\guests.mdb")
  gbok.ConnectionString = "Data Source='" & MdbFilePath & "'"
  gbok.open

  strUser = Replace(Request.Form("Anamn"), "'", "''")
  strPasw = Replace(Request.Form("pword"), "'", "''")

  strSQL1 = "SELECT* FROM admin WHERE anvnamn='"& strUser &"'"
  strSQL2 ="SELECT* FROM admin WHERE password ='" & strPasw & "'"

  Set rs = gbok.Execute( strSQL1)
  IF rs.EOF Then
    Response.Redirect("fel_anv.html")
  Else
    Set rs = gbok.Execute( strSQL2)

    IF rs.EOF Then
      Response.Redirect("fel_passw.asp")
    End if

    Session("inloggad") = "Ja"
    gbok.Close
    Set gbok = Nothing

    Response.Redirect "redigera.asp"
  End If
[b]End If[/b] [blue]'<--- Kan vara bra att ha...[/blue]
%>
plelkesMedlem sedan mars 2002823 inlägg
#7

Tack Engine^ för hjälpen..
Men vilka fördelar och vilka fel/nackdelar har din kod

  strUser = Replace(Request.Form("Anamn"), "'", "''")
  strPasw = Replace(Request.Form("pword"), "'", "''")

jämfört med min

strUser = Request.Form("Anamn")
strPasw = Request.Form("pword")
Engine^Medlem sedan dec. 20003 887 inlägg
#8

Säkerhetsdetalj. Kolla den här tråden.

plelkesMedlem sedan mars 2002823 inlägg
#9

Nu funkar det nästan...
Ngra problem kvar dock. Som ni ser kör jag brinkster.
1:a problemet:
jag kan besöka den skyddade sidan genom att skriva in dess address

2:a problemet: jag vill skriva ut på sidan förnamnet på den som loggar in. Har försökt med:
rsGbok("Fnamn")
rsguest.admin("Fnamn")

databasen heter guest.mdb
har 2 tabeller admin, guestbook

mrblondeMedlem sedan aug. 20012 349 inlägg
#10
If NOT Session ("Inloggad") = "Ja" then
Response.Write "Du är inte auktoriserad"
Response.end
end if

kanske funkar bättre...

Engine^Medlem sedan dec. 20003 887 inlägg
#11

1: På varje sida som du vill ha skyddad kan du som första händelse kontrollera att användaren är inloggad. Typ:

If Not Session("inloggad") = "Ja" Then
  Response.Write "Det krävs att du är inloggad för att komma åt denna sida."
Else
  [blue]'Resten av sidan, som den ska vara[/blue]
End If
plelkesMedlem sedan mars 2002823 inlägg
#12

Som ni ser lite högre upp i inlägget, så har jag en konstruktion som liknar eran!!

<%
If Session ("Inloggad") = "Ja" then
Else
Response.Write "Du är inte auktoriserad"
%>

<html>
<head>
<title>Redigera</title>
<meta http-equiv=Content-Type content=text/html; charset=iso-8859-1>

</head>

<%  
Session.LCID = 1053 
dim minCon 'Connection
     dim rsGbok 'recordsetten för nya inlägg
     dim strSQL

Set minCon = Server.CreateObject("ADODB.Connection")
set rsGbok = Server.CreateObject("ADODB.Recordset")

minCon.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("\plelkes\db\guests.mdb")
strSQL =" SELECT * FROM guestbook ORDER by ID DESC"
rsGbok.Open strSQL, minCon, 3, 3
	Response.Write "<p align=center><font size=7><b><i><font color=#FFCC33 SIZE=""+3"">"
	Response.Write "Nu kan du" & rs.guests.admin("Fnamn") 
	Response.Write "redigera gästboken!"
	Response.Write "</U></font></i></b></font></p><BR><BR><BR>"
	Response.Write "<FORM ACTION=""radera.asp"" METHOD=""post""></FORM>"
	Response.Write "<TABLE WIDTH=""800""  BORDER=""1"" ALIGN=""CENTER"" CELLPADDING=""5"" CELLSPACING=""5"">"
Do While Not rsGbok.EOF
    Response.Write "<TR> <TD WIDTH=""149""><H3><B><U>"
    Response.Write rsGbok("Namn")
	Response.Write "</U></B></H3></TD>"
	Response.Write "<TD WIDTH=""556"">"
    Response.Write rsGbok("Message")
	Response.Write "</TD><TD WIDTH=""37"">"
	Response.Write "<INPUT NAME=""delete"" TYPE=""checkbox"" VALUE="""& rsGbok("ID") &""">"
    Response.Write "</TD></TR>"
	Response.Write "<TR ALIGN=""RIGHT"" VALIGN=""MIDDLE"">"
    Response.Write "<TD COLSPAN"="3"">"
	Response.Write "<INPUT TYPE=""submit"" VALUE=""Radera markerade"">"
	Response.Write "</TD></TR>"
rsGbok.MoveNext
Loop
  Response.Write "</TABLE></FORM>"
rsGbok.Close
Set rsGbok = Nothing
Set minCon = Nothing
End If  %>
</body>
</html>
Engine^Medlem sedan dec. 20003 887 inlägg
#13

Jo, men den gör väl tvärtemot det du vill...

If Not Session ("Inloggad") = "Ja" then
  Response.Write "Du är inte auktoriserad"
Else

är väl som du vill ha det förmodar jag.

plelkesMedlem sedan mars 2002823 inlägg
#14

Har lite svårt, för att inte säga hellt omöjligt för mig att se skillnaden i de två koderna.
med min

<%
If Session ("Inloggad") = "Ja" then
Else
Response.Write "Du är inte auktoriserad"
%>

vill jag säga attom du är inloggad så fortsätt ladda sidan. Om ej inloggad så skriv "att du är inte auktoriserad"

plelkesMedlem sedan mars 2002823 inlägg
#15

Och med din

If Not Session ("Inloggad") = "Ja" then
  Response.Write "Du är inte auktoriserad"
Else

Engine ,
säger du väl att:
Om du inte är inloggad skriv "Du är inte auktoriserad"
i annat fall fortsätt ladda sidan
Om mina antagande stämmer, så fattar jag noll

mrblondeMedlem sedan aug. 20012 349 inlägg
#16

men din kod säger, om du är inloggad, gör ingenting, annars skriv "du är inte inloggad" och sen fortsätter du med koden för resten av sidan.

Om det inte fungerar nu, och vi rekommenderar att du skriver något annat så kan det kanske var så att vi har en poäng ;)

plelkesMedlem sedan mars 2002823 inlägg
#17

mrblonde

Om det inte fungerar nu, och vi rekommenderar att du skriver något annat så kan det kanske var så att vi har en poäng

jag håller hellt med dig, jag försöker bara förstå för att kunna lära mig!!
Fö fattar jag fortfarande inte skillnaden, men..

Nu ser sidans kod som följer

<%
If Not Session ("Inloggad") = "Ja" then
Response.Write "Du är inte auktoriserad"
Else

<html>
<head>
<title>Redigera</title>
<meta http-equiv=Content-Type content=text/html; charset=iso-8859-1>

</head>

<%  
Session.LCID = 1053 
dim minCon 'Connection
     dim rsGbok 'recordsetten för nya inlägg
     dim strSQL

Set minCon = Server.CreateObject("ADODB.Connection")
set rsGbok = Server.CreateObject("ADODB.Recordset")

minCon.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("\plelkes\db\guests.mdb")
strSQL =" SELECT * FROM guestbook ORDER by ID DESC"
rsGbok.Open strSQL, minCon, 3, 3
	Response.Write "<p align=center><font size=7><b><i><font color=#FFCC33 SIZE=""+3"">"
	Response.Write "Nu kan du" & rs.guests.admin("Fnamn") 
	Response.Write "redigera gästboken!"
	Response.Write "</U></font></i></b></font></p><BR><BR><BR>"
	Response.Write "<FORM ACTION=""radera.asp"" METHOD=""post""></FORM>"
	Response.Write "<TABLE WIDTH=""800""  BORDER=""1"" ALIGN=""CENTER"" CELLPADDING=""5"" CELLSPACING=""5"">"
Do While Not rsGbok.EOF
    Response.Write "<TR> <TD WIDTH=""149""><H3><B><U>"
    Response.Write rsGbok("Namn")
	Response.Write "</U></B></H3></TD>"
	Response.Write "<TD WIDTH=""556"">"
    Response.Write rsGbok("Message")
	Response.Write "</TD><TD WIDTH=""37"">"
	Response.Write "<INPUT NAME=""delete"" TYPE=""checkbox"" VALUE="""& rsGbok("ID") &""">"
    Response.Write "</TD></TR>"
	Response.Write "<TR ALIGN=""RIGHT"" VALIGN=""MIDDLE"">"
    Response.Write "<TD COLSPAN"="3"">"
	Response.Write "<INPUT TYPE=""submit"" VALUE=""Radera markerade"">"
	Response.Write "</TD></TR>"
rsGbok.MoveNext
Loop
  Response.Write "</TABLE></FORM>"
rsGbok.Close
Set rsGbok = Nothing
Set minCon = Nothing
End If  %>
</body>
</html>

Nu får jag felutskriften:

Microsoft VBScript compilation error '800a0400'

Expected statement

/plelkes/redigera.asp, line 7

<html>
^

på line 7 står det: <html>

Engine^Medlem sedan dec. 20003 887 inlägg
#18

Du har html-kod i scriptet...

<%
If Not Session ("Inloggad") = "Ja" then
Response.Write "Du är inte auktoriserad"
Else
%> [blue]'<---- Glöm inte att avsluta asp-taggar...[/blue]
<html>
<head>
<title>Redigera</title>
<meta http-equiv=Content-Type content=text/html; charset=iso-8859-1>

</head>

<%  
Session.LCID = 1053
plelkesMedlem sedan mars 2002823 inlägg
#19

Tack nu fungerar det..
Inte för att jag ser skillnaden mellan de två sätten att skriva, men "ASP" gör det iaf

Engine^Medlem sedan dec. 20003 887 inlägg
#20
If [i]värde1[/i] = [i]värde2[/i] Then
  [blue]' Utför saker här om [i]värde1[/i] är lika med [i]värde2[/i][/blue]
Else
  [blue]' Annars gör det här...[/blue]
End If

Eller

If [b]Not[/b] [i]värde1[/i] = [i]värde2[/i] Then
  [blue]' Utför saker här om [i]värde1[/i] [b]inte[/b] är lika med [i]värde2[/i][/blue]
Else
  [blue]' Annars gör det här... dvs om [i]värde1[/i] är lika med [i]värde2[/i][/blue]
End If
147 ms totalt · 3 externa anrop · v20260731065814-full.a2ca460b
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
145 ms — hämta tråd, inlägg och bilagor (db)