Foros del Web » Programando para Internet » PHP »

Recuperar contraseña y nombre de usuario

Estas en el tema de Recuperar contraseña y nombre de usuario en el foro de PHP en Foros del Web. Quisiera saber como le hago llegar la informacion a un usuario registrado de su nombre de usuario y contraseña a traves del mail con el ...
  #1 (permalink)  
Antiguo 24/08/2004, 10:50
 
Fecha de Ingreso: agosto-2004
Mensajes: 27
Antigüedad: 13 años, 3 meses
Puntos: 0
Recuperar contraseña y nombre de usuario

Quisiera saber como le hago llegar la informacion a un usuario registrado de su nombre de usuario y contraseña a traves del mail con el que se registró. Y como recupera su contraseña si se la olvida. Los datos ya los tengo en la BD.
Muchas Gracias.
  #2 (permalink)  
Antiguo 24/08/2004, 11:00
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Pero .. como guardas tus contraseñas en tu BD? .. planas o encriptadas?

Por lo demás .. sólo tienes que hacer una consulta SQL de la forma habitual a tu BD para obtener ese registro (y campos) de ese usuario que solicita el recordar la contraseña (supongo que lo autentificarás por algún medio?) y genear tu mail con la función: mail() de PHP. Recordar la contraseña es el mismo procedimiento .. la obtienes y generas un mail para enviarselo a la dirección que indicó en el registro.

Si las contraseñas están encriptadas .. es otro tema .. hay que genear una nueva.

Especifica un poco más que NO sabes hacer exactamente .. ¿no sabes hacer la consulta a tu BD para obtener los datos de la contraseña para ese usuario? .. no sabes enviar un e-mail con PHP? .. en fin, concreta más y sobre todo intenta hacer algo tu y aquí publicas los problemas que tengas puntuales...

Un saludo,
  #3 (permalink)  
Antiguo 24/08/2004, 11:01
 
Fecha de Ingreso: noviembre-2002
Ubicación: Barcelona - España
Mensajes: 270
Antigüedad: 15 años
Puntos: 0
Debes hacer una página con un pequeño formulario donde tendrá que introducir su e-mail. Lo procesas y si ese e-mail concuerda con el que tienes en la base de datos, le envias usuario y contraseña.
En las FAQ's encontrarás como enviar un e-mail.
  #4 (permalink)  
Antiguo 24/08/2004, 15:14
 
Fecha de Ingreso: agosto-2004
Mensajes: 27
Antigüedad: 13 años, 3 meses
Puntos: 0
Estoy usando una mezcla de lo publicado en maestrosdelweb y desarrolloweb

El formulario de registro
formulario_registro.htm

<html>
<head>
<title>Formulario de registro</title>
</head>
<strong><font size="3">INGRESE SUS DATOS PARA REGISTRARSE</font></strong><br>
<FORM ACTION="registrar.php" METHOD="post">
<div align="left"><strong>Nombre de usuario:</strong>
<INPUT TYPE="text" NAME="nick" SIZE=20 MAXLENGTH=20>
(*)<BR>
<strong>Password:</strong>
<INPUT TYPE="password" NAME="password" SIZE=28 MAXLENGTH=20>
(*)<BR>
<strong>Email:</strong>
<INPUT TYPE="text" NAME="email" SIZE=28 MAXLENGTH=100>
(*)<BR>
<strong>Nombre Real:</strong>
<INPUT TYPE="text" NAME="nombre" SIZE=28 MAXLENGTH=255>
<BR>
<INPUT name="submit" TYPE="submit" CLASS="boton" VALUE="Registrarse">
</div>
</FORM>
(*) Datos obligatorios
</body>
</html>

El programa que me manda el registro a la BD
registrar.php

<html>
<head>
<title>Documento sin t&iacute;tulo</title>
</head>
<?php
//conecto con la base de datos
$conn = mysql_connect("localhost","root","");
mysql_select_db("nombre_bd",$conn);

