Als eerste, kan je code-tags gebruiken? Maakt het allemaal heel wat overzichtelijker..
Indenten en eventueel een aantal comments toevoegen vergroot ook de leesbaarheid van je code enorm.
ASP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
| <%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
#include virtual="/Connections/ffginfonet.asp"
<%
Dim login
Dim login_numRows
Set login = Server.CreateObject("ADODB.Recordset")
login.ActiveConnection = MM_ffginfonet_STRING
login.Source = "SELECT * FROM login"
login.CursorType = 0
login.CursorLocation = 2
login.LockType = 1
login.Open()
login_numRows = 0
%>
<%
' *** Validate request to log in to this site.
MM_LoginAction = Request.ServerVariables("URL")
If Request.QueryString<>"" Then MM_LoginAction = MM_LoginAction + "?" + Request.QueryString
MM_valUsername=CStr(Request.Form("textfield"))
If MM_valUsername <> "" Then
MM_fldUserAuthorization="userlevel"
MM_redirectLoginSuccess="adminpage.asp"
MM_redirectLoginFailed="loginerror.asp"
MM_flag="ADODB.Recordset"
set MM_rsUser = Server.CreateObject(MM_flag)
MM_rsUser.ActiveConnection = MM_ffginfonet_STRING
MM_rsUser.Source = "SELECT gebruikersnaam, wachtwoord"
If MM_fldUserAuthorization <> "" Then MM_rsUser.Source = MM_rsUser.Source & "," & MM_fldUserAuthorization
MM_rsUser.Source = MM_rsUser.Source & " FROM login WHERE gebruikersnaam='" & Replace(MM_valUsername,"'","''") &"' AND wachtwoord='" & Replace(Request.Form("textfield2"),"'","''") & "'"
MM_rsUser.CursorType = 0
MM_rsUser.CursorLocation = 2
MM_rsUser.LockType = 3
MM_rsUser.Open
If Not MM_rsUser.EOF Or Not MM_rsUser.BOF Then
' username and password match - this is a valid user
Session("MM_Username") = MM_valUsername
If (MM_fldUserAuthorization <> "") Then
Session("MM_UserAuthorization") = CStr(MM_rsUser.Fields.Item(MM_fldUserAuthorization).Value)
Else
Session("MM_UserAuthorization") = ""
End If
if CStr(Request.QueryString("accessdenied")) <> "" And false Then
MM_redirectLoginSuccess = Request.QueryString("accessdenied")
End If
MM_rsUser.Close
Response.Redirect(MM_redirectLoginSuccess)
End If
MM_rsUser.Close
Response.Redirect(MM_redirectLoginFailed)
End If
%> |
Het stuk MM_rsUser.Source vind ik veel te ondoorzichtelijk worden... Wordt dus debuggen, oftewel, voor het executen eerst het uit te voeren SQL-statement op het scherm toveren dmv Response.Write.
Verder: waarom zou je niet altijd userlevel mee willen nemen? De 'extra overhead' van een extra kolom(welke echt gruwelijk weinig is, absoluut gezien), weegt imho niet op tegen de overhead van de If-then constructie.
Als we toch bezig zijn.. Waarom ga je pas in de SQL de replace-functie gebruiken en niet al bij het vullen van de variabelen? Een andere tip: mix niet alles door elkaar heen; Declare je variabelen in een blok, maar niet door je hele code heen (ivm de overzichtelijkheid)
[
Voor 32% gewijzigd door
gorgi_19 op 27-03-2003 00:15
]