29. august 2005 - 10:19Der er
15 kommentarer og 2 løsninger
Invalid procedure call or argument: 'left'
Hejsa. Jeg har en validator der skal validere et input felt i en form hvor en email adresse skal indtastes. Jeg vil validere om der er noget foran @ og hvis ikke skal brugeren præcenteres for en brugervenlig fejl.
Bruger følgende script:
if Len(Left(email,InStr(email,"@")-1))=0 then intetforansnabelfejl = 1 showform = 1 end if
Men jeg får følgende fejl når jeg tester:
Microsoft VBScript runtime error '800a0005' Invalid procedure call or argument: 'left' line 190
Skal lige siges at 'email' er min variabel der indeholder det der er indtastet i feltet email i min form.
okay, men det forslag du giver der tjekker den ikke kun efter om der eksisterer et @ ?? Det har jeg allerede, vil gerne validere om der er noget foran et @.
Som det er nu tjekker jeg først på om feltet er tom med:
if email = "" then tomemailfejl = 1 showform = 1 end if
også burde den stoppe der når email feltet jo er tom, men alligevel kører den videre og jeg får ovenstående fejl. Hvorimod hvis der ER indtastet noget i email feltet validerer den helt fint, får altså kun ovenstående fejl hvis email feltet er tomt
sqlMID = "SELECT MemberID FROM Members ORDER BY MemberID DESC LIMIT 1" set rsMID = Conn.Execute(sqlMID)
oldID = rsMID("MemberID") if oldID = "" then newID = 1 else newID = oldID + 1 end if
sql = "select * from Members where Brugernavn='"&brugernavn&"'" set rs = conn.execute(sql)
if not (rs.bof or rs.eof) then brugernavnfejl = 1 showform = 1 end if
if brugernavn = "" then brugerfejl=1 showform=1 end if
if kodeord = "" then kodefejl = 1 showform = 1 end if
if gentagkodeord = "" then gentagkodefejl = 1 showform = 1 end if
if kodeord <> gentagkodeord then matchfejl = 1 showform = 1 end if
Dim regEx1 Set regEx1 = New RegExp regEx1.Pattern = "^\d+$"
If regEx1.Test(alder) Then alder = CInt(alder)
If alder < 15 Then showform = 1 minalderfejl = 1 End If
Else showform = 1 alderfejl = 1 End If
if navn = "" then navnefejl = 1 showform = 1 end if
if email = "" then tomemailfejl = 1 showform = 1 end if
If InStr(email,"@") = 0 Then ingensnabelfejl = 1 showform = 1 End If
If InStr(email,".") = 0 Then manglerpunktumfejl = 1 showform = 1 End If
If ((InStr(email,"@.") <> 0) OR (InStr(email,".@") <> 0)) Then punktumfejl = 1 showform = 1 End If
If InStr(email,"..") <> 0 Then formangepunktumitrakfejl = 1 showform = 1 End If
If Len(email) < 5 Then kortemailfejl = 1 showform = 1 End If
If (Len(email) - InStrRev(email,".") < 2) Then mintoefterpunktumfejl = 1 showform = 1 End If
If (Len(email) - InStrRev(email,".") > 4) Then forkertendelseeftersnabelfejl = 1 showform = 1 End If
if Len(Left(email,InStr(email,"@")-1))=0 then intetforsnabelfejl = 1 showform = 1 End If
if beskrivelse = "" then beskrivelsefejl = 1 showform = 1 end if
If Len(beskrivelse) < 100 Then kortbeskrivelsefejl = 1 showform = 1 End If
if showform then %>
<table border="0" id="main"> <tr><td colspan="2"><b>Her kan du oprette dig en gratis profil på onDate.dk.</b><br>Alle felter skal udfyldes.</td></tr> <tr><td colspan="2"><br></td></tr> <form method="post" action="create.asp?id=1" name="opret"> <tr><td>Brugernavn: </td><td><input type="text" name="brugernavn" value="<%=brugernavn%>"></td></tr> <tr><td></td><td valign="top"><%if brugernavnfejl then%><font size="-2" color="#A70000"><b>[Brugernavnet eksisterer allerede]</b></font><%else if brugerfejl then%><font size="-2" color="#A70000"><b>[Brugernavn skal udfyldes]</b></font><%end if end if%></td></tr> <tr><td>Kodeord: </td><td><input type="password" name="kodeord" value="<%=kodeord%>"></td></tr> <tr><td></td><td valign="top"><%if kodefejl then%><font size="-2" color="#A70000"><b>[Kodeord skal udfyldes]</b></font><%else if matchfejl then%><font size="-2" color="#A70000"><b>[Kodeord er ikke ens]</b></font><%end if end if%></td></tr> <tr><td>Gentag Kodeord: </td><td><input type="password" name="gentagkodeord" value="<%=gentagkodeord%>"></td></tr> <tr><td></td><td><%if gentagkodefejl then%><font size="-2" color="#A70000"><b>[Du skal gentage dit kodeord]</b></font><%else if matchfejl then%><font size="-2" color="#A70000"><b>[Kodeord er ikke ens]</b></font><%end if end if%></td></tr> <tr><td style="visibility:hidden; font:Arial; font-size:8px;">For at udvide</td></tr> <tr><td>Alder: </td><td><input type="text" name="alder" style="width:35px;" value="<%=alder%>"></td></tr> <tr><td></td><td><%if minalderfejl then%><font size="-2" color="#A70000"><b>[Du skal være minimum 15 år gammel]</b></font><%else if alderfejl then%><font size="-2" color="#A70000"><b>[Alder skal udfyldes]</b></font><%else%><font size="-3"><b>[Du skal være minimum 15 år gammel]</b></font><%end if end if%></td></tr> <!--<tr><td> </td><td valign="top"><font size="-3"><b>[Du skal være minimum 15 år gammel]</b></font></td></tr>--> <tr><td style="visibility:hidden; font:Arial; font-size:2px;"> </td></tr> <tr><td>Navn: </td><td><input type="text" name="navn" value="<%=navn%>"></td></tr> <tr><td></td><td><%if navnefejl then%><font size="-2" color="#A70000"><b>[Navn skal udfyldes]</b></font><%end if%></td></tr> <tr><td> </td><td valign="top"><font size="-2"><b>[Bliver ikke vist til andre brugere]</b></font></td></tr> <tr><td style="visibility:hidden; font:Arial; font-size:2px;">For at udvide</td></tr> <tr><td>Email: </td><td><input type="text" name="email" value="<%=email%>"></td></tr> <tr><td></td><td><%if tomemailfejl then%><font size="-2" color="#A70000"><b>[Email skal udfyldes]</b></font><%else if kortemailfejl then%><font size="-2" color="#A70000"><b>[Email adressen er for kort]</b></font><%else if ingensnabelfejl then%><font size="-2" color="#A70000"><b>[Der skal være et @ i en email adresse]</b></font><%else if punktumfejl then%><font size="-2" color="#A70000"><b>[Der kan ikke være et . (punktum) lige før eller lige efter et @]</b></font><%else if forkertendelseeftersnabelfejl then%><font size="-2" color="#A70000"><b>[Slut endelsen efter . (punktum) i en email kan maks være 4 bokstaver]</b></font><%else if manglerpunktumfejl then%><font size="-2" color="#A70000"><b>[Der skal være mindst et . (punktum) i en email adresse]</b></font><%else if formangepunktumitrakfejl then%><font size="-2" color="#A70000"><b>[Der må ikke være 2 .. (punktum) i træk i en email adresse]</b></font><%else if mintoefterpunktumfejl then%><font size="-2" color="#A70000"><b>[Slut endelsen efter . (punktum) i en email skal være minimum 2 tegn]</b></font><%else if intetforsnabelfejl then%><font size="-2" color="#A70000"><b>[Der mangler noget før @]</b></font><%end if end if end if end if end if end if end if end if end if%></td></tr> <tr><td> </td><td valign="top"><font size="-2"><b>[Bliver ikke vist til andre brugere]</b></font></td></tr> <tr><td colspan="2"><br><br></td></tr> <tr><td colspan="2">Beskriv dig selv: <%if beskrivelsefejl then%><font size="-2" color="#A70000"><b>[Beskrivelse skal udfyldes]</b></font><%else if kortbeskrivelsefejl then%><font size="-2" color="#A70000"><b>[Beskrivelsen er for kort. Minimum 100 tegn.]</b></font><%end if end if%></td></tr><tr><td colspan="2"><textarea name="beskrivelse" class="txtbox" rows="15" cols="63"><%=beskrivelse%></textarea></td></tr> <tr><td colspan="2"><input type="image" src="../images/knapper/opret.jpg" style="width:100px; height:22pz;"></td></tr> </form> </table>
<%else
sql = "INSERT INTO Members (MemberID,brugernavn,nickname,kodeord,alder,navn,email,beskrivelse,Last_Seen)" sql = sql & " VALUES ("&""&newID&",'"&brugernavn&"','"&brugernavn&"','"&kodeord&"',"&alder&",'"&navn&"','"&email&"','"&beskrivelse&"','"&Now()&"')" conn.execute(sql) sqlPic = "INSERT INTO Billeder (BEID) VALUES ("&""&newID&")" conn.execute(sqlPic) response.Redirect("create.asp?id=2") end if%>
if Len(Left(email,InStr(email,"@")-1))=0 then intetforsnabelfejl = 1 showform = 1 End If
helt fint. Problemet kommer hvis variablen email ikke indeholder et @ for så kan scriptet jo ikke finde et @ og tjekke om der står noget inden. Så det jeg skal er vel at få den til at lade være med at kører ovenstående script hvis variablen email ikke indeholder et @. Har også lavet et check (som du kan se) på om variablen email indeholder et @ inden ovenstående script eksekveres, og så mener jeg jo at den burde stoppe valideringen der og melde fejl, men alligevel fortsætter valideringen...
If InStr(email,"@") = 0 Then ingensnabelfejl = 1 showform = 1 else If Len(Left(email,InStr(email,"@")-1))=0 then intetforsnabelfejl = 1 showform = 1 End If End if
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.