function quitar($mensaje)
{
$mensaje = str_replace("<","&lt;",$mensaje);
$mensaje = str_replace(">","&gt;",$mensaje);
$mensaje = str_replace("\'","'",$mensaje);
$mensaje = str_replace('\"',"&quot;",$mensaje);
$mensaje = str_replace("\\\\","\",$mensaje);
return $mensaje;
}

if(trim($HTTP_POST_VARS["nick"]) != "" && trim($HTTP_POST_VARS["email"]) != "" && trim($HTTP_POST_VARS["password"]) != "")
{
$sql = "SELECT id FROM usuarios WHERE nick='".quitar($HTTP_POST_VARS["nick"])."'";
$result = mysql_query($sql);
if($row = mysql_fetch_array($result))
{
echo "ERROR, el NOMBRE DE USUARIO ya fue escogido por otra persona";
}
else
{
$sql = "INSERT INTO usuarios (nick,password,nombre,email) VALUES (";
$sql .= "'".quitar($HTTP_POST_VARS["nick"])."'";
$sql .= ",'".quitar($HTTP_POST_VARS["password"])."'";
$sql .= ",'".quitar($HTTP_POST_VARS["nombre"])."'";
$sql .= ",'".quitar($HTTP_POST_VARS["email"])."'";
$sql .= ")";
mysql_query($sql);
echo "Registro exitoso! Ud. ya pertenece a nuestra comunidad de Usuarios.";
}
mysql_free_result($result);
}
else
{
echo "ERROR. Por favor, debe completar los DATOS OBLIGATORIOS";
}
mysql_close();
?>
</body>
</html>

Lo que no sé es extraer los datos de la BD para enviarselo al mail que acaba de ingresar en el formulario.
Y como consultar al la BD y extraer la contraseña cuando se la olvide.
Gracias
  #5 (permalink)  
Antiguo 24/08/2004, 15:24
 
Fecha de Ingreso: agosto-2004
Mensajes: 27
Antigüedad: 13 años, 3 meses
Puntos: 0
Para el acceso restringido estoy usando:

Archivo del formulario:
index.php

<html>
<head>
<title>Documento sin t&iacute;tulo</title>
</head>
<form action="control.php" method="POST">
<table align="center" width="331" cellspacing="2" cellpadding="2" border="0">
<tr>
<td colspan="2" align="center"
<?if ($_GET["errorusuario"]=="si"){?>
bgcolor=red><span style="color:ffffff"><b><font size="3">Datos incorrectos</font></b></span>
<?}else{?>
bgcolor=#cccccc><font size="3"><strong>Introduzca sus datos de acceso</strong></font>
<?}?>
</td>
</tr>
<tr>
<td width="217" align="right"><font size="3"><strong>Nombre de Usuario:</strong></font></td>
<td width="100"><input type="Text" name="usuario" size="25" maxlength="50"></td>
</tr>
<tr>
<td align="right"><font size="3"><strong>Password:</strong></font></td>
<td><input type="password" name="contrasena" size="25" maxlength="50"></td>
</tr>
<tr>
<td colspan="2" align="center"><input name="Submit" type="Submit" value="Entrar"></td>
</tr>
</table>
</form>
</body>
</html>

Consulta a la BD
control.php

<?
//conecto con la base de datos
$conn = mysql_connect("localhost","root","");
//selecciono la BBDD
mysql_select_db("nombre_bd",$conn);

//Sentencia SQL para buscar un usuario con esos datos
$ssql = "SELECT * FROM usuarios WHERE nick='$usuario' and password='$contrasena'";

//Ejecuto la sentencia
$rs = mysql_query($ssql,$conn);

//vemos si el usuario y contraseña es váildo
//si la ejecución de la sentencia SQL nos da algún resultado
//es que si que existe esa conbinación usuario/contraseña
if (mysql_num_rows($rs)!=0){
//usuario y contraseña válidos
//defino una sesion y guardo datos
session_start();
session_register("autentificado");
$autentificado = "SI";
header ("Location: aplicacion.php");
}else {
//si no existe le mando otra vez a la portada
header("Location: index.php?errorusuario=si");
}
mysql_free_result($rs);
mysql_close($conn);
?>

Compruebo los datos:
seguridad.php

<?
//Inicio la sesión
session_start();

//COMPRUEBA QUE EL USUARIO ESTA AUTENTIFICADO
if ($_SESSION["autentificado"] != "SI") {
//si no existe, envio a la página de autentificacion
header("Location: index.php");
//ademas salgo de este script
exit();
}
?>

La pagina de la aplicacion:
aplicacion.php

<?include ("seguridad.php");?>
<html>
<head>
<title>Documento sin t&iacute;tulo</title>

</head>

<body leftmargin="0" topmargin="0">
<p><strong><font size="4">Ud se ha autenticado y entr&oacute; a la p&aacute;gina
de usuarios registrados</font></strong></p>
<p>------------------------------------</p>
<p><font size="2" face="Tahoma">Si desea salir, haga click ac&aacute; <a href="salir.php">Salir</a></font>
</p></body>
</html>

y la de cierre de sesion:
salir.php

<?
session_start();
session_destroy();
?>
<html>
<head>
<title>Documento sin t&iacute;tulo</title>
</head>
<font size="4">Gracias, lo esperamos nuevamente.</font><br>
<br>
<a href="index.php">Volver al formulario de Ingreso</a> <br>
<br>
<a href="formulario_registro.htm">Registrar un nuevo usuario</a>
</body>
</html>
  #6 (permalink)  
Antiguo 24/08/2004, 15:58
Avatar de macabro  
Fecha de Ingreso: enero-2003
Ubicación: venus >> ((_\
Mensajes: 254
Antigüedad: 14 años, 10 meses
Puntos: 1
http://www.forosdelweb.com/f18/enviar-password-perdido-via-email-con-php-176873/

haber si te sirve de algo , saludos
  #7 (permalink)  
Antiguo 24/08/2004, 23:32
 
Fecha de Ingreso: agosto-2004
Mensajes: 27
Antigüedad: 13 años, 3 meses
Puntos: 0
GRACIAS, lo tuyo no es macabro es grandioso !!!

Para recuperar la contraseña
El formulario:
recuperar.php

<?
$email = $_POST['email'];
?>
<html>
<form action="enviar_datos.php\" method=\"post\" >
Por favor inserte su e-mail:<br>
<input type="text" name="email"><br>
<input type="submit" value="Enviar" name="go">
</form>
</html>

Envio el mail con la contraseña
enviar_datos.php

<?php
//conecto con la base de datos
$conn = mysql_connect("localhost","root","");
mysql_select_db("nuestra_bd",$conn);
// Seleccionamos el email de la base de datos para verificar
$result = @mysql_query("SELECT email,password FROM usuarios WHERE email='$email'");
if (!$result) {
echo("<p>Error al seleccionar tabla: " . mysql_error() . "</p>");
exit();
}
//Chekeamos si existe el email
$sql_check_num = mysql_num_rows($result);
if($sql_check_num == 0){

echo "<table width='467'><tr><td><font color=ff0000 face=verdana>El e-mail <b >$email</b> no fue encontrado en nuestra base de datos</font><br />
<center>
<p>

<form action=\"enviar_datos.php\" method=\"post\">
Intente de nuevo: <input type=\"text\" name=\"email\">
<input type=\"submit\" value=\"Enviar\" name=\"go\">
</form>
</p></center></td><tr></table>";
exit();
}
// Si va todo bien sacamos todo de la base de datos
while ( $row = mysql_fetch_array($result) ) {
$email = $row["email"];
$password = $row ["password"];

}

// creamos el email

$mensaje = "Su password es: \n $password ";
$email_webmaster = "[email protected]";
$asunto = "Su contraseña de Usuario Registrado";

mail($email,$asunto,$mensaje,"FROM: $email_webmaster");

//le decimos al usuario que fue enviado su password
//y que vaya rrapido a revisar su correo electronico

echo ("<table width='467'><tr><td>Tu password ha sido enviado al siguiente correo: $email <br>

por favor dirigirse a <a href='../index.php'>sector miembros para ingresar </a>
</td><tr></table>");

?>


Para enviar un mail con los datos al momento de registrarse
Armé el nuevo archivo
registrar.php

<?
$email = $_POST['email'];
?>
<html>
<head>
<title>Documento sin t&iacute;tulo</title>
</head>
<?php
//conecto con la base de datos
$conn = mysql_connect("localhost","root","");
mysql_select_db("nuestra_bd",$conn);

function quitar($mensaje)
{
$mensaje = str_replace("<","&lt;",$mensaje);
$mensaje = str_replace(">","&gt;",$mensaje);
$mensaje = str_replace("\'","'",$mensaje);
$mensaje = str_replace('\"',"&quot;",$mensaje);
$mensaje = str_replace("\\\\","\",$mensaje);
return $mensaje;
}

if(trim($HTTP_POST_VARS["nick"]) != "" && trim($HTTP_POST_VARS["email"]) != "" && trim($HTTP_POST_VARS["password"]) != "")
{
$sql = "SELECT id FROM usuarios WHERE nick='".quitar($HTTP_POST_VARS["nick"])."'";
$result = mysql_query($sql);
if($row = mysql_fetch_array($result))
{
echo "ERROR, el NOMBRE DE USUARIO ya fue escogido por otra persona";
}
else
{
// creamos el email
{
$mensaje = "Gracias por registrarse en infopuerta.com.ar
Su nombre de usuario es: \n $nick
Su password es: \n $password
Su email registrado es: \n $email ";
$email_webmaster = "[email protected]";
$asunto = "Sus datos de Usuario Registrado";

mail($email,$asunto,$mensaje,"FROM: $email_webmaster");
}

// exportamos los datos a la BD
$sql = "INSERT INTO usuarios (nick,password,nombre,email) VALUES (";
$sql .= "'".quitar($HTTP_POST_VARS["nick"])."'";
$sql .= ",'".quitar($HTTP_POST_VARS["password"])."'";
$sql .= ",'".quitar($HTTP_POST_VARS["nombre"])."'";
$sql .= ",'".quitar($HTTP_POST_VARS["email"])."'";
$sql .= ")";
mysql_query($sql);
echo "Registro exitoso! Ud. ya pertenece a nuestra comunidad de Usuarios.";
//le decimos al usuario que fue enviado un mail con sus datos
//y revise su correo electronico
echo ("<table width='467'><tr><td>Sus datos de registro han sido enviado al siguiente correo: $email <br>
por favor dirigirse a <a href='index.php'>sector miembros para ingresar </a>
</td><tr></table>");
}

mysql_free_result($result);
}
else
{
echo "ERROR. Por favor, debe completar los DATOS OBLIGATORIOS";
}
mysql_close();
?>
</body>
</html>

Espero que le sirva a otro
MUCHAS GRACIAS
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:42.