Codice di sicurezza su modulo

muscaril

Utente Attivo
16 Mar 2009
46
0
6
Sul mio sio internet ho attivato un modulo di invio contatti. Mi hanno consigliato di aggiungere a questo modulo il codice di sicurezza. Mi potete consigliare voi qualche esempio.
Il modulo di invio è:
Codice:
<%
'============Linkbruttocane su specifiche MSDN================
'*   il corpo finale del messaggio contiene tutti i campi    *
'*   inseriti nella pagina html, in pratica puoi mettere     *
'*   tutti i campi che ti servono nel modulo di invio senza  *
'*   fare altre configurazioni aggiuntive.                   *  
'=============================================================

DIM corpoMessaggio, numeroCampi, invioA, invioDa, nomeDominio, indirizzoIp, modulo, browserSistemaOperativo

	'* voce da modificare con il proprio indirizzo email
	
invioA =  "info@***************"

	'* voce da modificare con un indirizzo email che funga da mittente: 
	'* in caso di errore riceverete notifica a questo indirizzo un MAILER-DAEMON
	'* dato che cdosys supporta questa notifica
		
invioDa =  "info@****************"

'------------fine modifiche necessarie------------------

nomeDominio 				= Request.ServerVariables("HTTP_HOST")
indirizzoIp					= Request.ServerVariables("REMOTE_ADDR") 
modulo						= Request.ServerVariables("HTTP_REFERER")
browserSistemaOperativo		= Request.ServerVariables("HTTP_USER_AGENT")

	'*rilevo i campi del form
	
FOR numeroCampi = 1 TO (Request.Form.Count() - 0)
   IF NOT Request.Form(numeroCampi) = "" THEN
      corpoMessaggio = corpoMessaggio & vbCrLf & Request.Form.Key(numeroCampi) & " = " & Trim(Request.Form(numeroCampi))
   END IF
NEXT

	'* creo gli oggetti cdosys sul server e li gestisco
	
DIM iMsg, Flds, iConf

Set iMsg = CreateObject("CDO.Message")
Set iConf = CreateObject("CDO.Configuration")
Set Flds = iConf.Fields

Flds(cdoSendUsingMethod) = cdoSendUsingPort
Flds(cdoSMTPServer) = "smtp.aruba.it" 
Flds(cdoSMTPServerPort) = 25
Flds(cdoSMTPAuthenticate) = cdoAnonymous ' 0
Flds.Update

With iMsg
   Set .Configuration = iConf
   .To = invioA
   .From = Request.Form("email")
   .Sender = invioDa
   .Subject = "Contatto dal dominio " & nomeDominio
   .TextBody = "Questi i dati inseriti nel modulo presente alla pagina " & modulo & " da utente con indirizzo IP " & indirizzoIp & "  browser e sistema operativo " & browserSistemaOperativo  & vbCrLf & corpoMessaggio & ""
   .Send
End With
%> 
<script>
document.location.replace('grazie.asp');
</script>

mentre la pagina di visualizzazione è:
Codice:
</style>
<script src="Scripts/AC_RunActiveContent.js" type="text/javascript"></script>
<script language="JavaScript"> 
function controllo(){ 
with(document.form1) { 
if(email.value=="") { 
alert("Errore: compilare il campo email"); 
nome.focus(); 
return false; 
} 
if(Privacy.checked=="") { 
alert("Errore: Autorizzare le condizioni sulla privacy"); 
nome.focus(); 
return false; 
} 
} 
return true; 
} 
</script> 

