Por fin volví. Seguimos con esto.
Ahora que está el esqueleto mas o menos de la aplicación movemos el insert dentro del 'if'
Código php:
Ver original//si el email existe en la base dedatos
if($totalRows_Recordset1 > 0){
$insertSQL = sprintf("INSERT INTO recordar_pass (email_recordar_pass) VALUES (%s)", GetSQLValueString($_POST['email'], "text"));
}
//si no existe
else echo $error = 'Este email no existe en la base de datos';
Ahora vamos a usar la función
rand() para crear el número que vamos a asociar al usuario. rand() lo que hace es crear un número aleatorio. Lo vamos a crear de echo 10000 a 90000 para siempre tener 5 números. Este número lo guardamos en la variable $numero_secreto:
También usaremos la función
time() la devuelve el 'timestamp unix'. Esto lo usaremos para darle un límite de tiempo a nuestro código secreto. Al time le sumaremos una semana. Esto se hace así:
Así el usuario tendrá una semana para poder cambiar su password. Lo otro que yo recomiendo guardar es la fecha en que se realizo el insert. Eso lo hacemos usando
date() :
Ahora, añadimos las variables al insert. Usamos el sprintf() que ha sido creado por DW. También usaremos la variable $error para para mostrar un error diferente cuando no se haya escrito nada en el encanillado. Hasta Hasta ahora nuestro script se ve así:
Código php:
Ver original//si se envia el formulario
if(!empty($_POST['email'])){ //se regoge la variable POST
$colname_Recordset1 = "-1";
if (isset($_POST['email'])) { }
//recorset
$query_Recordset1 = sprintf("SELECT * FROM usuarios WHERE email = %s", GetSQLValueString
($colname_Recordset1, "text"));
//si el email existe en la base dedatos
if($totalRows_Recordset1 > 0){
//numero secreto
$numero_secreto = rand(10000, 90000); //timestamp
$timestamp = time() + (7 * 24 * 60 * 60); //fecha
//insert a la tabla del numero secreto
$insertSQL = sprintf("INSERT INTO recordar_pass (email_recordar_pass,codigo_recordar_pass,timestamp_recordar_pass,fecha_recordar_pass) VALUES (%s,%s,%s,%s)", GetSQLValueString($_POST['email'], "text"),
GetSQLValueString($numero_secreto, "int"),
GetSQLValueString($timestamp, "int"),
GetSQLValueString($fecha, "date"));
}
//si no existe
else $error = 'Este email no existe en la base de datos';
}
//si el formulario esta vacio
else $error = 'Por favor escriba su email';
El error se muestra encima del formulario:
Código php:
Ver original<?php
//si hay error se muestra
if(!empty($error)) echo $error; ?>
<form id="form1" name="form1" method="POST" action="<?php echo $editFormAction; ?>">
<table border="0" cellpadding="5" cellspacing="1" bgcolor="#999999">
<tr>
<td bgcolor="#CCCCCC">email</td>
<td bgcolor="#FFFFFF"><input type="text" name="email" id="email" /></td>
</tr>
<tr>
<td colspan="2" bgcolor="#FFFFFF"><div align="center">
<input type="submit" name="button" id="button" value="enviar" />
</div></td>
</tr>
</table>
</form>
Lo próximo es enviar el email, pero primero verifica que todo esté funcionando hasta aquí.