Sumário da palestra de Michael Evangelista, no ColdFusion Meetup de 15 de Outubro, 2009.
A gravação da palestra em ingles se encontra aqui: http://www.meetup.com/coldfusionmeetup/pages/Recordings_of_the_ColdFusion_Meetup-2009/
Página de demonstração: http://www.gowestwebdesign.com/demos/contact-form/index.cfm
Cansado de Spam ? (Quem não está?)
Não importa o quão bom são os nossos filtros, ou como podemos ser cuidadosos em fazer os nossos endereços de e-mail públicos, algumas coisas nojentas ainda passam.
Mas há uma maneira de lutar de volta, defendendo os formulários de contato de seu site e outras entradas de e-mail nos formulários, sem que seus visitantes façam marabailismo, resolvam quebra-cabeças ou leiam letras embaralhadas (captcha) apenas para deixar uma nota para voce.
Formulário
<!--- INCICIO ---> <cfif isDefined('form.senderFrom')> <!--- VALIDANDO CAMPOS ---> <!--- checar email ---> <cfif NOT len(trim(form.senderFrom)) gt 6 or NOT isValid('email',form.senderFrom)> <cfset request.formError = 'Entre com um email válido'> <!--- mensagem ---> <cfelseif NOT len(trim(form.senderMessage))> <cfset request.formError = 'Certifique-se de incluir uma mensagem'> <!--- honeypot ---> <cfelseif len(trim(form.email_address))> <cfset request.formError = 'Spam!! «br />(Sai fora!)'» </cfif> <!--- /end VALIDANDO CAMPOS ---> <!--- CHECAR CONTEUDO INDESEJADO ---> <!--- loop sobre variaveis do formulario ---> <cfloop index="f" list="#form.fieldnames#"> <!--- define variavel para valor do campo ---> <cfset value="#evaluate('form.#f#')#"> <!--- PALAVRAS BANIDAS ---> <cfset bannedWordsList = "herring,albatross,dragon,grail,lumberjack"> <!--- loop sobre a lista de palavras banidas para verificar a existencia de alguma no texto---> <cfloop list="#bannedWordsList#" delimiters="," index="w"> <cfif FindNoCase(w,value)> <cfset request.formerror="«br />Perdão? <br />O que dói em voce?"» <cfbreak> </cfif> </cfloop> <!--- / end PALAVRAS BANIDAS ---> <!--- BLOQUEAR HTML ---> <cfset leftChar = '«' > <cfset rightChar = '>' » <!--- Pesquisar em todos os caracteres do nosso conteúdo ---> <cfif findNoCase(leftChar, value) AND findNoCase(rightChar, value)> <cfset request.formerror = "Somente texto, por favor, não HTML"> <cfbreak> </cfif> <!--- / end BLOQUEAR HTML ---> </cfloop> <!--- / end CHECAR CONTEUDO INDESEJADO ---> <fieldset> <legend> <cfif isDefined('request.formerror') and len(trim(request.formerror))> Erro! <cfelse> Obrigado </cfif> </legend> <!--- EXIBIR RESPOSTA ---> <cfif isDefined('request.formerror') and len(trim(request.formerror))> <p><strong>ERROR: <cfoutput>#request.formerror#</cfoutput></strong></p> <p>Enviar <a href="javascript:history.back()">Voltar</a> e tentar de novo</p> <cfelse> <p>Obrigado. <br /><br />Sua mensagem foi enviada e responderemos em breve!</p> </cfif> <p> </p> </fieldset> <!--- SE FORMULARIO NAO SUBMETIDO (exibe o formulario) ---> <cfelse> <fieldset> <legend>Sample Contact Form</legend> <cfform name="contactForm" action="#cgi.SCRIPT_NAME#" method="post"> <div> <label for="senderName">Name: </label> <cfinput type="text" name="senderName" size="48" value="" required="true" message="Nome requerido"> </div> <div> <label for="senderFrom">Email:</label> <cfinput type="text" name="senderFrom" size="48" value="" required="true" validate="email" message="Email requerido"> </div> <div> <label for="senderPhone">Phone: </label> <input type="text" name="senderPhone" size="20" value=""> </div> <div> <label for="senderPhone">Your Message:</label> <textarea name="senderMessage" cols="30" rows="12" style="width:310px;"></textarea> </div> <div style="text-align:center"> <input type="submit" value="Submit"> </div> <div id="email_wrapper"> <input type="text" name="email_address" value="" size="20"> </div> </cfform> </fieldset> </cfif> <!--- / end IF FORM SUBMITTED --->