Ver Mensaje Individual
  #8 (permalink)  
Antiguo 29/08/2009, 10:35
Avatar de juaniquillo
juaniquillo
Colaborador
 
Fecha de Ingreso: noviembre-2005
Ubicación: San Juan, Puerto Rico
Mensajes: 5.745
Antigüedad: 19 años
Puntos: 281
Respuesta: Olvide contraseña con Dreamweaver

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
  1. //si el email existe en la base dedatos
  2. if($totalRows_Recordset1 > 0){
  3.    
  4.     $insertSQL = sprintf("INSERT INTO recordar_pass (email_recordar_pass) VALUES (%s)",
  5.         GetSQLValueString($_POST['email'], "text"));
  6.  
  7.     mysql_select_db($database_conn_pruebas_local, $conn_pruebas_local);
  8.     $Result1 = mysql_query($insertSQL, $conn_pruebas_local) or die(mysql_error());
  9. }
  10. //si no existe
  11. 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:

Código php:
Ver original
  1. $numero_secreto = rand(10000, 90000);

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í:

Código php:
Ver original
  1. $timestamp = time() + (7 * 24 * 60 * 60);

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() :

Código php:
Ver original
  1. $fecha = date('Y-m-d');


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
  1. //si se envia el formulario
  2. if(!empty($_POST['email'])){
  3.     //se regoge la variable POST
  4.     $colname_Recordset1 = "-1";
  5.     if (isset($_POST['email'])) {
  6.       $colname_Recordset1 = (get_magic_quotes_gpc()) ? $_POST['email'] : addslashes($_POST['email']);
  7.     }
  8.     //recorset
  9.     mysql_select_db($database_conn_pruebas_local, $conn_pruebas_local);
  10.     $query_Recordset1 = sprintf("SELECT * FROM usuarios WHERE email = %s", GetSQLValueString($colname_Recordset1, "text"));
  11.     $Recordset1 = mysql_query($query_Recordset1, $conn_pruebas_local) or die(mysql_error());
  12.     $row_Recordset1 = mysql_fetch_assoc($Recordset1);
  13.     $totalRows_Recordset1 = mysql_num_rows($Recordset1);
  14.    
  15.     //si el email existe en la base dedatos
  16.     if($totalRows_Recordset1 > 0){
  17.         //numero secreto
  18.         $numero_secreto = rand(10000, 90000);
  19.         //timestamp
  20.         $timestamp = time() + (7 * 24 * 60 * 60);
  21.         //fecha
  22.         $fecha = date('Y-m-d');
  23.         //insert a la tabla del numero secreto
  24.         $insertSQL = sprintf("INSERT INTO recordar_pass (email_recordar_pass,codigo_recordar_pass,timestamp_recordar_pass,fecha_recordar_pass) VALUES (%s,%s,%s,%s)",
  25.             GetSQLValueString($_POST['email'], "text"),
  26.             GetSQLValueString($numero_secreto, "int"),
  27.             GetSQLValueString($timestamp, "int"),
  28.             GetSQLValueString($fecha, "date"));
  29.  
  30.         mysql_select_db($database_conn_pruebas_local, $conn_pruebas_local);
  31.         $Result1 = mysql_query($insertSQL, $conn_pruebas_local) or die(mysql_error());
  32.     }
  33.     //si no existe
  34.     else $error = 'Este email no existe en la base de datos';
  35. }
  36. //si el formulario esta vacio
  37. else $error = 'Por favor escriba su email';

El error se muestra encima del formulario:

Código php:
Ver original
  1. <?php
  2. //si hay error se muestra
  3. if(!empty($error)) echo $error;
  4. ?>
  5. <form id="form1" name="form1" method="POST" action="<?php echo $editFormAction; ?>">
  6.   <table border="0" cellpadding="5" cellspacing="1" bgcolor="#999999">
  7.     <tr>
  8.       <td bgcolor="#CCCCCC">email</td>
  9.       <td bgcolor="#FFFFFF"><input type="text" name="email" id="email" /></td>
  10.     </tr>
  11.     <tr>
  12.       <td colspan="2" bgcolor="#FFFFFF"><div align="center">
  13.         <input type="submit" name="button" id="button" value="enviar" />
  14.       </div></td>
  15.     </tr>
  16.   </table>
  17.   </form>

Lo próximo es enviar el email, pero primero verifica que todo esté funcionando hasta aquí.
__________________
Por fin.. tengo algo parecido a un blog
Y por lo visto ya estoy escribiendo...