comment
IRC Chat
play_arrow
Este sitio utiliza cookies propias y de terceros. Si continúa navegando consideramos que acepta el uso de cookies. OK Más Información.

[Tutorial] Cambiar password aleatoriamente y UPDATE a la DB [Xt3mP]

  • 0 Respuestas
  • 977 Vistas

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Xt3mP

  • *
  • Underc0der
  • Mensajes: 432
  • Actividad:
    0%
  • Reputación 0
  • Ellos me están buscando, pero yo los encontraré.
    • MSN Messenger - Xt3mP@h4x0rz.us
    • AOL Instant Messenger - Xt3mP@h4x0rz.us
    • Yahoo Instant Messenger - Xt3mP@h4x0rz.us
    • Ver Perfil
    • Xt3mP
« en: Marzo 19, 2010, 01:21:11 am »
Hola ¿Qué tal? Esto que les mostraré como hacer es para cuando olviden la contraseña en su sistema de usuario puedan recuperarla aleatoriamente, en cambio si la contraseña no está encriptada ó tiene un encriptado two way (en dos sentidos de/codificación) pues no ocuparán esto.

Esto lo hice por que ayer que trabajaba en el MC Habbix v1.0, pues las contraseñas las encripto en sha1, y dije ¿Y si se les olvidan la password? entonces recorde que sha1 y md5 son one way, osea no se podrán hacer a la inversa, así que lo que harémos será:

·Darle un UPDATE a la base de datos con al nueva contraseña.
·Escojer una nueva contraseña.
·Encriptarla nuevamente en sha1.
·Envíarla por correo al usuario.

Comenzarémos por crear nuestra tabla llamada users:
Código: PHP
  1. CREATE TABLE users (
  2. id int(10) auto_increment,
  3. user varchar(255) NOT NULL,
  4. pass varchar(255) NOT NULL,
  5. nick varchar(255) NOT NULL,
  6. habbo varchar(255) NOT NULL,
  7. You are not allowed to view links. Register or Login varchar(255) NOT NULL,
  8. PRIMARY You are not allowed to view links. Register or Login (id)
  9. )
  10.  

Una vez creado esto harémos un archivo PHP llamado recordar.html con 3 casillas de texto de la siguiente forma:
Código: HTML5
  1. <You are not allowed to view links. Register or Login><You are not allowed to view links. Register or Login><You are not allowed to view links. Register or Login>Recordar pass</You are not allowed to view links. Register or Login></You are not allowed to view links. Register or Login><You are not allowed to view links. Register or Login>
  2. <You are not allowed to view links. Register or Login action="recordar.php" method="post">
  3. Usuario:<You are not allowed to view links. Register or Login type="text" id="user" name="user" size="15"><You are not allowed to view links. Register or Login>
  4. Nick:<You are not allowed to view links. Register or Login type="text" id="nick" name="habbo" size="15"><You are not allowed to view links. Register or Login>
  5. Habbo:<You are not allowed to view links. Register or Login type="text" id="habbo" name="nick" size="15"><You are not allowed to view links. Register or Login>
  6. <You are not allowed to view links. Register or Login type="submit" value="Recordar" id="recordar">
  7. </You are not allowed to view links. Register or Login></You are not allowed to view links. Register or Login></You are not allowed to view links. Register or Login>
  8.  

Ya deberíamos tener 3 casillas de texto llamadas de izquierda a derecha: user, nick y habbo.

Procederémos a crear el config.php que es al que le haremos llamado mediante el recordar.php:

Código: PHP
  1. <?php
  2. $dbhost="localhost"; //Host del mysql
  3. $dbuser="USUARIO"; //Usuario del mysql
  4. $dbpass="PASS"; //Password del mysql
  5. $db="BASE DE DATOS"; //Base de datos del mysql
  6. //Nos conectamos y seleccionamos la base de datos del mysql
  7. You are not allowed to view links. Register or Login("$dbhost","$dbuser","$dbpass");
  8. You are not allowed to view links. Register or Login("$db");
  9. ?>
  10.  

Este config.php modifiquen los datos de ingreso si no no les funcionará, procederémos a crear el recordar.php:

