difficile, ci sto provano... potresti pubblicare lo script?
usi InStr?
lo script che stavo testando intercetta il contenuto, lo cancella ma non so come far bloccare il tutto...
esempio:
http://www.caprioli.info/fitness/filtro.asp
Il Form è in una pagina html e punta alla pagina di controllo in asp nella quale (dopo il tag di chiusura) ho inserito queste funzioni:
<%
Function CheckMessaggio(str)
Dim testomessaggio
testomessaggio = instr(str, "@") or instr(str, "www") or instr(str, "WWW") or instr(str, "http") or instr(str, "HTTP") or instr(str, "PAPERINO") or instr(str, "TOPOLINO") or instr(str, "Paperino") or instr(str, "Topolino")
if (testomessaggio > 0) and (testomessaggio < len(str)) or (testomessaggio > len(str)) then
CheckMessaggio = false
exit function
end if
CheckMessaggio = true
End Function
Function CheckEmail(str)
Dim i, j, first, last, char
i = instr(str, "@")
if (i > 0) and (i < len(str)) then
first = left(str, i - 1)
last = mid(str, i+1, len(str))
else
CheckEmail = false
exit function
end if
if (len(first) = 0) then
CheckEmail = false
exit function
end if
i = instrrev(last, ".")
if len(mid(last,1,i)) = 0 then
CheckEmail = false
exit function
end if
j = len(last) - i
if (j <= 1) or (j >= 15) then
CheckEmail = false
exit function
end if
i = 0
do until (i = len(first))
i = i + 1
char = mid(first, i, 1)
if (asc(char) <> 45) and (asc(char) <> 46) and _
(asc(char) < 48 or asc(char) > 57) and _
(asc(char) < 65 or asc(char) > 90) and _
(asc(char) <> 95) and _
(asc(char) < 97 or asc(char) > 122) then
CheckEmail = false
exit function
end if
loop
i = 0
do until i = len(last)
i = i + 1
char = mid(last, i, 1)
if (asc(char) <> 45) and (asc(char) <> 46) and _
(asc(char) < 48 or asc(char) > 57) and _
(asc(char) < 65 or asc(char) > 90) and _
(asc(char) <> 95) and _
(asc(char) < 97 or asc(char) > 122) then
CheckEmail = false
exit function
end if
loop
CheckEmail = true
End Function
%>
Nel body della stessa pagina di controllo ho inserito invece questo codice (ho omesso alcune righe riguardanti solo le impostazioni per l'invio dell'email):
<%
On error resume next
Dim campo
strHost = "localhost"
campo = ""
camponome = trim(Request.Form("nome"))
campoemail = trim(Request.Form("email"))
campomessaggio = trim(Request.Form("messaggio"))
campomessaggio = Replace(campomessaggio, vbcrlf, "<br />")
if camponome = "" then
campo = campo & ". . . indicare un nome o uno pseudonimo<br />" & ""
end if
if campoemail = "" then
campo = campo & ". . . indicare un indirizzo Email valido<br />" & ""
else
'controllo la correttezza base della formalit dell'indirizzo e-mail
if CheckEmail(campoemail) = false then
campo = campo & ". . . rivedere il formato dell'indirizzo Email, non sembra corretto<br />" & ""
end if
end if
if campomessaggio = "" then
campo = campo & ". . . scrivere un testo nel campo del messaggio<br />" & ""
else
if CheckMessaggio(campomessaggio) = false then
campo = campo & "<br />. . . si prega di ricontrollare il testo inserito nell'area del messaggio, potreste aver inserito parole o contenuti non accettati!" & ""
end if
end if
if Replace(campo,"§","") = "" then
' qui il codice per le impostazioni di invio del messaggio
' Set Mail = Server............. ecc. ecc.
' .........
' .........
' .........
' .........
' .........
' Se tutto funziona
response.write "<p>Email inviata</p>"
response.write "<p>Riepilogo di quanto inviato</p>" & "<p>Nome:<br />" & camponome & VbCrLf & "<br /><br />Messaggio:<br />" & campomessaggio & "</p>" & VbCrLf & VbCrLf
else
response.write "<h5>Sono stati rilevati degli errori</h5>"
response.write "<p>Si prega di completare queste operazioni:</p><p>" & Replace(Replace(campo, "", "<br />"),"","</p>")
response.write "<p>Email non inviata!</p>"
end if
' set Mail = nothing
%>
Quando avrò un po' di tempo amplierei la funzione per sistemare il problemino del formato maiuscolo o minuscolo, ho già un'idea al riguardo.
Volendo poi credo si possa migliorare ancora.
Sergio