Någon som har lust o kolla igenom min inloggnings kod o optimera den på det allra bästa sättet? Använder en MySQL databas.
<%@ LANGUAGE="VBSCRIPT" %>
<% Response.Expires=-1 %>
<% Response.Buffer = True %>
<% Session.LCID = 1053 %>
<!-- #include file="adovbs.inc" -->
<!-- #INCLUDE VIRTUAL="/include/koppling.asp" -->
<%
Dim vem
vem=lcase(Request.Form("username"))
Set RecSet = Connect.Execute("SELECT * FROM members where username='"& vem &"'")
If RecSet.EOF Then
Session("meddelande") = " Tyvärr!\n Finns ingen Slaf som heter "& vem &".\nSäkert att du stavat rätt?"
Connect.Close
Set Connect = nothing
Response.Redirect "default.asp"
Else
'-------------------------------------------
If Lcase(RecSet("losen")) = Lcase(Request.Form("losen")) Then
'##################### Kontroll om loggat in i dag
If RecSet("inlogg_datum") <> Date() Then
Connect.Execute ("update members set points = points +500, inloggad = inloggad +1 where username='" & vem & "'")
End If
'##################### Slut Koll
Connect.Execute ("update members set mood='"& Request.Form("mood") &"', datum='" & Now() & "', inloggad = inloggad +1, inlogg_datum='" & Date() & "', inlogg_tid='" & Time() & "', status='online', ip='" & Request.ServerVariables("REMOTE_ADDR") & "' where username='" & vem & "'")
if RecSet("kon")="Kille" then
sex = "P"
else
sex = "F"
end if
newage=DateDiff ("d", RecSet("foddes"), Now)
newage=newage / 365
newage=formatnumber(newage,2)
newage=left(newage,2)
Session("sex") = ""& sex &""& newage &""
Session("username") = RecSet("username")
Session("stad") = RecSet("stad")
Session("login") = "ok"
Session("id") = RecSet("id")
Session("minonline") = now()
Session.TimeOut = 40
'----- Rensar bort sånna som inte loggat ut korrekt.. -------
Connect.Execute "UPDATE members set status='offline', var_pa_sajten='-', minonline='0' WHERE status='online' AND date_add(datum, interval 40 minute) < now()"
'---------------- SLUT PÅ UTRENSNINGEN ------------------
'--------------------- Kollar om det är ett nytt online rekord
Set Rs = Connect.Execute("SELECT COUNT(username) AS Antalet FROM members WHERE status='online'")
Set Rs2 = Connect.Execute("SELECT antal FROM onlinerekord")
IF Rs("Antalet") > Rs2("antal") Then
Connect.Execute ("UPDATE onlinerekord set antal='"& Rs("Antalet") &"', datum='" & Now() & "', slaf='" & vem & "'")
End If
Rs.Close
Set Rs=Nothing
Rs2.Close
Set Rs2=Nothing
'--------------------- Kollar om det är ett nytt online rekord SLUT
Response.Cookies("SKENE_USER") = "" & session("username") &""
Response.Cookies("SKENE_USER").Expires = "23 Feb, 2007 "
Response.Redirect "main.asp"
Else
Session("meddelande") = " Tyvärr!\n Fel användarnamn eller lösenord. Försök igen!"
Connect.Close
Set Connect = nothing
Response.Redirect "default.asp"
End If
RecSet.Close
Set RecSet = Nothing
Connect.Close
Set Connect = nothing
End If
%>
If Lcase(RecSet("losen")) = Lcase(Request.Form("losen")) Then
vissa personer tycker inte om att man bara ha lcase kombination när det gäller lösenord.. username är OK med lcase men inte lösenordet tycker jag :e ska kolla lite mer på koden och återkommer :e
jag ser inte att du använder <!-- #include file="adovbs.inc" -->.. annars ändrade jag bara lite på din kod.. men jag tror det ska vara samma resultat:
<%@ LANGUAGE="VBSCRIPT" %>
<%
Response.Expires=-1
Response.Buffer = True
Session.LCID = 1053
%>
<!-- #INCLUDE VIRTUAL="/include/koppling.asp" -->
<%
Dim vem
vem=lcase(Request.Form("username"))
Set RecSet = Connect.Execute("SELECT * FROM members where username='"& vem &"'")
If RecSet.EOF Then
Session("meddelande") = " Tyvärr!\n Finns ingen Slaf som heter "& vem &".\nSäkert att du stavat rätt?"
Connect.Close
Set Connect = nothing
Response.Redirect "default.asp"
Else
'-------------------------------------------
If Lcase(RecSet("losen")) = Lcase(Request.Form("losen")) Then
'##################### Kontroll om loggat in i dag
If RecSet("inlogg_datum") <> Date() Then
Connect.Execute ("update members set points = points +500, inloggad = inloggad +1 where username='" & vem & "'")
End If
'##################### Slut Koll
Connect.Execute ("update members set mood='"& Request.Form("mood") &"', datum='" & Now() & "', inloggad = inloggad +1, inlogg_datum='" & Date() & "', inlogg_tid='" & Time() & "', status='online', ip='" & Request.ServerVariables("REMOTE_ADDR") & "' where username='" & vem & "'")
if RecSet("kon")="Kille" then
sex = "P"
else
sex = "F"
end if
newage= (DateDiff("d", RecSet("foddes"), Now))/365
newage=formatnumber(newage,2)
newage=left(newage,2)
Session("sex") = ""& sex &""& newage &""
Session("username") = RecSet("username")
Session("stad") = RecSet("stad")
Session("login") = "ok"
Session("id") = RecSet("id")
Session("minonline") = now()
Session.TimeOut = 40
'----- Rensar bort sånna som inte loggat ut korrekt.. -------
Connect.Execute "UPDATE members set status='offline', var_pa_sajten='-', minonline='0' WHERE status='online' AND date_add(datum, interval 40 minute) < now()"
'---------------- SLUT PÅ UTRENSNINGEN ------------------
'--------------------- Kollar om det är ett nytt online rekord
Set Rs = Connect.Execute("SELECT COUNT(username) AS Antalet FROM members WHERE status='online'")
dim antal : antal = rs("Antalet")
rs.close : set recset = nothing
Set Rs = Connect.Execute("SELECT antal FROM onlinerekord")
IF antal > Rs("antal") Then
Connect.Execute ("UPDATE onlinerekord set antal='"& antal &"', datum='" & Now() & "', slaf='" & vem & "'")
Rs.Close : Set Rs=Nothing
End If
'--------------------- Kollar om det är ett nytt online rekord SLUT
Response.Cookies("SKENE_USER") = "" & session("username") &""
Response.Cookies("SKENE_USER").Expires = "23 Feb, 2007 "
Response.Redirect "main.asp"
Else
Session("meddelande") = " Tyvärr!\n Fel användarnamn eller lösenord. Försök igen!"
Response.Redirect "default.asp"
End If
Connect.Close : Set Connect = nothing
RecSet.Close : Set RecSet = Nothing
End If
%>
Det finns ingen anledning att ha lösenordsjämförelsen i en separat if-sats. In med den i WHERE-satsen i SQL-frågan. Får du resultat, lyckad inloggning, annars inte.
Det finns ingen anledning att ha lösenordsjämförelsen i en separat if-sats. In med den i WHERE-satsen i SQL-frågan. Får du resultat, lyckad inloggning, annars inte.
Mvh
Just det! argh... ska kolla igenom koderna igen :e vänta
<%
Dim vem
vem=lcase(Request.Form("username"))
losen=Lcase(Request.Form("losen"))
Set RecSet = Connect.Execute("SELECT * FROM members where username='"& vem &"' and losen = '"&losen&"'")
If RecSet.EOF Then
Session("meddelande") = " Tyvärr!\n Finns ingen Slaf som heter "& vem &".\nSäkert att du stavat rätt?"
Connect.Close : Set Connect = nothing
Response.Redirect "default.asp"
Else
'##################### Kontroll om loggat in i dag
If RecSet("inlogg_datum") <> Date() Then
Connect.Execute ("update members set points = points +500, inloggad = inloggad +1 where username='" & vem & "'")
End If
'##################### Slut Koll
Connect.Execute ("update members set mood='"& Request.Form("mood") &"', datum='" & Now() & "', inloggad = inloggad +1, inlogg_datum='" & Date() & "', inlogg_tid='" & Time() & "', status='online', ip='" & Request.ServerVariables("REMOTE_ADDR") & "' where username='" & vem & "'")
if RecSet("kon")="Kille" then
sex = "P"
else
sex = "F"
end if
newage= (DateDiff("d", RecSet("foddes"), Now))/365
newage=formatnumber(newage,2)
newage=left(newage,2)
Session("sex") = ""& sex &""& newage &"" : Session("username") = RecSet("username") : Session("stad") = RecSet("stad") : Session("login") = "ok" : Session("id") = RecSet("id") : Session("minonline") = now() : Session.TimeOut = 40
recset.close : set recset = nothing
'----- Rensar bort sånna som inte loggat ut korrekt.. -------
Connect.Execute "UPDATE members set status='offline', var_pa_sajten='-', minonline='0' WHERE status='online' AND date_add(datum, interval 40 minute) < now()"
'---------------- SLUT PÅ UTRENSNINGEN ------------------
'--------------------- Kollar om det är ett nytt online rekord
Set Rs = Connect.Execute("SELECT COUNT(username) AS Antalet FROM members WHERE status='online'")
dim antal : antal = rs("Antalet")
rs.close : set rs = nothing
Set Rs = Connect.Execute("SELECT antal FROM onlinerekord")
IF antal > Rs("antal") Then
Connect.Execute ("UPDATE onlinerekord set antal='"& antal &"', datum='" & Now() & "', slaf='" & vem & "'")
Rs.Close : Set Rs=Nothing
End If
'--------------------- Kollar om det är ett nytt online rekord SLUT
Response.Cookies("SKENE_USER") = "" & session("username") &""
Response.Cookies("SKENE_USER").Expires = "23 Feb, 2007 "
Response.Redirect "main.asp"
Else
Session("meddelande") = " Tyvärr!\n Fel användarnamn eller lösenord. Försök igen!"
Response.Redirect "default.asp"
End If
Connect.Close : Set Connect = nothing
%>
lite mindre kod igen :e fast jag är rätt särker på att den går att krympa ner och göra snabbare :e
lägg till en end if vid den sista end if :e tog nog bort den innan för jag hittade inte riktigt vad den skulle vara bra för :e - Just vaknat begär inte för mycket av mig :e
SQL satsen kontrollera bara om det finns en användare och ett lösenord som passar... så else-satsen tycker jag du inte ska ta bort för annars händer det inget :e
jo det kan du också göra... funktioner är egentligen menat bara om du ska skriva 2+ st sådna replace så går det ju lite smidigare att skriver secure() istället för replace varje gång... du bör göra detta också på användarnamnet REDIGERAD:
<%@ LANGUAGE="VBSCRIPT" %>
<%
Response.Expires=-1
Response.Buffer = True
Session.LCID = 1053
%>
<!-- #INCLUDE VIRTUAL="/include/koppling.asp" -->
<%
Function secure(txt)
txt = Replace(txt, "'", "''")
secure = txt
End Function
Dim vem
vem=lcase(Request.Form("username"))
Set RecSet = Connect.Execute("SELECT * FROM members where username='"& secure(request.form("username")) &"' and losen = '"& secure(request.form("losen")) &"'")
If RecSet.EOF Then
Session("meddelande") = " Tyvärr!\n Fel användarnamn eller lösenord. Försök igen!"
Connect.Close : Set Connect = nothing
Response.Redirect "default.asp"
Else
'##################### Kontroll om loggat in i dag
If RecSet("inlogg_datum") <> Date() Then
Connect.Execute ("update members set points = points +500, inloggad = inloggad +1 where username='" & vem & "'")
End If
'##################### Slut Koll
Connect.Execute ("update members set mood='"& Request.Form("mood") &"', datum='" & Now() & "', inloggad = inloggad +1, inlogg_datum='" & Date() & "', inlogg_tid='" & Time() & "', status='online', ip='" & Request.ServerVariables("REMOTE_ADDR") & "' where username='" & vem & "'")
if RecSet("kon")="Kille" then
sex = "P"
else
sex = "F"
end if
newage= (DateDiff("d", RecSet("foddes"), Now))/365
newage=formatnumber(newage,2)
newage=left(newage,2)
Session("sex") = ""& sex &""& newage &""
Session("username") = RecSet("username")
Session("stad") = RecSet("stad")
Session("login") = "ok"
Session("id") = RecSet("id")
Session("minonline") = now()
Session.TimeOut = 40
recset.close : set recset = nothing
'----- Rensar bort sånna som inte loggat ut korrekt.. -------
Connect.Execute "UPDATE members set status='offline', var_pa_sajten='-', minonline='0' WHERE status='online' AND date_add(datum, interval 40 minute) < now()"
'---------------- SLUT PÅ UTRENSNINGEN ------------------
'--------------------- Kollar om det är ett nytt online rekord
Set Rs = Connect.Execute("SELECT COUNT(username) AS Antalet FROM members WHERE status='online'")
dim antal : antal = rs("Antalet")
rs.close : set rs = nothing
Set Rs = Connect.Execute("SELECT antal FROM onlinerekord")
IF antal > Rs("antal") Then
Connect.Execute ("UPDATE onlinerekord set antal='"& antal &"', datum='" & Now() & "', slaf='" & vem & "'")
Rs.Close : Set Rs=Nothing
End If
'--------------------- Kollar om det är ett nytt online rekord SLUT
Response.Cookies("SKENE_USER") = "" & session("username") &""
Response.Cookies("SKENE_USER").Expires = "23 Feb, 2007 "
Response.Redirect "main.asp"
End If
Connect.Close : Set Connect = nothing
%>
P.s grym sida du hade. D.s.
P.s du hade glömt en ) i slutet av secure(request.form("losen") ;) D.s.
Set RecSet = Connect.Execute("SELECT * FROM members where username='"& secure(request.form("username")) &"' and losen = '"& secure(request.form("losen")) &"'")
eftersom du har
vem = request.form("username")
så kan du ersätta secure(request.form("username") till
Set RecSet = Connect.Execute("SELECT * FROM members where username='"& secure(vem) &"' and losen = '"& secure(request.form("losen")) &"'")