Primero comprobarémos el valor de las casillas de texto y le indicamos unas condicionales en dado caso que no tengan valor:
Código: PHP
  1. <?php
  2. if ($_POST['user'] == "" or $_POST['nick'] == "" or $_POST['habbo'] == ""){ // Comprobamos que las casillas de texto no tengan valor.
  3. echo 'Te faltaron rellenar campos.';
  4. echo "<meta http-equiv='Refresh' content='2;url=recordar.html'>"; // Si estan vacias los redireccionamos a recordar.html
  5. }else{
  6. include ('config.php'); // Incluimos la conexion de la base de datos
  7. $user = $_POST['user']; // Obtenemos el valor de la casilla user
  8. $nick = $_POST['nick']; // Obtenemos el valor de la casilla nick
  9. $habbo = $_POST['habbo']; // Obtenemos el valor de la casilla habbo
  10. ?>
  11.  

Despúes comprobamos que los valores de las casillas de texto existen en la base de datos, en la tabla users de la siguiente forma:

Código: PHP
  1. <?php
  2. $usuarios = You are not allowed to view links. Register or Login("SELECT * FROM users WHERE user='$user' and nick='$nick' and habbo='$habbo' ");
  3. ?>
  4.  

Una vez hecho esto, comprobamos que si se llevo a cabo la petición haga el array para generar la password aleatoria:

Código: PHP
  1. <?php
  2. if($user_ok = You are not allowed to view links. Register or Login($usuarios)){
  3. $aleatoria = You are not allowed to view links. Register or Login(1 => 'a83je05', 2 => 'dk59dj3', 3 => 'a0sk3h4', 4 => 'a03jdy7', 5 => 'a904k5t', 6 => 'sj59edh', 7 => '9dj5yas', 8 => '4fdo5ks', 9 => 'sk49dj4', 10 => 'i4k04kd');
  4. $pass = You are not allowed to view links. Register or Login(1,10);
  5. ?>
  6.  

Aquí le metemos arrays a la variable aleatoria con arrays numéricos, ya que el rand solo acepta valores numéricos, por lo tanto el rand escojerá un número del 1 al 10 en este caso, y al momento de llamar al array escojerá un valor aleatorio.
Despúes, encriptarémos la contraseña  y harémos el UPDATE a la base de datos así:

Código: PHP
  1. <?php
  2. $pass_new = You are not allowed to view links. Register or Login($aleatoria[$pass]); //Encriptamos en sha1
  3. $SQL = "UPDATE users SET pass='".$pass_new."' WHERE id='".$user_ok['id']."'"; // Hacemos el UPDATE
  4. You are not allowed to view links. Register or Login($SQL);
  5. ?>
  6.  

Aquí encriptamos la contraseña en sha1 y hacemos el update sustituyendo el valor del campo pass original por el de la contraseña aleatoria encriptada en sha1, $user_ok['id'] tiene el valor del ID de fila de los datos que ingresamos anteriormente, en este caso los de la casilal de texto.

Ahora harémos una carta donde tendrá la nueva contraseña así y le pondrémos los headers del formáto de envío de corre electrónico:

Código: PHP
  1. <?php
  2. $new_pass = '
  3. MC Habbix v1.0 - Recordar contraseña.
  4. Tu usuario es: '.$user_ok['user'].'
  5. Su nueva contraseña es: '.$aleatoria[$pass].'
  6.  
  7. ----------------------
  8.  
  9. MC Habbix v1.0 ~ Administrators.';
  10. $asunto = "MC Habbix v1.0 ~ New Pass";
  11. $headers = "MIME-Version: 1.0\n";
  12. $headers .= "Content-type: text/plain; charset=iso-8859-1\n";
  13. $headers .= "From: MC Habbix v1.0 <mailings@habbohotel.com>\n";
  14. $headers .= "To: ".$user_ok['habbo']." <".$user_ok['mail'].">\n";
  15. $headers .= "Reply-To: mailings@habbohotel.com\n";
  16. ?>
  17.  

Aquí pues mostrarémos lo que sería el usuario y la nueva contraseña, si se dan cuenta la contraseña es $aleatoria[$pass], ¿Por qué? Por que aleatoria son arrays y para llamar a un array se hace de esta forma:

$aleatoria[0]
$aleatoria[1]
Etc, dependiendo cuantos valores tengan, entonces a $pass tiene la función rand que nos genera un número aleatoriamente, por lo tanto al elejir aleatoriamente y poner $aleatoria[$pass] está elijiendo un número al azar y dependiendo el número que se elija es la nueva contraseña que tendrá.

Ahora simplemente enviarémos el correo así:
Código: PHP
  1. <?php
  2. You are not allowed to view links. Register or Login($user_ok['mail'],$asunto,$new_pass,$headers);
  3. ?>
  4.  

En donde $user_ok['mail'] es el del usuario, el asunto es el que anteriormente escribimos en la variable $asunto, $new_pass es la carta con los datos, y $headers es el formáto de envío.

Ahora pondrémos por último unas condicionales y cerrarémos todas las llaves así:

Código: PHP
  1. <?php
  2. echo 'Se ha envíado tu nueva contraseña a tu dirección de registro.';
  3. echo "<meta http-equiv='Refresh' content='2;url=chat.php'>";
  4.         }else{
  5.         echo 'Datos no encontrados.';
  6.         echo "<meta http-equiv='Refresh' content='2;url=recordar.html'>";
  7.             }
  8.         }
  9.     }
  10. }
  11. ?>
  12.  

Y esto sería todo, aquí les dejo el código final:

