hola estoy tratando de validar email + captcha para recuperar_contraseña de mis usuarios olvidadisos

de esta forma envio la nuevacontraseña al email, previamente valido que el email sea el mismo quel de la basededatos.
ademas de validar el email en el formulario quiero añadir tambien un codigo captcha y preguntar por ambos para recien enviar la contraseña al email del usuario. como hago esto algun archivo parecido para estudiarlo y adaptaarlo al mio

este es el codigo de recuperar_contraseña.php

Código PHP :

<?php
    //include('acceso_db.php'); // incluímos los datos de acceso a la BD
    include("include/conn.inc.php");
    if(isset($_POST['enviar'])) { // comprobamos que se han enviado los datos del formulario
        if(empty($_POST['usuario_nombre'])) {
            echo "<p><center>No ha ingresado el usuario.</p><p> <a href='javascript:history.back();'>Reintentar</a></center></p>";
        }else{
                $usuario_nombre = mysql_real_escape_string($_POST['usuario_nombre']);
                $usuario_nombre = trim($usuario_nombre);
                $sql = mysql_query("SELECT usuario_nombre, usuario_clave, usuario_email FROM usuarios WHERE usuario_nombre='".$usuario_nombre."'",$link) or die(mysql_error()); 
                if(mysql_num_rows($sql)) {
                    $row = mysql_fetch_array($sql);
                    $num_caracteres = "10"; // asignamos el número de caracteres que va a tener la nueva contraseña
                    $nueva_clave = substr(md5(rand()),0,$num_caracteres); // generamos una nueva contraseña de forma aleatoria
                    $usuario_nombre = $row['usuario_nombre'];
                    $usuario_clave = $nueva_clave; // la nueva contraseña que se enviará por correo al usuario
                    $usuario_clave2 = md5($usuario_clave); // encriptamos la nueva contraseña para guardarla en la BD
                    $usuario_email = $row['usuario_email'];
                // actualizamos los datos (contraseña) del usuario que solicitó su contraseña
                    mysql_query("UPDATE usuarios SET usuario_clave='".$usuario_clave2."' WHERE usuario_nombre='".$usuario_nombre."'");
                // Enviamos por email la nueva contraseña
                    $remite_nombre = "Miguelin"; // Tu nombre o el de tu página
                    $remite_email = "[email protected]"; // tu correo
                    $asunto = "Recuperación de contraseña"; // Asunto (se puede cambiar)
                    $mensaje = "Se ha generado una nueva contraseña para el usuario <strong>".$usuario_nombre."</strong>. La nueva contraseña es: <strong>".$usuario_clave."</strong>.";
                    $cabeceras = "From: ".$remite_nombre." <".$remite_email.">\r\n";
                    $cabeceras = $cabeceras."Mime-Version: 1.0\n";
                    $cabeceras = $cabeceras."Content-Type: text/html";
                    $enviar_email = mail($usuario_email,$asunto,$mensaje,$cabeceras);
                        if($enviar_email) {
                            echo "La nueva contraseña ha sido enviada al email asociado al usuario ".$usuario_nombre.".";
                        }else {
                            echo "No se ha podido enviar el email. <a href='javascript:history.back();'>Reintentar</a>";
                        }
                }else{
                    echo "El usuario <strong>".$usuario_nombre."</strong> no está registrado. <a href='javascript:history.back();'>Reintentar</a>";
                }
            }
    }else {
?>

<center>
    <p></p>
    <form action="<?php $_SERVER['PHP_SELF']?>" method="post">
        <label>Usuario:</label><br />
        <p></p>
          <input type="text" name="usuario_nombre" /><br />
        <p></p>
          <input name="action" type="hidden" value="checkdata">
        <p></p>
          <input type="submit" name="enviar" value="Enviar" />
    </form>
</center>
<?php
    }
?>