Añadido el 07/01/2007
Una de las consultas que mas nos habeis hecho es cómo generamos la imagen donde mostramos el codigo de seguridad para añadir webs al directorio navegalis.
El codigo es algo pesado, y por eso haremos una versión mas "ligera" para que os sea sencillo de entender y adaptar a vuestro web.
En primer lugar, será necesario generar un numero aleatorio, que será el codigo de seguridad, nosotros para ello usamos un script que da aleatoriedad a cada uno de los números del codigo, pero no es necesario.
Obtendremos el número aleatorio de la siguiente forma:
<?
$numero_aleatorio = rand(1000,9999);
?>
Si lo deseamos, en vez de numeros podemos usar letras... o ambas. Se podría hacer de la siguiente forma:
<?
$alfabeto = array("a","b","c");
$secuencia = array ("1","2","3");
$generador = rand(1,3);
$letra_aleatorio = $alfabeto<$generador>;
?>
Sería un ejemplo simplificado de como hacer lo mismo con letras, está claro que solo es una idea sencilla de por donde van los tiros, ya que $letra_aleatoria solo te devuleve una letra, por lo que tendras que crear un bucle que devuelva tantas como quieras.
Ahora debemos retroceder en el codigo fuente de nuestra página, y en la primera línea, debemos inicializar sesión:
<?
session_start();
?>
Y una vez inicializada, generamos el codigo aleatorio y lo registramos en la sesión, todo ello lo podemos hacer de una vez así:
<?
session_start(); // Iniciamos la sesion
$numero_aleatorio = rand(1000,9999); // Generamos el numero secreto
$_SESSION<codigo> = $numero_aleatorio; // Guardamos el numero secreto en la sesion
?>
Ahora ya tenemos nuestro numero secreto guardado en sesión, ahora solo nos falta imprimirlo para que lo vea el visitante de nuestro web, para ello llamaremos a la imagen de la siguiente forma:
<?
<img src="htttp://www.midominio.com/imagen.php">
?>
Si te fijas, lo que estamos llamando como imagen, es ¡un archivo!. Efectivamente, en ese archivo vamos a generar nuestra imagen php de la siguiente forma:
Archivo imagen.php
<?
session_start();
header ("Content-type: image/png");
$im = @ImageCreate (100, 30);
$color_fondo = ImageColorAllocate ($im, 240, 240, 240);
$color_texto = ImageColorAllocate ($im, 233, 14, 91);
ImageString ($im, 10, 25, 5, $_SESSION<"codigo">, $color_texto);
ImagePng ($im);
?>
Lo que hacemos en este texto, es generar una imagen png con el codigo que hemos guardado en la sesión.
¿Ahora que hacemos?
Pues bien sencillo, creamos un campo de formulario en el que el visitante tenga que escribir el codigo secreto que ve en la imagen php, por ejemplo llamamos a ese campo "confirmacion".
Una vez enviado el formulario con el campo "confirmacion", lo que tenemos que hacer es comprobar que el campo confirmación sea igual a la sesión en la que guardamos el codigo de seguridad.
<?
if($confirmacion == $_SESSION<codigo>)
{
print "Codigo correcto";
}else{
print "error";
}
?>
Realmente es un codigo un poco lioso y engorroso, y os aseguramos que lo hemos simplificado al máximo, prescindiendo de partes mas elaboradas, pero la esencia es esta, y seguro que os será muy útil.