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à. 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à 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>
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à. 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à 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>