webForumDet fria alternativet

Egen error list

ASPur ASP

5 svar · 355 visningar · startad av M.Cheraghi

Medlem sedan juli 20015 107 inlägg
Frågan#1

Hellop.
Jag sitter och funderar lite grann på hur jag ska lyckas bygga upp en egen error lista, eller hur man nu ska kalla det.
Under registreringen gör jag en del kontroller så att användaren uppfyller alla kraven jag har satt på formulären.
Vill att registrera 3 skall summera alla fel som uppkommit och därefter _OM_ det vart något fel, skall dessa fel skickas tillbaka till formulären där resultatet presenteras.

T.ex skrivs felen ut för 'kalle'

- Ditt användarnamn innehåller ogiltiga tecken
- Dina lösenord matchade inte varandra
- Du måste fylla i alla fält

Men t.ex när 'Jonas' registrerar sig, och det blir något fel så skrivs bara

- Användarnamnet du valde var redan upptaget

Min kod för krontrollen ser just för stunden ut så här.

<% 
@ LCID=1053
%>
<%
'##### Hämta alla formulär och skydda dom mot SQL injection
strUsername = replace(request.form("username"),"'","''")
strPassword1 = replace(request.form("password1"),"'","''")
strPassword2 = replace(request.form("password2"),"'","''")
strEmail = replace(request.form("email"),"'","''")
strYear = replace(request.form("year"),"'","''")
strMonth = replace(request.form("month"),"'","''")
strDay = replace(request.form("day"),"'","''")
strLan = replace(request.form("lan"),"'","''")
strKommun = replace(request.form("underKommun"),"'","''")

'##### Kolla så formulären inte är blanka
if strUsername = "" then
	[b]'Error 1[/b]
elseif strPassword1 = "" then
	[b]'Error 1[/b]
elseif strPassword2 = "" then
	[b]'Error 1[/b]
elseif strEmail = "" then
	[b]'Error 1[/b]
end if

'##### Hämta Personens IP nummer samt dagens datum och lägga i en variabel
strDate = date()
strIpnumer = request.ServerVariables("HTTP_REFERER")

'##### Kolla så användarnamnet innehåller godkända tecken
set o = new regexp
o.global = true
o.pattern = "(^[A-Za-z0-9_]+$)"

if not o.test(strUsername) then
   [b]'Error 2[/b]
end if

'##### Kolla så dom båda lösenorden matchar varandra
If strPassword1 <> strPassword2 then
	[b]'Error 3[/b]
end if
%>

Hoppas ni förstår vad jag menar :)
Jag vet inte hur jag ska sammanställa allting, och sedan skicka det iform utav response.redirect, tillsammans med querystrings och sedan ta emot querystringsen på formulär sidan. :l

Medlem sedan jan. 20032 285 inlägg
#2

Kanske något sånt här?

<% 
@ LCID=1053
%>
<%
'##### Hämta alla formulär och skydda dom mot SQL injection
strUsername = replace(request.form("username"),"'","''")
strPassword1 = replace(request.form("password1"),"'","''")
strPassword2 = replace(request.form("password2"),"'","''")
strEmail = replace(request.form("email"),"'","''")
strYear = replace(request.form("year"),"'","''")
strMonth = replace(request.form("month"),"'","''")
strDay = replace(request.form("day"),"'","''")
strLan = replace(request.form("lan"),"'","''")
strKommun = replace(request.form("underKommun"),"'","''")

'##### Kolla så formulären inte är blanka
if strUsername = "" then
	blnEmpty = True
elseif strPassword1 = "" then
	blnEmpty = True
elseif strPassword2 = "" then
	blnEmpty = True
elseif strEmail = "" then
	blnEmpty = True
end if

'##### Hämta Personens IP nummer samt dagens datum och lägga i en variabel
strDate = date()
strIpnumer = request.ServerVariables("HTTP_REFERER")

'##### Kolla så användarnamnet innehåller godkända tecken
set o = new regexp
o.global = true
o.pattern = "(^[A-Za-z0-9_]+$)"

if not o.test(strUsername) then
   blnUser = True
end if

'##### Kolla så dom båda lösenorden matchar varandra
If strPassword1 <> strPassword2 then
	blnPass = True
end if

If blnEmpty Then
  strQuery = "?empty=true"
End If

If blnUser Then
  If blnEmpty Then
    strQuery = strQuery & "&user=true"
  Else
    strQuery = "?user=true"
  End If
End If

If blnPass Then
  If blnEmpty OR blnUser Then
    strQuery = strQuery & "&pass=true"
  Else
    strQuery = "?pass=true"
  End If
End If

If strQuery <> "" Then Response.Redirect("formsida.asp" & strQuery)
%>
Medlem sedan juli 20015 107 inlägg
#3

oj satan :OO det där var mer avancerat än jag trodde :) Jag har inte ens gjort hälften utav alla kontroller ännu :e undrar hur det komemr att se ut när jag ska försöka göra ingrep i koden för att modda in resten utav kontrollerna :e
Men det är ett problem jag tar hänsyn till när jag väl börjat :)
Just nu verkar koden fungera iaf ;) Men jag får väl återkomma om jag kör fast i senare skede.

Tack sebbe

Medlem sedan jan. 20032 285 inlägg
#4

Man måste väl vara snäll och svara på dina frågor när du säger så snälla saker om mig i caféet. ;)

Medlem sedan juli 20015 107 inlägg
#5

Sebbe skrev:

Man måste väl vara snäll och svara på dina frågor när du säger så snälla saker om mig i caféet. ;)

Hehe, ja du är då en pärla, den saken är fastställd för länge sedan :) Nu har ajg mekat lite med din kod, och infört ännu en kontroll och det verkar fungera, tänkte kolla om mönstret jag upprättat är rätt osv osv, eller om du hade tänkt att man ska göra på ett smidigare sätt :) altså att för varje ny kontroll ska man gå igenom alla kontroller innan för att veta om man ska sätta "&" före eller om man ska börja med "?" Om jag förstått det hela rätt :)

'##### Kolla så födelsedatum är siffor, dvs ifyllt
If not IsNumeric(strYear) Then
	blnBorn = True
elseIf not IsNumeric(strMonth) Then
	blnBorn = True
elseIf not IsNumeric(strDay) Then
	blnBorn = True
end if

---------------------

If blnUser Then
  If blnEmpty Then
    strQuery = strQuery & "&user=true"
  Else
    strQuery = "?user=true"
  End If
End If

If blnPass Then
  If blnEmpty OR blnUser Then
    strQuery = strQuery & "&pass=true"
  Else
    strQuery = "?pass=true"
  End If
End If

[b]If blnBorn Then
  If blnEmpty OR blnUser OR blnPass Then
    strQuery = strQuery & "&born=true"
  Else
    strQuery = "?born=true"
  End If
End If[/b]
Medlem sedan jan. 20032 285 inlägg
#6

Japp, helt rätt. :)

137 ms totalt · 3 externa anrop · v20260731065814-full.25f56b17
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)