Immagini CAPTCHA con ASP senza librerie esterne

  • Creatore Discussione Creatore Discussione vatuss
  • Data di inizio Data di inizio

vatuss

Nuovo Utente
24 Giu 2009
20
0
1
Buonagiornata a tutti.
Allo scopo di evitare lo spam, sto cercando di implementare in uno script di iscrizione alla m.list con il codice del tutorial nel titolo, questo l'indirizzo: https://www.mrw.it/asp/articoli/immagini-captcha-asp-senza-librerie-esterne_914.html

Il suddetto che funziona alla perfezione è composto di 2 pagine, ed effettua il controllo sulla seconda. A me servirebbe verificare il controllo nella stessa pagina poichè l'iscizione gia verifica l'insermento del nome e dell'email, vorrei aggiungere anche il CAPTCHA.

Poichè non sono in grado di risolvere da solo confido nel vostro aiuto.
Di seguito riporto la pagina modificata che, pur funzionando non rileva la presenza del terzo controllo:

<%
Function RegExpTest(strng)
Dim regEx
Set regEx = New RegExp
regEx.Pattern = "^[\w\-\.]*[\w\.]\@[\w\.]*[\w\-\.]+[\w\-]+[\w]\.+[\w]+[\w]$"
regEx.IgnoreCase = True
RegExpTest = regEx.Test(strng)
End Function
%>
<%
Function RegExpTest1(strng)
Dim regEx
Set regEx = New RegExp
regEx.Pattern = "^[0-9a-zA-Z]+$"
RegExpTest1 = regEx.Test(strng)
End Function
%>
<% response.buffer = true
%><!--#include file="incMail.asp"--><%
dim errore,errore1,errore2,errore3,errore4,errore5,errore6

ERRORE = ""
ERRORE1 = ""
ERRORE2 = ""
ERRORE3 = ""
ERRORE4 = ""
ERRORE5 = ""
ERRORE6 = ""
sub insertUtente()

username=request.form("username")
email=request.form("email")

username=replace(username,"'","''")
email=replace(email,"'","''")
%>
<!--#include file="sqlOpenDB.asp"-->
<%Set rs = Server.CreateObject("ADODB.Recordset")%>
<%

strSQL="SELECT * FROM utenti_iscritti WHERE username = '" & username & "';"

rs.Open strSQL,cn

if not rs.eof then
set rs = nothing
set cn = nothing


ERRORE="Il nome utente che hai specificato esiste gi&agrave;. Scegliere un altro Username."
exit sub

end if
rs.close

Set rs = Server.CreateObject("ADODB.Recordset")
strSQL="SELECT * FROM utenti_iscritti WHERE email = '" & email & "';"
rs.Open strSQL,cn

if not rs.eof then
set rs = nothing
set cn = nothing

ERRORE1="Indirizzo di Email gi&agrave; in uso da un'altro utente."

exit sub

end if
rs.close

dim caratteri,carattere,password

caratteri = "0123456789zxcvbnmasdfghjklqwertyuiop"
Randomize
Do Until len(password) = 10
carattere = Int((37 * Rnd) + 1) ' Genera un valore casuale compreso tra 0 e z.
password = password & Mid(caratteri,carattere,1)
Loop

if request("username") = "" or MID(request("username"),1,1) = " " then
ERRORE2="Inserire il Nome"
exit sub
end if

if len(request("username")) < 3 then
ERRORE3="Minimo tre caratteri per il Nome"
exit sub
end if

username = request.form("username")
if not(RegExpTest1(username)) then
ERRORE4="Solo lettere e numeri per il Nome"
exit sub
end if

if request("email") = "" or MID(request("email"),1,1) = " " then
ERRORE5="Inserire l'email"
exit sub
end if

email = request.form("email")
if not(RegExpTest(email)) then
ERRORE6="Inserire un indirizzo di email Valido"
exit sub
end if

strSQL = "INSERT INTO utenti_iscritti (username, email, password) VALUES ('"
strSQL = strSQL & username & "','" & email & "', '" & password & "')"

cn.Execute(strSQL)

session("username")=username
session("email")=email
session("password")=password

dim Mailto,mailfrom,mailsj,mailbody
Mailto = email
sendMailNews mailfrom, mailto, mailsj, mailbody

set cn = nothing
set rs = nothing
%>
<%
response.redirect("index.asp?az=conferma_mlist")

end sub

if request.form("type") = "I" then call insertUtente()
%>
<!--#include file="sqlOpenDB.asp"-->
<%Set rs = Server.CreateObject("ADODB.Recordset")%><%
strSQL="SELECT * FROM Configurazione where ID_Conf = 1"
rs.Open strSQL,cn

dim objText_color,objText_type,objText_size,objTable_color_1,objTitolo_tabella,objFont_Tabella,objFont_size_tabella,objFont_color_tabella,objColor_titolo_tabella,objColor_tabella_interna
Set objText_color=rs("Text_color")
Set objText_type=rs("Text_type")
Set objText_size=rs("Text_size")
Set objTable_color_1=rs("Table_color_1")
Set objTitolo_tabella=rs("Titolo_tabella")
Set objFont_Tabella=rs("Font_tabella")
Set objFont_size_tabella=rs("Font_size_tabella")
Set objFont_color_tabella=rs("Font_color_tabella")
Set objColor_titolo_tabella=rs("Color_titolo_tabella")
Set objColor_tabella_interna=rs("Color_tabella_interna")

