Foros del Web » Programando para Internet » PHP »

Olvidastes la contraseña?

Estas en el tema de Olvidastes la contraseña? en el foro de PHP en Foros del Web. Pues eso, estoy empezando a aprender sobre php, se como dar de alta un usuario en una base de datos y q este se autentifique, ...
  #1 (permalink)  
Antiguo 08/06/2003, 18:31
Avatar de bichomen  
Fecha de Ingreso: junio-2003
Ubicación: Barcelona y alrededores, España
Mensajes: 874
Antigüedad: 14 años, 6 meses
Puntos: 2
Pregunta Olvidastes la contraseña?

Pues eso, estoy empezando a aprender sobre php, se como dar de alta un usuario en una base de datos y q este se autentifique, el problema q tengo, creo q es relativamente sencillo, quiero que este usuario cuando se logue, si por alguna razón se le olvida la contraseña, pues q tenga la posibilidad de recuperarla, hay dos formas de hacer esto:

una es la tipica del hotmail, q atraves de una preguntra te devuelve la contraseña, en la misma página,

y la otra es pedirle el email que introdujo cuando se registro y enviarle un email con su contraseña (creo q esta es la opcion mas segura) me gustarian q me comentaran q metodo es mejor, por practico o seguro.

Pero mi problema es el siguiente, mas abajo pongo el codigo, como esto lo estoy probando, hago una consulta donde a tarves del email que el usuario introduce le devuelve el password:

<?php

$remail;

if(isset($submit)):

$db = mysql_pconnect("localhost", "root") or die("No pudo conectar");
mysql_select_db("users",$db) or die("No se encuentra la base usuarios");

$sql = "select Password from usuarios where Email = '$bEmail'";
mysql_query($sql) or die("La query1 no funciona: ".mysql_error());

print("Tu contraseña es:<b>$Password</b>");

endif;

?>

<form name="f1" action="contraseña.php" method="post">
Introduce tu Email:<input type="text" name="bEmail">
<input type="submit" name="submit" value=¡Enviar!>

La select la e probado en la base de datos y funciona, pero aplicada al php no funciona me devuelve el espacio vacio, no se pq razon pasa esto. Una cosa mas como hago cuando el codigo funcione y devuelva la contraseña, que automaticamente se le envie un email a la dirrección indicada? Gracias de antemano, espero no haber sido muy largo


PD: Ya q estoy puesto, alguien sabe en mysql como hacer q en los campos no, no halla datos duplicados? como hacer q la db no te deje introducir datos repetidos?


bichomen
  #2 (permalink)  
Antiguo 08/06/2003, 18:44
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cita:
PD: Ya q estoy puesto, alguien sabe en mysql como hacer q en los campos no, no halla datos duplicados? como hacer q la db no te deje introducir datos repetidos?
En Msyql puedes usar campos con propiedad "Unico" .. Si intentas registrar un dato igual ya te dará un error Msyql ..

Pero, lo que se suele hacer es una consulta típo:
SELECT COUNT(*) as total FROM tabla WHERE campo='$dato_nuevo'

Antes de hacer tu "INSERT" a tu BD con ese dato que no ha de coincidir con algún campo de tu tabla ...

De esta forma podrías hacer una consulta sobre .. por ejemplo un "nick" donde busques tanto en mayusculas como en minusculas (para que no tengas un nick tipo "pepe" y "PEPE" o "PePe" ... )

Por lo demas .. ya voté .. "Recordar contraseña por e-mail" .. creo que es lo más seguro .. Y bueno, obviamente antes debes de haber confirmado esa cuenta de e-mail que pertenece al usuario que hizo el registro ..

--------

Sobre tu problema ..

Un mysql_query() devuelve un "recorset" o lista de registros que coninciden con tu sentencia SQL que has hecho bajo tus condiciones o acciones a esa BD ..

Necesitas de hacer un "fetch" hacia un array, objeto, row, etc para poder acceder a esos resultados de tu consulta .. o bien accederlo directamente usando mysql_result() .. Ademas de esto, debes tener en cuenta que una consulta SQL puede arrojar mas de un registro como resultado .. Si esto ocurre o es probable que ocurra debes de usar algún bucle para acceder a todos los registros que ha producido dicha consulta ..

Código PHP:
sql "select Password from usuarios where Email = '$bEmail'";
$consulta=mysql_query($sql) or die("La query1 no funciona: ".mysql_error());

// Como parece que sólo va arrojar un registro esa consulta .. accedemos directamente al resultado.
$Password=mysql_result($consulta,0,"Password");

print(
"Tu contraseña es:<b>$Password</b>"); 
Te recomiento este tutorial de PHP+Mysql y que no te olvides del oficial de php: www.php.net/manual/es

http://otri.us.es/recursosPHP/manual/index.htm

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.

Última edición por Cluster; 08/06/2003 a las 18:53
  #3 (permalink)  
Antiguo 08/06/2003, 18:56
Avatar de bichomen  
Fecha de Ingreso: junio-2003
Ubicación: Barcelona y alrededores, España
Mensajes: 874
Antigüedad: 14 años, 6 meses
Puntos: 2
Gracias, por la contestación, muy rapida, pero no me soluciona, mi duda principal :( lo de la consulta en la db antes de introducir los datos es una buena idea :)
__________________
"Se sabe con exactitud, con cuanta imprecisión, se sabe algo"
Linux Registered User #320332
  #4 (permalink)  
Antiguo 08/06/2003, 19:01
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Edité el mensaje y te respondí a tu problema con el código .. leelo y lee el manual que te he recomendado ..

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #5 (permalink)  
Antiguo 08/06/2003, 19:26
Avatar de bichomen  
Fecha de Ingreso: junio-2003
Ubicación: Barcelona y alrededores, España
Mensajes: 874
Antigüedad: 14 años, 6 meses
Puntos: 2
Pues si señor, la cosa funciona, tengo problemas aun de compresion de los conceptos de las funciones de mysql, pero ya ire aprendiendo, ahora el siguiente paso es en enviar "$Password" al email indicado, no hace falta q me contestes mirare el manual q me as pasado y si aun asi no me soluciona el problema volvere a pedir ayuda, gracias
__________________
"Se sabe con exactitud, con cuanta imprecisión, se sabe algo"
Linux Registered User #320332
  #6 (permalink)  
Antiguo 08/06/2003, 19:28
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
En las FAQ's de este foro tienes muchos ejemplos .. Revisalas y te evitaras horas dando vueltas en manuales y tutoriales ..

http://www.forosdelweb.com/showthrea...hreadid=101546

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
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 15:49.