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 ska kolla lite mer på koden och återkommer
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 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 fast jag är rätt särker på att den går att krympa ner och göra snabbare
lägg till en end if vid den sista end if tog nog bort den innan för jag hittade inte riktigt vad den skulle vara bra för - Just vaknat begär inte för mycket av mig
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
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")) &"'")