if rs.EOF then
response.write("<h3>Si sono verificati dei problemi durante la lettura della base dati. Riprovate e se il problema si verifica ancora contattate il WebMaster. Grazie.</h3>")
else%>
<html>
<head>
<title> Mailing List </title>
</head>
<body topmargin="0" leftmargin="0" rightmargin="0" bottommargin="0" marginwidth="0" marginheight="0">
<table id="table1">
<tr valign="top" align="center">
<td>
<%
dim referer
%>
<form action="../home.asp" method="post">
<font face="Tahoma"><span style="font-size: 8pt">
<input type="hidden" name="type" value="I">
<input type="hidden" name="conferma" value="<%= referer %>">
</span></font>
<table border="0" bgcolor="<%'=rs("Color_tabella_interna")%>" align="center" id="table2">
<tr>
<td bgcolor="<%'=rs("Color_titolo_tabella")%>" align="center">
<font face="Tahoma" color="<%'=rs("Font_color_tabella")%>" style="font-size: 8pt"><b><%'=rs("Titolo_tabella")%></b></font><font face="Tahoma" style="font-size: 8pt">
<%if ERRORE <> "" then %>
<%=ERRORE%><%end if %><%if ERRORE1 <> "" then %> <%=ERRORE1%><%end if %><%if ERRORE2 <> "" then %>
<%=ERRORE2%><%end if %><%if ERRORE3 <> "" then %> <%=ERRORE3%><%end if %><%if ERRORE4 <> "" then %>
<%=ERRORE4%><%end if %><%if ERRORE5 <> "" then %> <%=ERRORE5%><%end if %><%if ERRORE6 <> "" then %>
<%=ERRORE6%><%end if %></font></font></td>
</tr>
<tr>
<td bgcolor="<%'=rs("Table_color_1")%>" width="45%">
<font face="Tahoma"><span style="font-size: 8pt">** scrivi il tuo nome:<br>
<input type="text" name="username" value="<%=request.form("username")%>" style="WIDTH: 160px" size="40" maxlength="20">
</span></font>
</td>
</tr>
<tr bgcolor="<%'=rs("Table_color_1")%>">
<td width="45%"><font face="Tahoma">
<span style="font-size: 8pt">* e il tuo indirizzo di e-mail:<br>
<input type="text" name="email" value="<%=request.form("email")%>" style="WIDTH: 160px" size="40">
</span></font>
</td>
</tr>
<tr bgcolor="<%'=rs("Table_color_1")%>">
<td width="45%">
<p align="left">
<!-- inizio del codice CAPTCHA -->
<%
Dim max_num
max_num = 3
Randomize()
Session("captcha") = CInt((max_num - 1) * Rnd() + 1)
%>

<font face="Tahoma"><span style="font-size: 8pt">* inserire codice di controllo:<br>
<input type="text" name="codice" style="WIDTH: 160px" size="40"><br>
<img src="<%=Session("captcha")%>.gif" align="absmiddle">
</span>
</font>
<%
' Dim nominativo, codice, controllo
nominativo = Request.Form("nominativo")
codice = Request.Form("codice")
Select Case Session("captcha")
Case "1" : controllo = "ABC"
Case "2" : controllo = "BCA"
Case "3" : controllo = "CBA"
End Select
%>
<%'If nominativo = "" Then%>
<%If codice <> controllo Then%>
<br><font face="Tahoma"><span style="font-size: 8pt">Inserire il codice di sicurezza!</span></font>
<%End If%>
<!-- fine del codice CAPTCHA -->
</td>
</tr>
<tr bgcolor="<%'=rs("Table_color_1")%>">
<td height="50" align="center">
<font face="Tahoma"><span style="font-size: 8pt">
<input type="submit" value=" Iscriviti ">
</span></font>
</td>
</tr>
</table>
<font face="Tahoma" style="font-size: 8pt">
<% If Session("Admin") then %>
</font>
<!--
<table width="60%" border="0" cellspacing="0" cellpadding="0" align="center" bgcolor="<%'=rs("Table_color_1")%>" id="table4">
<tr align="center">
<td><font face="Tahoma" style="font-size: 8pt"><% If Session("Admin") then %><font color="<%'=rs("Text_color")%>">Amministrazione</font><% End If %><br>
<br>
<% If Session("Admin") then %><a href="logout.asp">Log Out</a><br>
<% End If %><br>
<% If Session("Admin") then %><a href="amministrazione.asp">Pagina Amministrazione</a><br>
<% End If %><br>
</font>
</td>
</tr>
</table>
-->
<font face="Tahoma" style="font-size: 8pt">
<% End If %>
</font>
</form>
<font face="Tahoma" style="font-size: 8pt">
<%
end if
Set cn = nothing
Set rs = nothing
%>
</font>
</td>
</tr>
</table>


</body>
</html>
 

Discussioni simili