***********************

 <tr>
            <td height="186" colspan="2" valign="top"><p class="style3">Compila il seguente modulo per richiedere informazioni:<!--webbot bot="HTMLMarkup" startspan --><script language="javascript">
			</script>
                <table border="0" cellpadding="0" cellspacing="0" width="40%" align="left">
                <tr>
                  <td width="100%"><form action="formcdosys.asp" method="post" name="form1" onSubmit="return controllo();"">
                    <table width="361" border="0" cellspacing="0" cellpadding="0">
                      <tr>
                        <td width="170"><strong><font face="Verdana, Arial, Helvetica, sans-serif" size="2" color="#333333">Nome</font></strong></td>
                        <td width="191"><font color="#333333" size="2" face="Verdana, Arial, Helvetica, sans-serif">
                          <input type="text" name="nome" size="30">
                        </font></td>
                      </tr>
                      <tr>
                        <td width="170"><strong><font face="Verdana, Arial, Helvetica, sans-serif" size="2" color="#333333">Cognome</font></strong></td>
                        <td width="191"><font color="#333333" size="2" face="Verdana, Arial, Helvetica, sans-serif">
                          <input type="text" name="cognome" size="30">
                        </font></td>
                      </tr>
                      <tr>
                        <td width="170"><strong><font face="Verdana, Arial, Helvetica, sans-serif" size="2" color="#333333">Telefono</font></strong></td>
                        <td width="191"><font color="#333333" size="2" face="Verdana, Arial, Helvetica, sans-serif">
                          <input type="text" name="tel" size="30">
                        </font></td>
                      </tr>
                      <tr>
                        <td width="170"><strong><font face="Verdana, Arial, Helvetica, sans-serif" size="2" color="#333333">E-mail
                          *</font></strong></td>
                        <td width="191"><font color="#333333" size="2" face="Verdana, Arial, Helvetica, sans-serif">
                          <input type="text" name="email" size="30">
                        </font></td>
                      </tr>
                      <tr>
                        <td width="170"><strong><font color="#333333" face="Verdana, Arial, Helvetica, sans-serif"> <font size="2">Azienda</font></font></strong></td>
                        <td width="191"><font color="#333333" size="2" face="Verdana, Arial, Helvetica, sans-serif">
                          <input type="text" name="azienda" size="30" id="azienda">
                        </font></td>
                      </tr>
                      <tr>
                        <td width="170"><strong><font face="Verdana, Arial, Helvetica, sans-serif" size="2" color="#333333">Messaggio</font></strong></td>
                        <td width="191"><font color="#333333" face="Verdana, Arial, Helvetica, sans-serif"> <font size="1">
                          <textarea name="messaggio" rows="5" cols="33" wrap="VIRTUAL"></textarea>
                        </font></font></td>
                      </tr>
                      <tr>
                        <td width="170">
						<input type="checkbox" name="Privacy" value="ON" style="float: right"></td>
                        <td width="291">
						<font color="#333333" size="2" face="Verdana, Arial, Helvetica, sans-serif">
                          &nbsp;</font><i><font size="2">Accetto le condizioni sulla 
						<a href="documenti/privacy.pdf">privacy</a></font></i></td>
                      </tr>

                    </table>
                    <p align="center"><font color="#333333" face="Verdana, Arial, Helvetica, sans-serif"> <font size="1">
                      <input type="submit" name="Submit" value="Contatto">
                      &nbsp; </font></font></p>
                  </form>
 

Paolo69

Moderatore
Membro dello Staff
MOD
18 Feb 2010
555
13
18
Italy
www.caprioli.info
Ciao muscaril,
conosco quel codice presente nel modulo invio, l'ho ulizzato anch'io all'inizio.

Comunque per il famoso codice che si chiama "captcha" ti consiglio questi due link:


Il primo devi utilizzare un account gmail per poter utilizzare il codice, basta registrarsi, mentre il secondo (che è quello che uso per i miei siti) è gratuito con un banner a pagamento senza banner.

Se hai bisogno di ulteriore aiuto, chiedi pure.
Paolo
 
Ultima modifica:

Vale2

Utente Attivo
28 Mag 2006
446
0
0
Livorno
Ciao,

visto che usi un codice fornito da Aruba, usa il - captcha - di Aruba è aggratisse.


Lo trovi nel Vademecucm di Aruba, poi sistema il codice fornito dall'autore (che hai postato) con uno dedicato al tuo scopo.



Valeria.
 

muscaril

Utente Attivo
16 Mar 2009
46
0
6
Vi ringrazio dei consigli, ma non essendo esperto, vi chiedo dove devo associarlo questi codici al mio modulo di invio?
Grazie
 

Paolo69

Moderatore
Membro dello Staff
MOD
18 Feb 2010
555
13
18
Italy
www.caprioli.info
...accidenti, non avevo guardato il codice è un po incasinato.
Domani mattina se ho tempo te lo sistemo e ti pubblico un esempio.
:elvis:
 

Vale2

Utente Attivo
28 Mag 2006
446
0
0
Livorno
Ciao,

per semplificare:

il codice per il capcha:

NOME imageVerification.asp
Codice:
<%
'WRITTEN BY BOB MCKAY, WWW.FRESHMANGO.COM - USE AS YOU WISH BUT PLEASE LEAVE THIS IN CODE
'ASPJpeg Based Image Form Verification Script
'VERSION 1.1


'*************** CODE BOX OPTIONS ***************
codeBoxWidth = 100
codeBoxHeight = 30
numberOfLetters = 4 '					Allow Minimum 20 Pixels Per Letter - See codeBoxWidth Property Above)
wantBorderRoundCodeBox = FALSE '		Put a Border Round the code box(MUST be TRUE or FALSE)
borderRoundCodeBoxColor = "&H3C6194"

'backGroundColor = "&Hffcc33"
backGroundColor = "&Hf1f1f1"
codeFontColor = "&H000000"


numbersAllowedInCode = TRUE'	Set to FALSE for a 'Letters Only' Code
lettersAllowedInCode = TRUE'	Set to FALSE for a 'Numeric Only' Code
'The fonts the script is allowed to select from - these MUST be installed on the Host computer
hostFontList = Array("Arial")
minimumFontSize = 20
maximumFontSize = 26

