Me enseñais un código para el típico Olvidaste la contraseña?

Pues bien, tengo la página casi terminada: http://buscohueco.host22.com/index.php , pero me faltan detalles como el típico Olvidaste la contraseña. Había pensado que saltase un cuadro pidiendote tu email de registro, con el cual comprobariamos si existe y le mandaríamos la clave registrada a su mismo mail, y le ofreceríamos cambiarlo si es complicado para el usuario recordarla. Pero claro soy novato en la programación web..... y tal vez no sea la mejor forma. Alguien ha hecho algo parecido para su página?! le agradeceria ejemplos de código, por favor =(
Les dejo la estructura de la tabla usuarios.

CREATE TABLE `usuarios` (
`ID` smallint(4) unsigned zerofill NOT NULL AUTO_INCREMENT,
`NOMBRE` varchar(20) COLLATE utf8mb3_spanish_ci NOT NULL,
`APELLIDO` varchar(30) COLLATE utf8mb3_spanish_ci DEFAULT NULL,
`EMAIL` varchar(30) COLLATE utf8mb3_spanish_ci NOT NULL,
`PASS` varchar(20) COLLATE utf8mb3_spanish_ci NOT NULL,
`CODIGO` varchar(5) COLLATE utf8mb3_spanish_ci DEFAULT NULL,
`CIUDAD` varchar(20) COLLATE utf8mb3_spanish_ci NOT NULL,
`TELEFONO` varchar(12) COLLATE utf8mb3_spanish_ci DEFAULT NULL,
`PREFIJO` varchar(5) COLLATE utf8mb3_spanish_ci DEFAULT NULL,
`CONOCISTE` tinyint(4) unsigned DEFAULT NULL,
`ESTADO` tinyint(1) unsigned NOT NULL DEFAULT '0',
`CODIGO_VERIF` varchar(255) COLLATE utf8mb3_spanish_ci NOT NULL,
`FECHA_REG_U` datetime NOT NULL,
`IMAGEN` varchar(255) COLLATE utf8mb3_spanish_ci DEFAULT NULL,
PRIMARY KEY (`ID`),
UNIQUE KEY `EMAIL` (`EMAIL`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_spanish_ci AUTO_INCREMENT=46 ;

y el codigo con el cuadro para el login:
<table class="login" width="350" height="45" border="0" cellspacing="0" cellpadding="0">
				      <tr>
				        <td width="145" height="15" align="center"><b>Usuario</b></td>
				        <td width="145" align="center"><b>Contraseña</b></td>
                        <td width="60"></td>
			          </tr>

				      <tr>
				        <td  height="15">
			              <div align="center">
			                <input style="width:140px" type="text" name="EMAIL" value="Introduzca su email..." class="campogris" onBlur="if(this.value == '')  { this.value = 'Introduzca su email...'; this.className='campogris'; }" onClick="if(this.value == 'Introduzca su email...') { this.className='olvidaste'; this.value='';} else this.className='olvidaste'" >
		                  </div>
       			        </td>
				        <td>
			              <div align="center">
			                <input style="width:140px" type="password" name="PASS" value="************" class="campogris" onBlur="if(this.value == '')  { this.value = '************'; this.className='campogris'; }" onClick="if(this.value == '************') { this.className='camponegro'; this.value='';} else this.className='camponegro'; this.focus()">
		                  </div>
				        </td>
						<td>                        
                            <div align="center">
                                     <input type="submit" name="Entrar" id="Entrar" value="Enviar">
                             </div>
                         </td>
			          </tr>
				      
                      <tr>
   				        <td height="15">
                        	<div align="center" id="olvidaste"><a href="registro.php"><strong>¡Regístrese ahora!</strong></a></div>
                        </td>
                        <td>
                        	<div align="center" id="olvidaste"><a href="registro.php"><strong>¿Olvidaste la Contraseña?</strong></a></div>
				        <td></td>
			          </tr>
			        </table>

Muchas gracias por su ayuda!
ammm deja te ayudo con esto.
Lamentablemente en este instante no puedo debido a que me encuentro en la universidad espera hasta la noche (en mi país son las 10:30 am) debido a que aquí no te puedo ayudar bien.
ok primero veamos que quieres y luego pasamos para los códigos ok
hay 3 maneras de hacer esto una mas complicada que la otra.


1. la mas sencilla, consiste en realizar un sencillo escript el cual al darle en olvidar la contraseña, pongas tu usuario y este te envié la contraseña al correo que tengas en la cuenta.
ventajas: muy sencillo, tanto para el usuario como para el programador.
Desventajas: muy mala seguridad en cuanto a la BD debido a que la contraseña no puede ser encriptada.
2. la intermedia, consiste en poner una pregunta de seguridad la cual la respuesta y la pregunta pueden ser escojidas por el usuario previamente y al acertarlas te permite crear una contraseña nueva.
ventajas: sencillo de programar.
Desventajas: muy complicado o tedioso para algunos usuarios.
3.la mas cmplicada y funcional: consiste en enviar un correo de confirmación con una clave al asar, pre echa por el sistema, la cual al ingresar te permita escojer una contraseña nueva.
ventajas, sencillo para el usuario.
Desventajas: tediosa de programar.

como puedes notar no hay nada pre echo pero estas son las 3 maneras que conozco de realizar lo que buscas.
Vale, la contraseña está encriptada... la tercera opción es la que realmente buscaba. Ya tengo un campo llama 'Verificacion' el cual es un codigo aleatorio que se crea al registrarse el usuario. Lo uso para confirmar el registro. Imagino que con esta información verás mas claro lo que necesito.

Graciaaaaas!
pues aun mas sencillo solo envíales por correo un mensaje con un link como este www.tupagina.com/contraseña.php?id=asdr576448fe
el cual el id es un código de confirmación de que el usuario es el verdadero, por ejemplo vuelve a enviar el código de confirmación anterior.
si es correcto te muestra un panel para ingresar la nueva contraseña, si no te regresa al index.

aparte para enviar el correo solo de vez crear un form en el cual pida tu correo o un nick y luego confirme con la bd y te envié el correo al email que tienes en la bd

(esto solo es la maquetacion intenta hacer algo con esta maqueta cualquier atolladero postealo y te lo corrijo)
PD: por que no te doy los códigos y ya, pues muy simple la idea es que aprendas ha hacerlo no que otros te lo hagan por ti xD suerte XD
totalmente de acuerdo!! jejejje en breves tendras respuestas. Si tengo tiempo mañana mismo saco media horita y lo hago!

muchas gracias
Tengo varias dudas Codomodragon,

La primera es en cuanto al form para solicitar el correo del usuario dnd enviarle este link: buscohueco.es/nuevopass.php?idu=".$idu."&codigo=".$codigo_verificacion

Cual es la tendencia? que aparezca un formulario en la parte central de la página explicando la situación... Si ha olvidado la contraseña introduzca su email y le enviaremos un correo dsd el que podra cambiar su contraseña, etc etc...
O que salte una ventanita para esta funcion. o incluso en el mismo sitio de la cabecera donde esta el form para loguearse? nose... comentame un poco tu idea

y aqui te dejo el codigo del archivo cambiopass.php que actuaría tras pulsar el usuario dicho enlace desde su correo:
<?php
include_once('config1.php');

if(isset($_GET['codigo']) and isset($_GET['idu']))
{
?>	<form name="modificar" method="post" action="/*Necesito action? ya que la accion se lleva a cabo en el mismo archivo..*/" >
     <table class="table" width="400" border="1" cellpadding="0" cellspacing="0">
        <tr>
			<td class="td">Introduzca nueva Contraseña</td>
			<td><input size="15" name="nueva1" type="password" required></td>
		</tr>
        <tr>
			<td class="td">Vuelva a introducir nueva Contraseña</td>
			<td><input size="15" name="nueva2" type="password" required></td>
		</tr>
		<tr>
			<td class="td">&nbsp;</td>
			<td align="right"><input type="submit" name="cambiopass" value="Cambiar Contraseña"></td>
		</tr>
	 </table>
	 </form>
<?php
	$query = mysql_query("SELECT * FROM usuarios WHERE ID = '".$_GET['idu']."' AND CODIGO_VERIF = '".$_GET['codigo']."' LIMIT 1");
	if(mysql_num_rows($query) > 0)
	{
		if(isset($_POST['cambiopass']))
		{
			if( $_POST['nueva1']==$_POST['nueva2'])
			{
				$sql = "UPDATE usuarios SET PASS = '" . $_POST['nueva1'] . "' WHERE ID = '" . $_SESSION['idu'] . "'" ;
				$res = mysql_query($sql) or die(mysql_error());
				$_SESSION['pass']=$_POST['nueva1'];
				
				die("<script>alert('Cambio contraseña confirmada.'); parent.location.href='miperfil.php'</script>");
				mysql_close($cnx);// Es necesario?
				exit;
			}else
				echo("<script>alert('Las nuevas contraseñas introducidas son diferentes.');parent.location.href='index.php'</script>"); /*Aqui me gustaria tener la posibilidad de que volviese a escribir las contraseñas, ya que si se ha equivocado no podria volver a cambiarla no? */
	
		}
	}
	else
	{
		header("Location: index.php");
		exit;	
	}	
}
?>


Bueno espero tu respuesta compañero! y gracias
Bien, he depurado un poco el código pues he visto varios fallos.

Espero puedas comentarme que piensas de este codigo:

olvidopass.php
<?php
include_once('config1.php');

if(isset($_GET['codigo']) and isset($_GET['idu']))
{ 
	$query = mysql_query("SELECT * FROM usuarios WHERE ID = '".$_GET['idu']."' AND CODIGO_VERIF = '".$_GET['codigo']."' LIMIT 1");
	if(mysql_num_rows($query)>0)
	{		
		$datos= mysql_fetch_assoc($query);
		
		$_SESSION['idu'] = $_GET['idu'];
		$_SESSION['email'] = $datos['EMAIL'];
		$_SESSION['pass'] = $datos['PASS'];
		
		mysql_close($cnx); // Es necesario?

	}else	
		die('<script>alert("Este usuario no existe."); parent.location.href= "index.php"</script>');
	
}
?>	<form name="modificar" method="post" action="olvidopass-action.php"  target="a">
     <table class="table" width="400" border="1" cellpadding="0" cellspacing="0">
        <tr>
			<td class="td">Introduzca nueva Contraseña</td>
			<td><input size="15" name="nueva1" type="password" required></td>
		</tr>
        <tr>
			<td class="td">Vuelva a introducir nueva Contraseña</td>
			<td><input size="15" name="nueva2" type="password" required></td>
		</tr>
		<tr>
			<td class="td">&nbsp;</td>
			<td align="right"><input type="submit" name="cambiopass" value="Cambiar Contraseña"></td>
		</tr>
	 </table>
	 </form>
<iframe name="a" width="0" height="0" frameborder="0"></iframe>
	

olvidopass-action.php
<?php
		if(isset($_POST['cambiopass']))
		{
			if( $_POST['nueva1']==$_POST['nueva2'])
			{
				$sql = "UPDATE usuarios SET PASS = '" . $_POST['nueva1'] . "' WHERE ID = '" . $_SESSION['idu'] . "'" ;
				$res = mysql_query($sql) or die(mysql_error());
				$_SESSION['pass']=$_POST['nueva1'];
				
				die("<script>alert('Cambio contraseña confirmada.'); parent.location.href='miperfil.php'</script>");
				mysql_close($cnx);// Es necesario?
				exit;
			}else
				echo("<script>alert('Las nuevas contraseñas introducidas son diferentes.');parent.location.href='index.php'</script>"); 
				/*Tras salir este alert, daria la opcion al usuario de meter de nuevo los pass?*/
		}
?>

Espero tu respuesta =) graciasss
amm no entiendo los códigos .-., vamos por partes cual es el inicio, osea cuando el usuario le da a olvido la contraseña para poner el correo cual es el código?
después el código para pagina que verifica los datos y le da la info de registro .-.
El codigo de cuando pulsa el link Olvidaste contraseña aun no lo tengo! Pregunté anteriormente:

"en cuanto al form para solicitar el correo del usuario dnd enviarle este link: www.buscohueco.es/nuevopass.php?idu=".$idu."&codigo=".$codigo_verificacion

Cual es la tendencia? que aparezca un formulario en la parte central de la página solicitando el correo electronico...Pej: Si ha olvidado la contraseña introduzca su email y le enviaremos un correo dsd el que podra cambiar su contraseña, etc etc...
O que salte una ventanita para esta funcion. O incluso en el mismo sitio de la cabecera donde esta el form para loguearse? nose... comentame un poco tu idea"

Te he puesto el código de lo que ocurriria tras pulsar el enlace recibido en el correo.
amm que te mande a una pagina aperte que aga todo el proseso, osea que al pulsar el boton te envie a la pagina recuperarpass.php en ella te pregunte en el centro de la pagina tu correo y luego al verificar que el correo exista en la bd te envie un correo con el link tupagina.com/recuperarpass.php?PW=156asarsfdrwasd3d6
en el cual pw sea un codigo emcriptado en md5 o otro metodo de comprecion que sea = al md5 de la antigua contraseña (osea le envias la vieja contraseña encriptada al correo), luego el archivo verifica que pw sea = a su contrasela si es verdad te debuelve un cyuadro de formulario con 2 casillas (un simple formulario para la contraseña) si coinciden graba la contraseña en md5