tjena!
på vilket sätt bör man hämta funktioner på?
ta denna som exempel
Function Login
Validname = LTrim(Request.Form("name"))
Validpassword = Ltrim(Request.Form("password"))
errors = 0
Set objConn = Connopen
strsql = "SELECT Username, Password, Userlevel FROM Usertbl "&_
"WHERE Username = '" & Validname & "' AND Password = '" & Validpassword & "' ;"
Set rs = objConn.execute(strsql)
If rs.EOF Then
errors = 1
Else
Session("Username") = rs("username")
Session("Userlevel") = rs("userlevel")
End If
Set objConn = Connclose
End Function
och hämtningen
If Request.Querystring("Login") = "yes" Then
Login
End If
inget fel kanske men förvirrande är det när man bara skriver Login, kan ju misstolkas med en tom variabel då och jobbigare blir det, ju fler man får.
ska man skriva på något annat sätt?
Function Login(name,password)
errors = 0
Set objConn = Connopen
strsql = "SELECT Username, Password, Userlevel FROM Usertbl "&_
"WHERE Username = '" & name& "' AND Password = '" & password& "' ;"
Set rs = objConn.execute(strsql)
If rs.EOF Then
return false
Else
return true
End If
Set objConn = Connclose
End Function
Sen i koden på lämpligt ställe.
if Login(Request.Form("name"),Request.Form("password") then
Response.write("inloggad")
[b]'sätt sessions[/b]
else
Response.write("ej inloggad")
end if
Taget ur luften. :)
/r se flyttning av "sätt session"
Jo, fast i VB-Script använder man inte return, skyman... ;)
Så här kan funktionen tänkas se ut:
Function Login(name,password)
errors = 0
Set objConn = Connopen
strsql = "SELECT Username, Password, Userlevel FROM Usertbl "&_
"WHERE Username = '" & name& "' AND Password = '" & password& "' ;"
Set rs = objConn.execute(strsql)
If rs.EOF Then
blnTemp = false
Else
'sätt sessions
blnTemp = true
End If
Set objConn = Connclose
Login = blnTemp
End Function
hur tusan flyttar jag sql-strängen, ska man inte kunna göra så här?
Function Login(name,password,strSql)
errors = 1
Set objConn = Connopen
Set rs = objConn.execute(strSql)
If rs.EOF Then
blnTemp = false
Else
blnTemp = true
Session("Username") = rs(0)
Session("Userlevel") = rs(2)
End If
Set objConn = Connclose
Login = blnTemp
End Function
strSql = "SELECT Username, Password, Userlevel FROM Usertbl "&_
"WHERE Username = '" & name & "' AND Password = '" & password & "' ;"
if Login(request.form("name"),request.form("password"),strSql) then
För det första har variablerna name och password som du använder i SQL-frågan inge värden eftersom SQL-frågan numera skapas utanför funktionen. Du använder inte heller name och password i funktionen längre, så du behöver inte ha dem som parametrar.
nu blev det överkurs för mig! :l
tanken slog mig bara att man borde kunna använda samma funktion till en annan loginsida utan att behöva skriva om den.
Sedan i funktionen, istället för if not rs.EOF then... så skriver du:
funnen=false
while not rs.eof or funnen=false
if rs("username")=user and rs("password")=passw then
funnen=true
'sätt sessionerna...
else
rs.MoveNext
end if
wend
Jag tycker det är klumpigt att behöva skicka med sql-strängen i funktionen, du kommer ju knappast att använda den flera gånger på en sida, eller ens i samma projekt...
Eller ska du det?
må vara att man inte använder den mer i samma projekt, men däremot så är det alltid roligt när man hittar lösningar som underlättar nästa projekt, och nästa...
ganska coolt vore det ju om man bara behövde kopiera med 'funktions-sidan' till nästa projekt utan att behöva gå in i den.
men det är ju lite överkurs förstås, jag är helnöjd ändå, tack!
:bire
273 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849