captcha in falsh

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.044
150
63
PR
www.borgo-italia.it
ciao (spero in carla)
mi è venuta l'idea di fare un captcha in flash (ho flash 8).
sono riuscito a fare la finestrella con tre numeri casuali che vibrano (quindi penso molto difficili da scannerizzare).
ho inserito l'swf entro un form in pagina php, ma non riesco a trasmettere i numeri casuali alla pagina
?? invio.sendAndLoad("mia_pag.php", invio,"POST")???
in invio (array) ho i tre numeri casuali

quale è l'as (ho il 2)? per inviare i valori?
grazie
 
ciao
posto i codici in modo che se qualcuno può darmi una mano...

codice as2

stop();
/*generatore umeri casuali da 0 a 9*/
function casuale_0_9(){
var casuale:Number = Math.floor(Math.random()*10);
return casuale;
}
/*rendo invisibili i movie
ho n° 9 movie clip (zero,uno, due,....,nove) con nome
n0x per la prima posizione
n1x per la seconda
n2x per la terza
*/
n09._visible=false;
n19._visible=false;
n29._visible=false;
n08._visible=false;
n18._visible=false;
n28._visible=false;
n07._visible=false;
n17._visible=false;
n27._visible=false;
n06._visible=false;
n16._visible=false;
n26._visible=false;
n05._visible=false;
n15._visible=false;
n25._visible=false;
n04._visible=false;
n14._visible=false;
n24._visible=false;
n03._visible=false;
n13._visible=false;
n23._visible=false;
n02._visible=false;
n12._visible=false;
n22._visible=false;
n01._visible=false;
n11._visible=false;
n21._visible=false;
n00._visible=false;
n10._visible=false;
n20._visible=false;
/*creo l'arrai per tramettere i dati casuali
e rendere visibile tre numeri che dovro poi inserire
nel campo codice di sicurezza
*/
/*creo la variabile per trasmettere*/
var numero:Array= new Array();
var invia:LoadVars = new LoadVars();
/*ciclo i tre volori dell'arrai
e rendo visibile tre movie, uno per posizione
*/

for(var k=0; k<3 ;k++){
/*genero il numero casuale e lo inserisco in numero[k]*/
numero[k]=casuale_0_9();
/*trace (k);*/
/*trace (casuale_0_9());*/
/*trace (numero[k]);*/
switch(k){
case 0:
invia.uno=numero[k];
switch(numero[k]){
case 0:
n00._visible=true;
break;
case 1:
n01._visible=true;
break;
case 2:
n02._visible=true;
break;
case 3:
n03._visible=true;
break;
case 4:
n04._visible=true;
break;
case 5:
n05._visible=true;
break;
case 6:
n06._visible=true;
break;
case 7:
n07._visible=true;
break;
case 8:
n08._visible=true;
break;
case 9:
n09._visible=true;
break;
}/*fine swich 0numero[k]*/
break;
case 1:
invia.due=numero[k];
switch(numero[k]){
case 0:
n10._visible=true;
break;
case 1:
n11._visible=true;
break;
case 2:
n12._visible=true;
break;
case 3:
n13._visible=true;
break;
case 4:
n14._visible=true;
break;
case 5:
n15._visible=true;
break;
case 6:
n16._visible=true;
break;
case 7:
n17._visible=true;
break;
case 8:
n18._visible=true;
break;
case 9:
n19._visible=true;
break;
}/*fine swich 1numero[k]*/
break;
case 2:
invia.due=numero[k];
switch(numero[k]){
case 0:
n20._visible=true;
break;
case 1:
n21._visible=true;
break;
case 2:
n22._visible=true;
break;
case 3:
n23._visible=true;
break;
case 4:
n24._visible=true;
break;
case 5:
n25._visible=true;
break;
case 6:
n26._visible=true;
break;
case 7:
n27._visible=true;
break;
case 8:
n28._visible=true;
break;
case 9:
n29._visible=true;
break;
}/*fine swiych 2numero[k]*/
break;
}/*fine switch k*/
}/*fine for k*/
/*trasmetto i dati alla pagina php
da modificare eventualmente il nome della pagina
da verificare se meglio GET
*/
invia.sendAndLoad("prova_02.php", invia, "POST");
/*????perche non trasmette?????*/


codice php di pag prova_02.php

PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Documento senza titolo</title>
</head>

<body>
<?php
if(isset($_POST['inviaForm']) && $_POST['inviaForm']=="invia"){
	echo "<br>";
	//$codice=$_POST['codice'];//per confronto
	$uno=$_POST['uno'];
	var_dump($_POST['uno']);
	echo "<br>uno: ".$uno."<br>";
	echo "<br>uno: ".$uno."<br>";
	$due=$_POST['due'];
	var_dump($_POST['due']);
	echo "<br>due: ".$due."<br>";
	$tre=$_POST['tre'];
	var_dump($_POST['tre']);
	echo "<br>tre:".$tre."<br>";
	echo"<br>";
}
?>
<br>
<br>
<form action="<?php $_SERVER['PHP_SELF'] ?>" method="post">
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0" width="60" height="20">
  <param name="movie" value="capta-02.swf">
  <param name=quality value=high>
  <embed src="capta-02.swf" quality=high pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash" type="application/x-shockwave-flash" width="60" height="20"></embed>
</object>
<input name="codice" type="text" id="codice" size="3" maxlength="3">
<br>
<input name="inviaForm" type="submit" id="inviaForm" value="invia">
</form>
</body>
</html>


output(?????)

NULL
uno:
NULL
due:
NULL
tre:
 
ciao

io li odio perchè le lettere o i numeri sono spessisimo incomprensibili!

il problema non è captcha (tra l'altro se riesco a farlo funziare non vedrai priù i numeri difficili da leggere)
il problema è in

invia.sendAndLoad("prova_02.php", invia, "POST");

non riesco a trasemttere i valori alla pagina php e non capisco perchè
facendo il trace i valori ci sono ed il trace di sendAndLoad mi da true
ma anche se è true il risultato è false
 
ciao
crede che sia dovuto alla trasmissione, non a php in quanto altri dati il php me li riceve.
il problema è che forse ho intrapreso una strada impervia, non sono molto ferrato in as:o

comunque :angel:posto un altro "piccolo" problemino che ho con as, credo(??) che sia più semplice anche perchè non c'entra nulla con php
 
...forse senza 'post'
dai un'occhiata all'help di flash (digito nella ricerca sendAndLoad)
Apprendimento di ActionScript 2.0 in Adobe Flash
Operazioni con i dati esterni > Uso di HTTP per la connessione a script sul lato server > Uso della classe LoadVars

e dintorni....
forse ti può aiutare.
 

Discussioni simili