'*************** DISTORTION OPTIONS ***************
codeImageJPGQuality = 99' 		Lower this to allow JPG distortion of the codeBox
multiColorLinesOnTop = FALSE'	If set to FALSE, ON TOP line color defaults to code font color
numberOfLongLinesOnTop = 2'		Number of end to end lines drawn ON TOP of the code
numberOfRandomLinesOnTop = 1'	Number small lines drawn ON TOP of the code''''''''''''''''''''''''''''''''''''
multiColorLinesUnderneath = TRUE'	If set to FALSE, UNDERNEATH line color defaults to code font color
numberOfRandomLinesUnderneath = 4'	Number small lines drawn UNDERNEATH of the code



'*************** FUNCTIONS & SUBROUTINES ***************
SUB drawBorderRoundBox
	aspJpegImageObject.Canvas.Brush.Solid = FALSE ' Do NOT fill box with color when drawing 
	aspJpegImageObject.Canvas.Pen.Color = borderRoundCodeBoxColor
	aspJpegImageObject.Canvas.DrawBar 0, 0, codeBoxWidth, codeBoxHeight
END SUB

SUB drawLines(numberOflongLines, numberOfShortLines, randomLineColor)
	aspJpegImageObject.Canvas.Pen.Color = codeFontColor
	FOR drawLongLines = 1 TO numberOflongLines
		IF randomLineColor = TRUE THEN aspJpegImageObject.Canvas.Pen.Color = "&H" & HEX(INT(RND*255)) & HEX(INT(RND*255)) & HEX(INT(RND*255))
		aspJpegImageObject.Canvas.DrawLine 5, INT(RND * 35), (codeBoxWidth - 5), INT(RND * 35)
	NEXT
	FOR drawShortLines = 1 TO numberOfShortLines
		IF randomLineColor = TRUE THEN aspJpegImageObject.Canvas.Pen.Color = "&H" & HEX(INT(RND*255)) & HEX(INT(RND*255)) & HEX(INT(RND*255))
		aspJpegImageObject.Canvas.DrawLine INT(RND*codeBoxWidth)+1, INT(RND * 35), INT(RND*codeBoxWidth)+1, INT(RND * 35)
	NEXT
END SUB

SUB writeCodeToImage(randomCode)
	aspJpegImageObject.Canvas.Font.Color = codeFontColor
	aspJpegImageObject.Canvas.Font.Quality = 4' Antialiased
	aspJpegImageObject.Canvas.Font.BkMode = "Opaque" ' Required for Antialiasing
	aspJpegImageObject.Canvas.Font.BkColor = backGroundColor
	FOR currentCodeLetter = 1 TO LEN(randomCode) ' Loop Through Letters in Code
		IF flipACoinFiftyFifty THEN	aspJpegImageObject.Canvas.Font.Italic = TRUE
		IF flipACoinFiftyFifty THEN	aspJpegImageObject.Canvas.Font.Bold = TRUE
		IF flipACoinFiftyFifty THEN	aspJpegImageObject.Canvas.Font.Underlined  = TRUE
		aspJpegImageObject.Canvas.Font.Family = hostFontList(INT(RND * (UBOUND(hostFontList)+1))) 'Randomly Select Font from Host Font List
		aspJpegImageObject.Canvas.Font.Size = INT(RND * ((maximumFontSize - minimumFontSize)+1)) + minimumFontSize'INT(RND * 12) + 18 'Randomly Choose Font Size 14 to 26
		aspJpegImageObject.canvas.print charXposition, 5, MID(randomCode, currentCodeLetter, 1)
		charXposition = charXposition + spacePerLetter' Move Cursor Along for Next Letter
	NEXT
END SUB

FUNCTION flipACoinFiftyFifty()
	flipACoinFiftyFifty = FALSE
	IF RND() > 0.49 THEN	flipACoinFiftyFifty = TRUE
END FUNCTION

FUNCTION generateRandomCode()
	FOR placebo = 1 TO numberOfLetters
		IF (flipACoinFiftyFifty OR numbersAllowedInCode = FALSE) AND  lettersAllowedInCode = TRUE THEN
	        generateRandomCode = generateRandomCode & CHR(INT((26 * RND()) + 65))
		ELSE
			generateRandomCode = generateRandomCode & CHR(INT((10 * RND()) + 48))
		END IF
	NEXT
	SESSION("verificationCode") = generateRandomCode
END FUNCTION

'*************** BUILD THE CODE BOX ***************
RANDOMIZE
spacePerLetter = INT(codeBoxWidth / numberOfLetters)'				Calculate How Much Space Each Character Has
charXposition = 3'													Start Cursor 5 Pixels from the Left
Set aspJpegImageObject = Server.CreateObject("Persits.jpeg")'		Initialise ASPJpeg Ovject
aspJpegImageObject.New codeBoxWidth, codeBoxHeight, backGroundColor'Create A New Blank JPG based on Options
IF wantBorderRoundCodeBox THEN drawBorderRoundBox '					If a border is wanted, draw one.
CALL drawLines(0, numberOfRandomLinesUnderneath, multiColorLinesUnderneath)' Draw Some Distorting Lines OVER Verification Code
CALL writeCodeToImage(generateRandomCode())'						Call Function to Write Code, passing it randomCode
CALL drawLines(numberOfLongLinesOnTop, numberOfRandomLinesOnTop, multiColorLinesOnTop)' 
aspJpegImageObject.Quality = codeImageJPGQuality'					Set JPG Image Quality
aspJpegImageObject.SendBinary' 										Send the Output of this Script as a JPEG
Set aspJpegImageObject = NOTHING'									Close ASPJpeg Object


%>

Nella pagina che devi controllare: prova.asp (poi da sostitiure con la pagina del modulo che invia la mail)
Codice:
<form action="prova.asp" method="post">
&nbsp;&nbsp;<font face="Arial" size="2">* Codice</font>
<td width="15%" align="center"><img src="imageVerification.asp" alt="Verify Code" vspace="2"></td>
<td width="65%">&nbsp; 
<input name="verificationCode" type="text" id="verificationCode" size="5" maxlength="4">&nbsp; <font face="Arial" size="2">* Inserire il Codice di verifica</font></td><br><br>
<input type="submit" value="Invia">
</form>

Pagina prova.asp
Codice:
<%

if request("verificationCode") = ""  then
response.write"Inserire il Codice di verifica"
response.end
end if

if request("verificationCode") <> session("verificationCode") then
response.write"Codice verifica Errato"
response.end
end if


session("verificationCode") = ""

%>

Valeria :byebye:
 

muscaril

Utente Attivo
16 Mar 2009
46
0
6
questo codice:
Codice:
<form action="prova.asp" method="post">
&nbsp;&nbsp;<font face="Arial" size="2">* Codice</font>
<td width="15%" align="center"><img src="imageVerification.asp" alt="Verify Code" vspace="2"></td>
<td width="65%">&nbsp; 
<input name="verificationCode" type="text" id="verificationCode" size="5" maxlength="4">&nbsp; <font face="Arial" size="2">* Inserire il Codice di verifica</font></td><br><br>
<input type="submit" value="Invia">
</form>
in quale riga del mio modulo deve essere inserito?
 

Vale2

Utente Attivo
28 Mag 2006
446
0
0
Livorno
Ciao,


puoi metterlo direttamente nella pagina dell'invio della mail con CDOSYS.


Comunque quella pagina deve essere sistemata, o utilizzala solo per prova.


Valeria.
 

Vale2

Utente Attivo
28 Mag 2006
446
0
0
Livorno
Questa,


Codice:
<%
'============Linkbruttocane su specifiche MSDN================
'*   il corpo finale del messaggio contiene tutti i campi    *
'*   inseriti nella pagina html, in pratica puoi mettere     *
'*   tutti i campi che ti servono nel modulo di invio senza  *
'*   fare altre configurazioni aggiuntive.                   *  
'=============================================================

DIM corpoMessaggio, numeroCampi, invioA, invioDa, nomeDominio, indirizzoIp, modulo, browserSistemaOperativo

	'* voce da modificare con il proprio indirizzo email
	
invioA =  "info@***************"

	'* voce da modificare con un indirizzo email che funga da mittente: 
	'* in caso di errore riceverete notifica a questo indirizzo un MAILER-DAEMON
	'* dato che cdosys supporta questa notifica
		
invioDa =  "info@****************"

'------------fine modifiche necessarie------------------

nomeDominio 				= Request.ServerVariables("HTTP_HOST")
indirizzoIp					= Request.ServerVariables("REMOTE_ADDR") 
modulo						= Request.ServerVariables("HTTP_REFERER")
browserSistemaOperativo		= Request.ServerVariables("HTTP_USER_AGENT")

	'*rilevo i campi del form
	
FOR numeroCampi = 1 TO (Request.Form.Count() - 0)
   IF NOT Request.Form(numeroCampi) = "" THEN
      corpoMessaggio = corpoMessaggio & vbCrLf & Request.Form.Key(numeroCampi) & " = " & Trim(Request.Form(numeroCampi))
   END IF
NEXT

	'* creo gli oggetti cdosys sul server e li gestisco
	
DIM iMsg, Flds, iConf

Set iMsg = CreateObject("CDO.Message")
Set iConf = CreateObject("CDO.Configuration")
Set Flds = iConf.Fields

Flds(cdoSendUsingMethod) = cdoSendUsingPort
Flds(cdoSMTPServer) = "smtp.aruba.it" 
Flds(cdoSMTPServerPort) = 25
Flds(cdoSMTPAuthenticate) = cdoAnonymous ' 0
Flds.Update

With iMsg
   Set .Configuration = iConf
   .To = invioA
   .From = Request.Form("email")
   .Sender = invioDa
   .Subject = "Contatto dal dominio " & nomeDominio
   .TextBody = "Questi i dati inseriti nel modulo presente alla pagina " & modulo & " da utente con indirizzo IP " & indirizzoIp & "  browser e sistema operativo " & browserSistemaOperativo  & vbCrLf & corpoMessaggio & ""
   .Send
End With
%> 
<script>
document.location.replace('grazie.asp');
</script>

Valeria.
 

Paolo69

Moderatore
Membro dello Staff
MOD
18 Feb 2010
555
13
18
Italy
www.caprioli.info
E' la prima volta che uso il captcha generato da Persist, un po spartano ma funzionale ed economico.

Usando il suggerimento di Valeria è venuta fuori questa pagina: http://www.caprioli.info/fitness/script/email.asp

Ti ho corretto lo script campi obbligatori e Accetta la privacy (il pulsante è disabilitato se non accetti).

Se ti garba questo è il codice relativo alla pagina email.asp:

Codice:
<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>EMail</title>
<style type="text/css">
body {
	font-family: Verdana, Geneva, sans-serif;
	font-size: 12px;
	line-height: 12px;
	height: 12px;
	width: auto;
	color: #333;
	text-decoration: none;
	margin-top: 0px;
	margin-right: 10px;
	margin-bottom: 0px;
	margin-left: 10px;
}
</style>
</head>

<body>
<script language="JavaScript"> 
//
	function checkform(which){
		var pass=true
		if (document.images){
		for (i=0;i<which.length;i++){
		var tempobj=which.elements[i]
		if (tempobj.name.substring(0,4)=="form"){
		if (((tempobj.type=="text"||tempobj.type=="textarea")&&tempobj.value=='')||(tempobj.type.toString().charAt(0)=="s"&&tempobj.selectedIndex==-1)){
		pass=false
		break
		}
		}
		}
		}
		if (!pass){
		alert(" Compilare i campi obbligatori /n All fields required")
		return false
		}
		else
		return true
	}

// 
	function accetta(el){
		checkobj=el
			if (document.all||document.getElementById){
				for (i=0;i<checkobj.form.length;i++){  
		var tempobj=checkobj.form.elements[i]
			if(tempobj.type.toLowerCase()=="submit")
		tempobj.disabled=!checkobj.checked
									}
								}
							}
		function disabilita(el){
			if (!document.all&&!document.getElementById){
					if (window.checkobj&&checkobj.checked)
		return true
				else{
		alert(" Compilare i campi obbligatori /n All fields required")
		return false
							}
				}
	}
</script> 
<%
'WRITTEN BY BOB MCKAY, FRESHMANGO.COM - USE AS YOU WISH BUT PLEASE LEAVE THIS IN CODE
IF request("verificationCode") <> "" AND request("verificationCode") = session("verificationCode") THEN

' IMPOSTAZIONE BASE, SMTP SENZA AUTENTICAZIONE
	strHost = "smtp.aruba.it"
	invioA  = "[email protected]" ' mittente del tipo [email protected]
	invioDa = "[email protected]" ' destinatario

	If Request("Send") <> "" Then

DIM corpoMessaggio, numeroCampi, invioA, invioDa, nomeDominio, indirizzoIp, modulo, browserSistemaOperativo

			
'------------fine modifiche necessarie------------------

			nomeDominio 				= Request.ServerVariables("HTTP_HOST")
			indirizzoIp					= Request.ServerVariables("REMOTE_ADDR") 
			modulo						= Request.ServerVariables("HTTP_REFERER")
			browserSistemaOperativo		= Request.ServerVariables("HTTP_USER_AGENT")

	'*rilevo i campi del form
	
			FOR numeroCampi = 1 TO (Request.Form.Count() - 0)
			   IF NOT Request.Form(numeroCampi) = "" THEN
				  corpoMessaggio = corpoMessaggio & vbCrLf & Request.Form.Key(numeroCampi) & " = " & Trim(Request.Form(numeroCampi))
			   END IF
			NEXT


		' Windows XP / 2003 
			Set myMail			=  CreateObject("CDO.Message")
				myMail.Subject 	= "Contatto dal dominio " & nomeDominio ' oggetto
				myMail.From		= invioA ' mittente
				myMail.To		= invioDa ' destinatario
			'	myMail.bCC 		= "" 'destinatario nascosto		
				myMail.TextBody = "Questi i dati inseriti nel modulo presente alla pagina " & modulo & " da utente con indirizzo IP " & indirizzoIp & "  browser e sistema operativo " & browserSistemaOperativo  & vbCrLf & corpoMessaggio & ""
  				myMail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing")= 2
				myMail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver")= strHost
				myMail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport")= "25"
				myMail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = ""
				myMail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = ""
				myMail.Configuration.Fields.Update
				myMail.Send
			Set myMail = Nothing

	Response.Write("<h3>Grazie</h3>")
	Response.Write("<p>Grazie per averci scritto.</p>")

	End If

ELSE
%>
<H2>AspEmail invio con captcha</h2>

<% If strErr <> "" Then %>
<h3><FONT COLOR="#FF0000">Errore: <I><% = strErr %></I></FONT></h3>
<% End If %>

<% If bSuccess Then %>
<h3><FONT COLOR="#00A000">Inviata correttamente a <% = Request("To") %>.</FONT></h3>
<% End If %>

<form action="email.asp" method="post" name="form1" onSubmit="return checkform(this)">
<input type="hidden" name="send" value="send" />
<p>Nome (*)</p>
<p><input type="text" name="form_nome" size="30" value="<%=Request("form_nome")%>"></p>
<p>Cognome (*)</p>
<p><input type="text" name="form_cognome" size="30" value="<%=Request("form_cognome")%>"></p>
<p>Telefono (*)</p>
<p><input type="text" name="form_telefono" size="30" value="<%=Request("form_telefono")%>"></p>
<p>Azienza (*)</p>
<p><input type="text" name="form_azienda" size="30" value="<%=Request("form_azienda")%>"></p>
<p>Messaggio</p>
<p><textarea name="messaggio" rows="5" cols="33" wrap="VIRTUAL"><%=Request("messaggio")%></textarea></p>
<p>Dimostra che sei umano, ricopia il codice  (*) <span style="font-size:9px">(Attenzione minuscole e MAIUSCOLE)</span></p>
<p><img src="imageVerification.asp" alt="Verify Code" vspace="2" /><input name="verificationCode" type="text" id="verificationCode" size="5" /><%IF request("verificationCode") <> session("verificationCode") THEN Response.Write("<strong class=""warningMsg"">Attenzione codice errato</strong>")%></p>
<p><input id="Privacy" onClick="accetta(this)" type="checkbox" name="Privacy" /> Accetto le condizioni sulla <a href="documenti/privacy.pdf">privacy</a></p>
<p><input type="submit" disabled="disabled" name="submit" value="Invia" style="size:150px; width:150px;"></p>
<p>(*) Campi obbligatori</p>
</form>                 
<% End If %>
                     
</body>
</html>

Ricordati anche di creare la pagina che si occupa di creare l'immagine ImageVerification.asp:

Codice:
<%
'WRITTEN BY BOB MCKAY, WWW.FRESHMANGO.COM - USE AS YOU WISH BUT PLEASE LEAVE THIS IN CODE
'ASPJpeg Based Image Form Verification Script
'VERSION 1.1


'*************** CODE BOX OPTIONS ***************
codeBoxWidth = 120
codeBoxHeight = 40
numberOfLetters = 4 '					Allow Minimum 20 Pixels Per Letter - See codeBoxWidth Property Above)
wantBorderRoundCodeBox = FALSE '		Put a Border Round the code box(MUST be TRUE or FALSE)
borderRoundCodeBoxColor = "&H3C6194"
backGroundColor = "&HFFEEEE"
codeFontColor = "&H3C6194"
numbersAllowedInCode = TRUE'	Set to FALSE for a 'Letters Only' Code
lettersAllowedInCode = TRUE'	Set to FALSE for a 'Numeric Only' Code
'The fonts the script is allowed to select from - these MUST be installed on the Host computer
hostFontList = Array("Arial", "Courier New", "Helvetica", "Times New Roman", "Georgia", "Comic Sans MS")
minimumFontSize = 18
maximumFontSize = 36

'*************** DISTORTION OPTIONS ***************
codeImageJPGQuality = 99' 		Lower this to allow JPG distortion of the codeBox
multiColorLinesOnTop = FALSE'	If set to FALSE, ON TOP line color defaults to code font color
numberOfLongLinesOnTop = 2'		Number of end to end lines drawn ON TOP of the code
numberOfRandomLinesOnTop = 1'	Number small lines drawn ON TOP of the code
multiColorLinesUnderneath = TRUE'	If set to FALSE, UNDERNEATH line color defaults to code font color
numberOfRandomLinesUnderneath = 4'	Number small lines drawn UNDERNEATH of the code



'*************** FUNCTIONS & SUBROUTINES ***************
SUB drawBorderRoundBox
	aspJpegImageObject.Canvas.Brush.Solid = FALSE ' Do NOT fill box with color when drawing 
	aspJpegImageObject.Canvas.Pen.Color = borderRoundCodeBoxColor
	aspJpegImageObject.Canvas.DrawBar 0, 0, codeBoxWidth, codeBoxHeight
END SUB

SUB drawLines(numberOflongLines, numberOfShortLines, randomLineColor)
	aspJpegImageObject.Canvas.Pen.Color = codeFontColor
	FOR drawLongLines = 1 TO numberOflongLines
		IF randomLineColor = TRUE THEN aspJpegImageObject.Canvas.Pen.Color = "&H" & HEX(INT(RND*255)) & HEX(INT(RND*255)) & HEX(INT(RND*255))
		aspJpegImageObject.Canvas.DrawLine 5, INT(RND * 35), (codeBoxWidth - 5), INT(RND * 35)
	NEXT
	FOR drawShortLines = 1 TO numberOfShortLines
		IF randomLineColor = TRUE THEN aspJpegImageObject.Canvas.Pen.Color = "&H" & HEX(INT(RND*255)) & HEX(INT(RND*255)) & HEX(INT(RND*255))
		aspJpegImageObject.Canvas.DrawLine INT(RND*codeBoxWidth)+1, INT(RND * 35), INT(RND*codeBoxWidth)+1, INT(RND * 35)
	NEXT
END SUB

SUB writeCodeToImage(randomCode)
	aspJpegImageObject.Canvas.Font.Color = codeFontColor
	aspJpegImageObject.Canvas.Font.Quality = 4' Antialiased
	aspJpegImageObject.Canvas.Font.BkMode = "Opaque" ' Required for Antialiasing
	aspJpegImageObject.Canvas.Font.BkColor = backGroundColor
	FOR currentCodeLetter = 1 TO LEN(randomCode) ' Loop Through Letters in Code
		IF flipACoinFiftyFifty THEN	aspJpegImageObject.Canvas.Font.Italic = TRUE
		IF flipACoinFiftyFifty THEN	aspJpegImageObject.Canvas.Font.Bold = TRUE
		IF flipACoinFiftyFifty THEN	aspJpegImageObject.Canvas.Font.Underlined  = TRUE
		aspJpegImageObject.Canvas.Font.Family = hostFontList(INT(RND * (UBOUND(hostFontList)+1))) 'Randomly Select Font from Host Font List
		aspJpegImageObject.Canvas.Font.Size = INT(RND * ((maximumFontSize - minimumFontSize)+1)) + minimumFontSize'INT(RND * 12) + 18 'Randomly Choose Font Size 14 to 26
		aspJpegImageObject.canvas.print charXposition, 5, MID(randomCode, currentCodeLetter, 1)
		charXposition = charXposition + spacePerLetter' Move Cursor Along for Next Letter
	NEXT
END SUB

FUNCTION flipACoinFiftyFifty()
	flipACoinFiftyFifty = FALSE
	IF RND() > 0.49 THEN	flipACoinFiftyFifty = TRUE
END FUNCTION

FUNCTION generateRandomCode()
	FOR placebo = 1 TO numberOfLetters
		IF (flipACoinFiftyFifty OR numbersAllowedInCode = FALSE) AND  lettersAllowedInCode = TRUE THEN
	        generateRandomCode = generateRandomCode & CHR(INT((26 * RND()) + 65))
		ELSE
			generateRandomCode = generateRandomCode & CHR(INT((10 * RND()) + 48))
		END IF
	NEXT
	SESSION("verificationCode") = generateRandomCode
END FUNCTION

'*************** BUILD THE CODE BOX ***************
RANDOMIZE
spacePerLetter = INT(codeBoxWidth / numberOfLetters)'				Calculate How Much Space Each Character Has
charXposition = 5'													Start Cursor 5 Pixels from the Left
Set aspJpegImageObject = Server.CreateObject("Persits.jpeg")'		Initialise ASPJpeg Ovject
aspJpegImageObject.New codeBoxWidth, codeBoxHeight, backGroundColor'Create A New Blank JPG based on Options
IF wantBorderRoundCodeBox THEN drawBorderRoundBox '					If a border is wanted, draw one.
CALL drawLines(0, numberOfRandomLinesUnderneath, multiColorLinesUnderneath)' Draw Some Distorting Lines OVER Verification Code
CALL writeCodeToImage(generateRandomCode())'						Call Function to Write Code, passing it randomCode
CALL drawLines(numberOfLongLinesOnTop, numberOfRandomLinesOnTop, multiColorLinesOnTop)' 
aspJpegImageObject.Quality = codeImageJPGQuality'					Set JPG Image Quality
aspJpegImageObject.SendBinary' 										Send the Output of this Script as a JPEG
Set aspJpegImageObject = NOTHING'									Close ASPJpeg Object


%>

Buona serata
Paolo :mavieni:
 
Ultima modifica:

Vale2

Utente Attivo
28 Mag 2006
446
0
0
Livorno
Ciao, Paolo

ricontrolla quanto hai scritto.

1) Vieta l'uso di JavaScript
2) Dopo inviata la Sessione della email inviata deve Scadere e non avviene
3) Non hai messo il numero dei caratteri inseribili nel box

3) Onde evitare tali complicazioni, visto che ho inviato un centinaio di email con il tuo esempio usa una Sub e impostazioni lato Server non JavaScript.


Nota: è solo una info per la procedura.

Valeria. :elvis:
 

Paolo69

Moderatore
Membro dello Staff
MOD
18 Feb 2010
555
13
18
Italy
www.caprioli.info
1) Vieta l'uso di JavaScript

...effettivamente non volevo complicare ed allungare il codice, se serve gli posso inserire tutti i controlli del mondo ma poi vengono compresi o basta fare copia - incolla?

2) Dopo inviata la Sessione della email inviata deve Scadere e non avviene
...effettivamente ho provato ed ho notato questo bug, basta inserire prima del grazie:
Codice:
	' cancel session	
		Session.Abandon


	Response.Write("<h3>Grazie</h3>")
	Response.Write("<p>Grazie per averci scritto.</p>")
E' la prima volta che uso questo script, ho scritto questa pagina in 10 minuti di tempo... è venuta come è venuta. :book:

3) Non hai messo il numero dei caratteri inseribili nel box
...non ci ho pensato :rolleyes:

3) Onde evitare tali complicazioni, visto che ho inviato un centinaio di email con il tuo esempio usa una Sub e impostazioni lato Server non JavaScript.
...mi sono arrivate 211 email, ne sai niente? :pernacchi

Buona serata...
Paolo :fonzie:
 

Vale2

Utente Attivo
28 Mag 2006
446
0
0
Livorno
Ciao,

mi spiace, si ho inviato io le mail (credevo essendo un'esempio che non avessi impostato la tua email nel form SORRY).

Session.Abandon NO

Controlla e riprova (reply evita javascript lato client, mettilo nel file server)


Valeria :elvis::elvis:
 

Paolo69

Moderatore
Membro dello Staff
MOD
18 Feb 2010
555
13
18
Italy
www.caprioli.info
Session.Abandon NO
...non capisco cosa vuoi dire, ho usato il codice da te consigliato che non userei mai e poi mi correggi, almeno indica come.

Controlla e riprova (reply evita javascript lato client, mettilo nel file server)
...mi sembra di essere a scuola e di superare un esame.
Se muscaril desidera che i controlli siano in ASP e non in Javascript basta che lo chieda, io mi sono orientato sul suo codice pubblicato nel primo post.


Buona giornata e buon lavoro a tutti
Paolo
 

Vale2

Utente Attivo
28 Mag 2006
446
0
0
Livorno
Ciao,

non voglio entrare nei meriti o implementare funzioni o altro

ES: controllo email lato server

Codice:
<%
Function RegExpTest(strng)                                                    
Dim regEx 
Set regEx = New RegExp                                                      
regEx.Pattern =  "^[\w\-\.][\w\-\.][\w\-\.][\w\-\.]*[\w\.]\@[\w\.]*[\w\-\.]+[\w\-]+[\w]\.+[\w]+[\w]$"
regEx.IgnoreCase = True
RegExpTest = regEx.Test(strng)                                      
End Function 
%>

Controllo:

Codice:
Da = request.form("Da") // email di chi invia la mail
if not(RegExpTest(Da)) then // se diverso stampi un messaggio
response.write"<center>"
response.write"<font face=Arial size=""2"">Inserire l'email del mittente</font><br><br>"
response.write"<a href=""#"" onclick=""javascript:history.back(0)"">Torna indietro e correggi</a>"
response.write"</center>"
response.end // blocco l'esecuzione del codice
end if

La prima lettera non deve essere uno spazio

Codice:
if request("Nome_Campo") = "" or MID(request("Nome_Campo"),1,1) = " " then

Gestire errori con Err.Description

Codice:
On Error Resume Next
If Err.Number = 0 Then
// non stampi gli errori
Else 
Response.Write Err.Description & "<hr>" 
Err.Number = 0 
End If 
On Error Goto 0 

else // da qui inizio l'invio del modulo

Codice:
<%
End if
%>

Fine ciclo controlli base

> che non userei mai

Allora usiamo quello che imposti te con una percentuale del 100% che vengno bypassati.



Valeria.:elvis::elvis::elvis:
 
Discussioni simili
Autore Titolo Forum Risposte Data
P Errore Codice Sicurezza Guestbook Supporto Mr.Webmaster 0
A Non riesco più a visualizzare il codice sicurezza nel forum Supporto Mr.Webmaster 3
asevenx problema con codice di sicurezza captcha PHP 2
P Codice sicurezza Asp Classic ASP 7
M Analisi sito per pulire codice inutile HTML e CSS 1
JeiMax Modifica codice php personalizzato PHP 2
R Dubbi su siti sviluppati con Wordpress e con codice WordPress 6
L tipo boolean non funzionante su mariadb (mysql). E codice php 7.4. PHP 0
L Php_aggiornamento codice PHP 3
Shyson Codice wp-login non funziona PHP 2
G Codice html Javascript 1
Shyson Modificare codice e creare link PHP 0
F Il codice php è giusto? PHP 2
napuleone Con le date il codice da di matto o forse non è così Javascript 6
napuleone visualizzare il codice senza usare gli & HTML e CSS 1
Shyson Codice che trova item casuali PHP 1
E Barra di avanzamento codice PHP PHP 4
R [c#] Proteggere il codice dell'applicazione C/C++ 0
D modificare questo codice per inserimento in text e non in tabella jQuery 1
L salvare codice html in mysql PHP 3
A eliminare caratteri diacritici con codice ascii PHP 4
M Controllo del codice fiscale/partita iva PHP 11
Z Difficoltà codice data PHP 0
I PROBLEMA CODICE INSERTION SORT C C/C++ 2
I PROBLEMA CODICE C - INSERTION SORT Presentati al Forum 1
L login con solo un codice PHP 3
M Lanciare alert se il codice fiscale è già presente nel db e lasciare la scelta di inserire all'utente PHP 42
R Modifica codice per l'upload di più file PHP 1
gandalf1959 ricercare porzioni di codice da sito gestito con WordPress WordPress 11
D verifica codice fiscale persona fisica /aziendale stesso campo HTML e CSS 1
A Aprire la window form Add Connection da codice Visual Basic 4
felino [Wordpress] Sito web con codice malevolo WordPress 7
M [PHP] Istruzione "echo" all'interno di codice html PHP 2
C Refresh parte di codice pagina php PHP 6
Shyson [PHP] Aggiungere link al codice PHP 0
felino Domini hackerati con codice malevolo Hosting 2
A come spedire SMS da codice PHP con mdem USB PHP 0
M [PHP] Come inserire codice html in un ciclo while PHP 2
G Eseguire codice solo al termine della chiamata ajax Ajax 1
X [Apache] Creare sito clone/preservare codice sorgente Apache 7
felino [Dominio] File con permessi 444 e codice malevolo Domini 3
Shyson [PHP] Codice iscrizione e invio avviso nuovi articoli PHP 3
elpirata Implementare Copy to clipboard in codice html HTML e CSS 1
L [PHP] Problema su codice o server PHP 5
Shyson [PHP] Inserire testo nel codice PHP 2
Shyson [PHP] Nascondere codice PHP 3
H cancellare avatar in codice PHP PHP 2
G [PHP] Revisione codice per registrazione PHP 8
Shyson [WordPress] [PHP] Creare codice che evidenzia nuovi articoli WordPress 0
S [WordPress] Creare una select box con partita iva e codice fiscale in base a una logica. WordPress 0

Discussioni simili