Código: PHP
  1. <?php
  2. if ($_POST['user'] == "" or $_POST['nick'] == "" or $_POST['habbo'] == ""){ // Comprobamos que las casillas de texto no tengan valor.
  3. echo 'Te faltaron rellenar campos.';
  4. echo "<meta http-equiv='Refresh' content='2;url=recordar.html'>"; // Si estan vacias los redireccionamos a recordar.html
  5. }else{
  6. include ('config.php'); // Incluimos la conexion de la base de datos
  7. $user = $_POST['user']; // Obtenemos el valor de la casilla user
  8. $nick = $_POST['nick']; // Obtenemos el valor de la casilla nick
  9. $habbo = $_POST['habbo']; // Obtenemos el valor de la casilla habbo
  10. $usuarios = You are not allowed to view links. Register or Login("SELECT * FROM users WHERE user='$user' and nick='$nick' and habbo='$habbo' "); // Checamos que los datos existan
  11. if($user_ok = You are not allowed to view links. Register or Login($usuarios)){
  12. $aleatoria = You are not allowed to view links. Register or Login(1 => 'a83je05', 2 => 'dk59dj3', 3 => 'a0sk3h4', 4 => 'a03jdy7', 5 => 'a904k5t', 6 => 'sj59edh', 7 => '9dj5yas', 8 => '4fdo5ks', 9 => 'sk49dj4', 10 => 'i4k04kd'); // Ponemos frases cualquiera en el array de aleatoria
  13. $pass = You are not allowed to view links. Register or Login(1,10); // Generamos un numero al azar del 1 al 10
  14. $pass_new = You are not allowed to view links. Register or Login($aleatoria[$pass]); // Encriptamos pass en sha1
  15. $SQL = "UPDATE users SET pass='".$pass_new."' WHERE id='".$user_ok['id']."'";
  16. You are not allowed to view links. Register or Login($SQL);
  17. $new_pass = '
  18. MC Habbix v1.0 - Recordar contraseña.
  19. Tu usuario es: '.$user_ok['user'].'
  20. Su nueva contraseña es: '.$aleatoria[$pass].'
  21.  
  22. ----------------------
  23.  
  24. MC Habbix v1.0 ~ Administrators.';
  25. $asunto = "MC Habbix v1.0 ~ New Pass"; // Asunto del correo
  26. $headers = "MIME-Version: 1.0\n";
  27. $headers .= "Content-type: text/plain; charset=iso-8859-1\n";
  28. $headers .= "From: MC Habbix v1.0 <mailings@habbohotel.com>\n";// Correo del remitente
  29. $headers .= "To: ".$user_ok['habbo']." <".$user_ok['mail'].">\n"; // Correo del destinatario
  30. $headers .= "Reply-To: mailings@habbohotel.com\n"; // A quien responder
  31. You are not allowed to view links. Register or Login($user_ok['mail'],$asunto,$new_pass,$headers); // Enviamos correo
  32. echo 'Se ha envíado tu nueva contraseña a tu dirección de registro.'; // Si el correo se envio correctamente
  33. echo "<meta http-equiv='Refresh' content='2;url=chat.php'>";
  34.         }else{ // Si los datos no existen
  35.         echo 'Datos no encontrados.';
  36.         echo "<meta http-equiv='Refresh' content='2;url=recordar.html'>";
  37.          }
  38.        }
  39.      }
  40.    }
  41. ?>
  42.  

Suerte, cualquier duda ó corrección haganmela saber ya que modifiqué ciertos aspectos para mostrarselos.
« Última modificación: Marzo 27, 2014, 06:11:57 pm por Expermicid »
Cada vez que me das Karma me motivas

 

¿Te gustó el post? COMPARTILO!



[Tutorial] Login y registro basico sin unas base de datos

Iniciado por HckDrk

Respuestas: 11
Vistas: 6833
Último mensaje Noviembre 21, 2011, 07:37:49 am
por Xt3mP
[Tutorial] Utilizando localhost para visualizar .php by Subzer [PHP]

Iniciado por Subzer

Respuestas: 2
Vistas: 1452
Último mensaje Noviembre 14, 2012, 09:57:49 pm
por Subzer
Tutorial: Publicar un post en twitter desde PHP

Iniciado por Stiuvert

Respuestas: 1
Vistas: 2069
Último mensaje Diciembre 26, 2015, 03:07:12 pm
por ANTRAX
[Tutorial] PHP - Crear Script Para Capturar Ip

Iniciado por andy007

Respuestas: 5
Vistas: 3132
Último mensaje Julio 18, 2013, 07:44:35 am
por empardopo
Tutorial PHP Arrays Basicos, Asociativos, Multidimensionales[Con Voz]

Iniciado por Matabarras

Respuestas: 1
Vistas: 888
Último mensaje Noviembre 24, 2012, 12:40:58 pm
por ANTRAX