Crear dígitos verificadores
![]() ![]() ![]() |
Crear dígitos verificadores
| SuNcO |
Dec 18 2006, 06:30 AM
Post
#1
|
|
Administrador ![]() ![]() ![]() ![]() ![]() Group: Admin Posts: 645 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...
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 |
![]() ![]() ![]() |
| Lo-Fi Version | Time is now: 11th March 2010 - 08:25 AM |