Alguien encuentra alguna falla en este código?
Es un anti-bot para formularios.
Código PHP:
<?php
session_start();
Header("Content-type: image/png");
$leter[]="A";
$leter[]="B";
$leter[]="C";
$leter[]="D";
$leter[]="E";
$leter[]="F";
$leter[]="G";
$leter[]="H";
$leter[]="J";
$leter[]="K";
$leter[]="L";
$leter[]="M";
$leter[]="N";
$leter[]="P";
$leter[]="Q";
$leter[]="R";
$leter[]="S";
$leter[]="T";
$leter[]="U";
$leter[]="V";
$leter[]="W";
$leter[]="X";
$leter[]="Y";
$leter[]="Z";
$xleter=rand(0,23);
$numlet=rand(0,1);
if($numlet){
$t1=$leter[$xleter];
}else{
$t1=rand(2,9);
}
$xleter=rand(0,23);
$numlet=rand(0,1);
if($numlet){
$t2=$leter[$xleter];
}else{
$t2=rand(2,9);
}
$xleter=rand(0,23);
$numlet=rand(0,1);
if($numlet){
$t3=$leter[$xleter];
}else{
$t3=rand(2,9);
}
$xleter=rand(0,23);
$numlet=rand(0,1);
if($numlet){
$t4=$leter[$xleter];
}else{
$t4=rand(2,9);
}
if(empty($HTTP_SESSION_VARS['text'])){
$text=$t1."---".$t2."---".$t3."---".$t4;
$HTTP_SESSION_VARS[text]=$text;
}else{
/////////
$nueva=explode("---",$HTTP_SESSION_VARS[text]);
$t1=$nueva[0];
$t2=$nueva[1];
$t3=$nueva[2];
$t4=$nueva[3];
}
/////////
$image = ImageCreate(150, 60);
$x=1;
$stw=1;
$sth=1;
$red = ImageColorAllocate($image, 255, 0,0);
$r=rand(1,6);
do{
if($r==1){$bluealp = imagecolorallocatealpha ( $image, $x,20 , 60, 50 );};
if($r==2){$bluealp = imagecolorallocatealpha ( $image, 20, $x, 60, 50 );};
if($r==3){$bluealp = imagecolorallocatealpha ( $image, 20, 60, $x, 50 );};
if($r==4){$bluealp = imagecolorallocatealpha ( $image, $x, $x, $x, 50 );};
if($r==5){$bluealp = imagecolorallocatealpha ( $image, $x, 60, $x, 50 );};
if($r==6){$bluealp = imagecolorallocatealpha ( $image, 20, $x, $x, 50 );};
imageellipse ( $image, 75, 30, $stw, $sth, $bluealp);
$x++;
$stw++;
$sth++;
$x++;
$stw++;
$sth++;
$x++;
$stw++;
$sth++;
}while($stw<=200);
$bluealp = imagecolorallocatealpha ( $image, 0, 0, 0, 0 );
ImageRectangle($image, 0, 0, 149, 59, $bluealp);
ImageRectangle($image, 1, 1, 148, 58, $bluealp);
ImageRectangle($image, 2, 2, 147, 57, $bluealp);
$bluealp = imagecolorallocatealpha ( $image, 0, 0, 0, 0 );
$pos=rand(0,1);
$ang=rand(0,20);
if($pos){
$angle=0+$ang;
}else{
$angle=0-$ang;
}
imagettftext($image, 34, $angle, 10, 46, $bluealp, "gilr.ttf", $t1);
$pos=rand(0,1);
$ang=rand(0,20);
if($pos){
$angle=0+$ang;
}else{
$angle=0-$ang;
}
imagettftext($image, 34, $angle, 45, 46, $bluealp, "gilr.ttf", $t2);
$pos=rand(0,1);
$ang=rand(0,20);
if($pos){
$angle=0+$ang;
}else{
$angle=0-$ang;
}
imagettftext($image, 34, $angle, 80, 46, $bluealp, "gilr.ttf", $t3);
$pos=rand(0,1);
$ang=rand(0,20);
if($pos){
$angle=0+$ang;
}else{
$angle=0-$ang;
}
imagettftext($image, 34, $angle, 115, 46, $bluealp, "gilr.ttf", $t4);
ImagePng($image);
ImageDestory($image);
?>
Funciona:
http://bayresart.com/imgs/ivf.php [SOLUCIONADO]
Para verlo en funcionamiento.
Antes del formulario.
Código PHP:
$text = $HTTP_SESSION_VARS[text];
$nueva = explode("---", $text);
$varis .= $nueva[0];
$varis .= $nueva[1];
$varis .= $nueva[2];
$varis .= $nueva[3];
//ereg_replace();
$varis=strtolower($varis);
$imgs=strtolower($imgs);
if ($imgs == $varis)
{
$HTTP_SESSION_VARS[humano] = "HUMANO";
}
Ahora hay que ver si es humano enviar y sino mensaje de error.
Desde ya gracias por revisar.