IPB

Welcome Guest ( Log In | Register )

 
Reply to this topicStart new topicStart Poll

Outline · [ Standard ] · Linear+

> Crear dígitos verificadores

SuNcO
post Dec 18 2006, 06:30 AM
Post #1


Administrador
*****

Group: Admin
Posts: 624
Joined: 21-October 05
Member No.: 1



Por dígitos verificadores me refiero a la imagen que sale cuando te vas a registrar en algún Foro, o por ejemplo aquí en CodigoPlus cuando escribes algún comentario en alguna Noticia o cuando te vas a crear una cuenta en Hotmail etc...

Attached Image Attached Image

De que me sirve eso ? Sirve de mucho, ya que algunas personas crean bots que automatizan el registro de usuarios y así solo hacen spamm. De hecho hace poco tuvimos ese problema aquí con el Foro y luego en los Comentarios de las Noticias en la cual se puso este tipo de protección y el que ya traía el Foro también fue cambiado (ya que era vulnerado fácilmente) y el asunto se arregló

Que ocupo para crear estos dígitos ? Tener montado algún servidor de páginas web que soporte GD, en este caso tenemos Apache y Php con GD activado

Manos a la obra

1 - Iniciar las sessiones

session_start();

2 - Crear array con caracteres que se pondrán en el código

$letras = Array("A","B","7","D","9","F","H","G","2","K","3","L","M","N","P","4","R","S","T","U","6","X","Y","5","C","8","E");

3 - Elegir un código (de 7 caracteres) al azar de acuerdo al array

$codigo = $letras[rand(0,26)].$letras[rand(0,26)].$letras[rand(0,26)].$letras[rand(0,26)].$letras[rand(0,26)].$letras[rand(0,26)].$letras[rand(0,26)];

4 - Crear la session

$_SESSION["codigo"] = $codigo;

Ahora ocupamos mostrar ese código en una imagen. Para eso ponemos esto :

<img src="seguridad.php" align="absmiddle">

Como vemos, ocupamos el archivo seguridad.php que lleva lo siguiente :


QUOTE
<?
// Iniciar las sessiones
session_start();

// Indicar que la salidas es un archivo JPG
Header("Content-type: image/jpeg");

// Crear la imagen de 70x20
$im = ImageCreate(70, 20);

// Crear colores
$red = ImageColorAllocate($im, 255, 0, 0);
$white = ImageColorAllocate($im, 255, 255, 255);
$blue = ImageColorAllocate($im, 0, 0, 255);
$black = ImageColorAllocate($im, 0, 0, 0);

// Llenar la imagen con un cuadro blanco
ImageFill($im, 0, 0, $white);

// Leer la session donde tenemos el código generado
$codigo = $_SESSION["codigo"];

// Pintar 40 pixeles en diferentes posiciones
for ($i = 1; $i < 40; $i ++) {
  ImageSetPixel($im, rand(1,70), rand(0,20), $red);
}

// Escribir el codigo con color negro en la posición 7,3 y con tamaño de letra 4
ImageString($im, 4, 7, 3, $codigo, $black);

// Darle salida a la imagen
ImageJpeg($im);
?>


Ok, para utilizar el código lo que hay que hacer es crear un formulario donde tengamos un <input type="text"> y con nombre "clave" (o el nombre que gustes) el cual va a ser comparado con $_SESSION["codigo"]. Si no es el código correcto se puede crear otro código al azar
User is offlineProfile CardPM
Go to the top of the page
+Quote Post

Reply to this topicTopic OptionsStart new topic
1 User(s) are reading this topic (1 Guests and 0 Anonymous Users)
0 Members:
 

Lo-Fi Version Time is now: 22nd November 2008 - 03:43 AM