hay varios tipos, uno es este:
$clave = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890";
$codigo = "";
for($i=0;$i<20;$i++) {
$codigo .= substr($clave,rand(0,62),1);
}
//esto te da como resultado un codigo de 20 caracteres aleatorios que es casi imposible de que se repita para otro usuario, aunque podes hacer una comprobacion para ver si esta repetido o agregarle la fecha y hora para que si o si sea unico
//este codigo lo agregas en el campo "confirmado" de la tabla usuario
$sfrom="info@juan-perugia"; //cuenta que envia, podes poner lo que quieras, lo normal es poner tu verdadero email aunque no lo vayas a usar para enviar, si no pones nada, va a mostrar el nombr del servidor creo, y eso queda feo...
$sdestinatario="$email"; //cuenta destino, el email del usuario que se registro
$ssubject="Confirmacion de cuenta"; //subject, lo que se mostrra en el subject del mensaje recibido por el usuario
$shtml="Gracias por registrarte en mi sitio, solo te resta confirmar tu cuenta para comenzar a publicar tus avisos, para ello solo tienes que seguir el siguiente enlace y seguir las instrucciones http://www.tu-sitio.com/confirmacion.php?activacion=$codigo , gracias."; //mensaje con el enlace al archivo de confirmacion, note: el enlace lleva el codigo unico de ese usuario
$sheader="From:".$sfrom."\nReply-To:".$sfrom."\n";
$sheader=$sheader."X-Mailer:PHP/".phpversion()."\n";
$sheader=$sheader."Mime-Version: 1.0\n";
$sheader=$sheader."Content-Type: text/html";
mail($sdestinatario,$ssubject,$shtml,$sheader); // y esto manda el mail
luego en el archivo confirmacion tienes que tomar el valor de la variable confirmacion por _GET['activacion'] y cambiar el valor de confirmado al usuario que tenga ese codigo.
acordate que primero tenes que crear una campo "confirmado" y "codigo" en la tabla "usuarios" el confirmado tiene que tener valor 0 por defecto y cambiar a 1 si la confirmacion fue correcta, y obviamente no permitir que nadie se logee si su valor en "confirmado" es 0