PS:
Se qualcuno crede sia troppo difficile da leggere, basta cambiare la font![]()
FlepStudio ha creato una semplice captcha per Flash CS3 con Actionscript 3.0 .
Cos'è una captcha ?
Con l'acronimo inglese CAPTCHA si denota nell'ambito dell'informatica un test fatto di una o più domande e risposte per determinare se l'utente sia un umano (e non un computer o, più precisamente, un bot).
Un test captcha tipicamente utilizzato è quello in cui si richiede ad un utente di scrivere quali siano le lettere o numeri presenti in una sequenza di lettere o numeri che appaiono distorti o offuscati sullo schermo.
I captcha sono utilizzati per impedire che i bot utilizzino determinati servizi, come i forum, la registrazione presso siti, scrivere commenti e in generale tutte quello che potrebbe essere usato per creare spam o per violare la rete con operazioni di hacking come il brute force. Ultimamente questo tipo di test viene utilizzato anche per contrastare lo spam generato da bot obbligando il mittente, se non conosciuto dal destinatario, a superare un test captcha prima di consentire la consegna del messaggio.
FlepStudio ha creato una captcha in Flash che può essere utilizzata nei vostri guestbook oppure shoutbox.
Può essere utilizzata in qualsiasi applicazione Flash che prevede l' inserimento di commenti o messaggi da parte degli utenti.
E' una semplice classe Actionscript 3.0 facilmente gestibile tramite un suo metodo.
CAPTCHA per Flash CS3
La classe Actionscript 3.0
Code:package org.FlepStudio { import flash.display.*; import flash.events.*; import flash.geom.*; import flash.text.*; public class Captcha extends MovieClip { private var clip_mc:MovieClip; private var captcha_array:Array; private const CAPTCHA_LENGTH:int=8; private var captcha:String=""; public function Captcha() { addEventListener(Event.ADDED_TO_STAGE,init); } private function init(evt:Event):void { removeEventListener(Event.ADDED_TO_STAGE,init); captcha_array=new Array("A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","a","b","c","d","e","f","g","h","i","j", "k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","0","1","2","3","4","5","6","7","8","9"); createClip(); createBackground(); createCaptcha(); createText(); } private function createClip():void { clip_mc=new MovieClip(); addChild(clip_mc); } private function createBackground():void { var fillType:String=GradientType.LINEAR; var colors:Array=[Math.random()*0xFFFFFF,Math.random()*0xFFFFFF]; var alphas:Array=[1,1]; var ratios:Array=[0x00,0xFF]; var matr:Matrix=new Matrix(); matr.createGradientBox(20,20,0,0,0); var spreadMethod:String=SpreadMethod.REFLECT; clip_mc.graphics.beginGradientFill(fillType,colors,alphas,ratios,matr,spreadMethod); clip_mc.graphics.drawRect(0,0,140,40); } private function createCaptcha():void { for(var i:int=0;i < CAPTCHA_LENGTH;i++) { var randomNumber:int=Math.floor(Math.random()*captcha_array.length); captcha+=captcha_array[randomNumber]; } } private function createText():void { var field_txt:TextField=new TextField(); field_txt.multiline=false; field_txt.selectable=false; field_txt.embedFonts=true; field_txt.defaultTextFormat=getFormat(); field_txt.text=captcha; field_txt.width=field_txt.textWidth+5; field_txt.height=field_txt.textHeight; field_txt.x=(clip_mc.width-field_txt.textWidth)/2; field_txt.y=(clip_mc.height-field_txt.textHeight)/2; clip_mc.addChild(field_txt); } private function getFormat():TextFormat { var format:TextFormat=new TextFormat(); format.font="Flubber"; format.size=24; format.color=0xFFFFFF; return format; } public function checkCaptcha(str:String):Boolean { if(str===captcha) return true; else return false; } } }Un esempio di come utilizzarla
Code:import org.FlepStudio.Captcha; var test:Captcha=new Captcha(); test.x=260; test.y=160; addChild(test); send_btn.addEventListener(MouseEvent.MOUSE_DOWN,setDown); function setDown(evt:MouseEvent):void { var answer:Boolean=test.checkCaptcha(test_txt.text); trace(answer); }Metodi
checkCaptcha(String):Boolean
Una volta istanziata la classe e attaccata allo stage ( oppure dentro un' altra MovieClip ), basta chiamare questo metodo passandogli la stringa dell' utente che sta inserendo nel campo di testo.
Riceverete un valore Boolean di ritorno ( true o false ) e in base a quel valore deciderete che azioni eseguire alla vostra applicazione.
PS:
Se qualcuno crede sia troppo difficile da leggere, basta cambiare la font![]()
Grazie Flep! Davvero molto utile, era da tempo che cercavo un captcha innovativo e personalizzabile!![]()
Parole Poco Pensate Portano Pena Perciò Prima Pensare Poi Parlare
Grazie di tutto il tuo lavoro che ci offri gratuitamente, ma posso chiederti se si potrebbe integrare anche in pagine asp?
Poi se possibile vorrei sapere se queste utility funzionano solo attraverso il tuo sito oppure anche da sole?
perchè vedo queste chiamate che se non sbaglio significano che stanno richiamando dei file dal tuo sito. Grazie
package org.FlepStudio
{
import flash.display.*;
import flash.events.*;
import flash.geom.*;
import flash.text.*;
Ciao angelcs,
questa captcha non lavora lato server, è solo per Flash, quindi implementabile solo in un SWF.
Quelle righe non richiamano scripts sul server di FlepStudio, importano le classi built-in che necessita la classe Main.as
Gli scripts e le risorse di FlepStudio, se ben configurate come le istruzioni ( ahimè spero che siano sempre chiare, io faccio del mio meglio ) che vengono fornite per ogni risorsa, girno su tutti i servers.
ok grazie,
il tuo sito e chiarissimo oltre a essere una guida molto utile a tutti, compreso me che di flash non ne capisco niente
Complimenti ancora per la tua sapienza
che dire.. minuziosissimo.... complimenti flep.
Ottimo lavoro Flep ma sinceramente non vedo l'utilità di un Captcha per Flash...
Non potendo accedere all'swf da javascript (com'è invece possibile fare con il DOM di una pagina html) per interagire con esso un malintenzionato dovrebbe creare un programma apposta che simuli la pressione dei tasti del mouse e della tastiera.
Inoltre la maggior parte dei Captcha lavorano su algoritmi di distorsione geometrica...
Infatti utilizzando un font ben definito, per quanto strano, la decodifica dell'immagine è tutt'altro che cosa ardua.
_
_
Teejay, just a flasher!
Se vi sono d'aiuto, premete la bilancia!
_
Lo so bene Teejay, però ad esempio se hai un guestbook frequentato da ragazzini che si divertono a lanciare un messaggio dietro l' altro... allora questa captcha può risolverti il problema.
Ciao Flep,
complimenti per l'utilità, molto bella...
1) Potresti postare il fla con il refresh salvato in formato cs3?
2) Come si fa ad integrare il tuto in un swf esistente (es swf contatti)?
Salutri e ...grazie
Bookmarks