plelkesMedlem sedan mars 2002823 inlägg 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ö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>
cyprysMedlem sedan dec. 20003 563 inlägg 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 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 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 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 <%
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 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 Säkerhetsdetalj. Kolla den här tråden.
plelkesMedlem sedan mars 2002823 inlägg 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 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 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 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 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 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 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 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 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 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 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 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