Foros del Web » Programando para Internet » PHP »

¿Olvidó su contraseña? php y mysql

Estas en el tema de ¿Olvidó su contraseña? php y mysql en el foro de PHP en Foros del Web. Hola a todos hace poco postee un registro de usuarios que nos genera una pass boleana que se envia una vez terminado aqui les dejo ...
  #1 (permalink)  
Antiguo 26/12/2009, 21:11
 
Fecha de Ingreso: septiembre-2008
Mensajes: 67
Antigüedad: 15 años, 7 meses
Puntos: 0
¿Olvidó su contraseña? php y mysql

Hola a todos hace poco postee un registro de usuarios que nos genera una pass boleana que se envia una vez terminado

aqui les dejo el codigo
Código PHP:
 <?php 
function gen_pass () { 
$i=0
$password=""
// Aqui colocamos el largo del password 
$pw_largo 8
// Colocamos el rango de caracteres ASCII para la creacion de el password 
$desde_ascii 50// "2" 
$hasta_ascii 122// "z" 
// Aqui quitamos caracteres especiales 
$no_usar = array (58,59,60,61,62,63,64,73,79,91,92,93,94,95,96,108111); 
while (
$i $pw_largo) { 
mt_srand ((double)microtime() * 1000000); 
// limites aleatorios con tabla ASCII 
$numero_aleat mt_rand ($desde_ascii$hasta_ascii); 
if (!
in_array ($numero_aleat$no_usar)) { 
$password $password chr($numero_aleat); 
$i++; 


return 
$password


// Y aqui ejecutamos la funcion y la guardamos en $p_generado, luego simplemente la cargamos 
$p_gen gen_pass(); 
?> 
<? 
   
include("dbconexion.php"); 
   if (isset(
$_POST["usuario"])) { 
   
$usuario $_POST["usuario"]; 
   
$email $_POST["email"]; 
   
$responsable $_POST["responsable"]; 
   
$telefono $_POST["telefono"]; 
   if(
$usuario==NULL|$email==NULL|$responsable==NULL|$telefono==NULL) { 
   echo 
"un campo est&aacute; vacio."
   }else{ 
   
$usuario=str_replace(" ","",$usuario); 
   
$email=str_replace(" ","",$email); 
   
$usuario=str_replace("%20","",$usuario);// Quitar posiblesespacios escapados 
   
$email=str_replace("%20","",$email); 
   
$usuario=addslashes($usuario);// add slashes to stop hacking 
   
$email=addslashes($email); 
   
$minuser_len 6//username minimum length 
   
if (strlen($usuario) < $minuser_len || strlen($email) < $minemail_len){ 
   echo 
"El usuario debe tener como mínimo 6 digitos"
   }else{ 
   
$checkuser mysql_query("SELECT usuario FROM usuarios WHERE usuario='$usuario'"); 
   
$username_exist mysql_num_rows($checkuser); 
   
$checkemail mysql_query("SELECT email FROM usuarios WHERE email='$email'"); 
   
$email_exist mysql_num_rows($checkemail); 
   if (
$email_exist>0|$usuario_exist>0) { 
   echo 
"EL nombre de usuario $usuario o la cuenta de correo $email estan ya en uso"
   }else{ 
   
$query "INSERT INTO usuarios (usuario, email, responsable, telefono, pass1) VALUES('$usuario','$email','$responsable','$telefono','$p_gen')"
   
mysql_query($query) or die(mysql_error()); 
   echo 
"El usuario $usuario se ha generado correctamente con la contraseña le estará llegando al correo brindado por usted"
   
$email $_POST['email'];  
   
$usuario $_POST['usuario']; 
   
$asunto =    'Confirmacion de registro.';  
   
$mensaje =   "El registro se ha realizado correctamente tu password es    $p_gen";  
   
$cabeceras 'From: [email protected]"\r\n" .  
                         
'Reply-To: [email protected]"\r\n" .  
                         
'X-Mailer: PHP/' phpversion();  

   
mail($email$asunto$mensaje$cabeceras);   




?>
Ahora lo que necesito es generar un ¿Olvidó su contraseña? de la misma manera, que genere una contraseña nueva que la vuelva a ingresar en la base de datos y que nos la envie por correo.

desde ya muchas gracias a los que me puedan aportar.
  #2 (permalink)  
Antiguo 27/12/2009, 00:41
Avatar de urgido  
Fecha de Ingreso: febrero-2005
Mensajes: 2.351
Antigüedad: 19 años, 2 meses
Puntos: 25
Respuesta: ¿Olvidó su contraseña? php y mysql

Pues no es mucha ciencia

Código PHP:
Ver original
  1. <?php
  2. function gen_pass () {
  3. $i=0;
  4. $password="";
  5. // Aqui colocamos el largo del password
  6. $pw_largo = 8;
  7. // Colocamos el rango de caracteres ASCII para la creacion de el password
  8. $desde_ascii = 50; // "2"
  9. $hasta_ascii = 122; // "z"
  10. // Aqui quitamos caracteres especiales
  11. $no_usar = array (58,59,60,61,62,63,64,73,79,91,92,93,94,95,96,108, 111);
  12. while ($i < $pw_largo) {
  13. mt_srand ((double)microtime() * 1000000);
  14. // limites aleatorios con tabla ASCII
  15. $numero_aleat = mt_rand ($desde_ascii, $hasta_ascii);
  16. if (!in_array ($numero_aleat, $no_usar)) {
  17. $password = $password . chr($numero_aleat);
  18. $i++;
  19. }
  20. }
  21. return $password;
  22.  
  23. }
  24. // Y aqui ejecutamos la funcion y la guardamos en $p_generado, luego simplemente la cargamos
  25. $p_gen = gen_pass();
  26. ?>
  27. <?
  28.    include("dbconexion.php");
  29.    if (isset($_POST["email"])) {
  30.    $email = $_POST["email"];  
  31.    $query = "UPDATE usuarios SET pass1='".$p_gen."' WHERE email='".$email."'";
  32.    mysql_query($query) or die(mysql_error());
  33.    echo "su nuevo pass ha sido enviado!";
  34.    $asunto =    'Nuevo pass.';  
  35.    $mensaje =   "su nuevo pass es: $p_gen";  
  36.    $cabeceras = 'From: [email protected]' . "\r\n" .  
  37.                          'Reply-To: [email protected]' . "\r\n" .  
  38.                          'X-Mailer: PHP/' . phpversion();  
  39.  
  40.    mail($email, $asunto, $mensaje, $cabeceras);  
  41. }  
  42. ?>

lo hice aquí en el foro igual y hay errores, peor ya te dí una mano. Saludos
__________________
Hospedaje Web al mejor costo!
  #3 (permalink)  
Antiguo 28/12/2009, 07:27
 
Fecha de Ingreso: septiembre-2008
Mensajes: 67
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: ¿Olvidó su contraseña? php y mysql

Gracias amigo la verdad es que me estaba volviendo loco, mucho leer codigo me habia mareado, me olvidaba de sentenciar el $email te dejo un abrazo y un feliz año nuevo
  #4 (permalink)  
Antiguo 28/12/2009, 18:37
 
Fecha de Ingreso: septiembre-2008
Mensajes: 67
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: ¿Olvidó su contraseña? php y mysql

ahora tengo otro problema no se que me pasa estos dias mira tengo el mismo codigo pero ahora quiero que el usuario pueda cambiar su propia contraseña

con lo cual hago un form llamado cambiopass.php

Código PHP:
<form id="recupero" name="recupero" method="post" action="cambiopass2.php">
      <label></label>
      <div align="center">
        <div align="center">
          <p>Usuario    : <input name="usuario" type="Checkbox" id="usuario" value=" <? echo"".$_SESSION['s_usuario'].""?> " size="32"/> 
              <? echo"".$_SESSION['s_usuario'].""?>  <br />
          Contrase&ntilde;a Antigua:  
               <input name="pass" type="text" id="pass" size="32" />
            <br />      
          Nueva Contrase&ntilde;a
          :
          <input name="pass2" type="text" id="pass3" size="32" />
          <input type="submit" name="enviar" id="enviar" value="Enviar" />
para que el usuario se coloque de manera automatica, asi como tambien un campo de contraseña antigua $pass2 y uno de contraseña nueva $pass3

que se envia cambiopass2.php

Código PHP:
<?
include("dbconexion.php");
   if (isset(
$_POST["usuario"])) 
   
$usuario $_POST["usuario"];
   
$pass2 $_POST["pass2"]; {
   if(
$usuario==NULL|$pass2==NULL) {
   echo 
"un campo est&aacute; vacio.";
   include(
"dbconexion.php");
   
$checpass mysql_query("SELECT usuario, pass1 FROM usuarios WHERE pass1='$pass1'");
//donde selecciono el usuario y la pass1 que es donde guardo mis contraseñas
   
$usuario $_POST["usuario"];
   
$pass2 $_POST["pass2"];
   if (
$pass2 $checpass) {
   echo 
"la contraseña $pass2 es igual a la anterior por favor cambiala";
   }else{
   echo 
"El contraseña $pass2 se ha cabiado correctamente le estará llegando a su correo";
// o sea aqui voy a poner el codiigo para que reemplace

}}
?>
que estoy haciendo mal??
  #5 (permalink)  
Antiguo 28/12/2009, 18:39
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: ¿Olvidó su contraseña? php y mysql

mysql_query() devuelve un #resource no un valor...

para poder usarlo en la comparación debes hacer el fetching de dicho recurso...
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #6 (permalink)  
Antiguo 28/12/2009, 18:42
Avatar de zaetoner  
Fecha de Ingreso: noviembre-2007
Ubicación: La ciudad de México
Mensajes: 607
Antigüedad: 16 años, 5 meses
Puntos: 30
Respuesta: ¿Olvidó su contraseña? php y mysql

correcto pateketrueke pero tambien
Código PHP:
Ver original
  1. ["usuario"]))
  2.    $usuario = $_POST["usuario"];
  3.    $pass2 = $_POST["pass2"]; {
si te fijas en la ultima linea(que te pongo) pusiste un { cuando deberia de ir al final de la primera linea(que te publico)
__________________
...
  #7 (permalink)  
Antiguo 28/12/2009, 19:52
 
Fecha de Ingreso: septiembre-2008
Mensajes: 67
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: ¿Olvidó su contraseña? php y mysql

Cita:
Iniciado por pateketrueke Ver Mensaje
mysql_query() devuelve un #resource no un valor...

para poder usarlo en la comparación debes hacer el fetching de dicho recurso...
ok como hacerlo no veo por que tengo que recoger el valor de la pass1 que ya esta en la base de datos y si le pongo mysql_num_rows() me va a traer otro valor me parece
me darias un ejemplo de lo que vos ves que tenga que hacer??
  #8 (permalink)  
Antiguo 28/12/2009, 19:56
Avatar de urgido  
Fecha de Ingreso: febrero-2005
Mensajes: 2.351
Antigüedad: 19 años, 2 meses
Puntos: 25
Respuesta: ¿Olvidó su contraseña? php y mysql

debe ser:

$checpass = mysql_query("SELECT usuario, pass1 FROM usuarios WHERE pass1='$pass1'");
$fila=mysql_fetch_array($checpass);
//donde selecciono el usuario y la pass1 que es donde guardo mis contraseñas
$usuario = $_POST["usuario"];
$pass2 = $_POST["pass2"];
if ($pass2 == $fila['pass1']) {
__________________
Hospedaje Web al mejor costo!
  #9 (permalink)  
Antiguo 28/12/2009, 21:25
 
Fecha de Ingreso: septiembre-2008
Mensajes: 67
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: ¿Olvidó su contraseña? php y mysql

Cita:
Iniciado por urgido Ver Mensaje
debe ser:

$checpass = mysql_query("SELECT usuario, pass1 FROM usuarios WHERE pass1='$pass1'");
$fila=mysql_fetch_array($checpass);
//donde selecciono el usuario y la pass1 que es donde guardo mis contraseñas
$usuario = $_POST["usuario"];
$pass2 = $_POST["pass2"];
if ($pass2 == $fila['pass1']) {
amigos me sigue sin tirar nada re hice el codigo e igual

Código PHP:
<? 
include("dbconexion.php"); 
   if (isset(
$_POST["user"])) {
   
$usuario $_POST["usuario"];
   
$pass2 $_POST["pass2"];
   
$checpass mysql_query("SELECT usuario, pass1 FROM usuarios WHERE usuario='$usuario'");
   
$fila=mysql_fetch_array($checpass);
//donde selecciono el usuario y la pass1 que es donde guardo mis contraseñas
   
$usuario $_POST["usuario"];
   
$pass2 $_POST["pass2"];
   if (
$pass2 == $fila['pass1']) {
   echo 
"la contraseña es igual a la anterior";
}}
?>
no se que puede estar pasando sigo haciendo agua
gracias por su tiempo
  #10 (permalink)  
Antiguo 28/12/2009, 22:07
 
Fecha de Ingreso: septiembre-2008
Mensajes: 67
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: ¿Olvidó su contraseña? php y mysql

sigo probando a ver donde está el problema, y sigue estando en el query sigo viendo que no me trae los datos que quiero por ejemplo la contraseña que le corresponde a cierto usuario.

Lo que si veo es que las constantes que salen del form si se imprimen, ahora quiero validar la contraseña original con la contraseña nueva, sin tener que preguntarle al usuario cual es.
Desde ya nuevamente eternamente agradecido a ustedes los que se toman el tiempo

Ahora aquí el codigo donde puedo ver que las constantes se pasan de pag en pag pero no asi la consulta se realiza.

Código PHP:
   <?
   
include("dbconexion.php"); 
   if (isset(
$_POST["usuario"])) {
   
$usuario $_POST["usuario"];
   
$pass2 $_POST["pass2"]; 
   
$checpass mysql_query("SELECT pass1 FROM usuarios WHERE usuario='$usuario'");
   
$fila=mysql_fetch_array($checpass);
   if (
$pass2 == $fila['pass1']) { 
   echo 
"tas iguaaal!!!";
   }else{
   echo 
"usuario $usuario//la contrase&ntilde;a $pass2//$pass1 es igual a la anterior"
}} 
?>
  #11 (permalink)  
Antiguo 28/12/2009, 22:26
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: ¿Olvidó su contraseña? php y mysql

h3greed, por favor... esta pregunta ya la habías hecho antes...

Problema con cambiar contraseña php y mysql

lo peor del caso, es que abandonaste primero este tema... ¡para abrir uno exactamente igual!!

y mejor aún... ahí dicta una respuesta solida, y la desechas...

PDTA: la respuesta sigue siendo la misma que todos te han dicho antes... usa UPDATE
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #12 (permalink)  
Antiguo 28/12/2009, 23:52
 
Fecha de Ingreso: septiembre-2008
Mensajes: 67
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: ¿Olvidó su contraseña? php y mysql

Cita:
Iniciado por pateketrueke Ver Mensaje
h3greed, por favor... esta pregunta ya la habías hecho antes...

→ [url=http://www.forosdelweb.com/f18/problema-con-cambiar-contrasena-php-mysql-765022/#post3220353]Problema con cambiar contraseña php y mysql[/url]

lo peor del caso, es que abandonaste primero este tema... ¡para abrir uno exactamente igual!!

y mejor aún... ahí dicta una respuesta solida, y la desechas...

PDTA: la respuesta sigue siendo la misma que todos te han dicho antes... usa UPDATE
Si la verdad es que si tienes razon, quise unir los temas pero fijate tu que en el otro tema me dicen pero no leen justamente lo que tu hiciste aqui, ya estoy haciendo un UPDATE usuarios gracias de todos modos por tu aporte, si puedes encontrar el error me avisas por que me sigue fallando, suerte
  #13 (permalink)  
Antiguo 29/12/2009, 00:02
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: ¿Olvidó su contraseña? php y mysql

¿cual error?, es que no entiendo totalmente...

osea.. dices que el siguiente código imprime bien los valores de las variables???
Código PHP:
echo "usuario $usuario//la contrase&ntilde;a $pass2//$pass1 es igual a la anterior"
si esto es correcto, entonces lo único que te hace falta es hacer una consulta como cualquier otra, esto quiere decir ejecutar un UPDATE usando mysql_query()

aún así sigo sin entender tu "nuevo" problema, ¿que pasa ahora?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #14 (permalink)  
Antiguo 29/12/2009, 00:35
 
Fecha de Ingreso: septiembre-2008
Mensajes: 67
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: ¿Olvidó su contraseña? php y mysql

Cita:
Iniciado por pateketrueke Ver Mensaje
¿cual error?, es que no entiendo totalmente...

osea.. dices que el siguiente código imprime bien los valores de las variables???
Código PHP:
echo "usuario $usuario//la contrase&ntilde;a $pass2//$pass1 es igual a la anterior"
si esto es correcto, entonces lo único que te hace falta es hacer una consulta como cualquier otra, esto quiere decir ejecutar un UPDATE usando mysql_query()

aún así sigo sin entender tu "nuevo" problema, ¿que pasa ahora?
Te comento nuevamente, hice que funcionara, y con el afan de querer mejorar el codigo, hice cagadas y ademas no me guarde el codigo.

ahora te paso el que tengo desarrollado que es el que supuestamente me funcionaba y me cambiaba la pass en mi base de datos, no se que paso pero ahora no funca mas.

Código PHP:
<?  
   
include("dbconexion.php");  
   if (isset(
$_POST["usuario"])) { 
   
$usuario $_POST["usuario"]; 
   
$pass2 $_POST["pass2"];  
   
$checpass mysql_query("SELECT * FROM usuarios WHERE usuario='$usuario'"); 
   
$query "UPDATE usuarios SET pass1='".$pass2."' WHERE pass1='$pass1'"
   
$fila mysql_fetch_array($checpass); 
   if (
$pass2 == $fila['pass1']) {  
   echo 
"Estas iguaaaaal!!!";
   }else{
mail($email$asunto$mensaje$cabeceras);   
   echo 
"Señor usuario $usuario contraseña $pass2 ha sido enviado!"
}  }
?>
Asi deberia funcionar todo de maravilla pero no pasa eso.

no se donde está el problema ayuda por favor ya lo movi de aca para alla mil veces.

nuevamente gracias por los aportes generados
  #15 (permalink)  
Antiguo 29/12/2009, 02:04
Avatar de urgido  
Fecha de Ingreso: febrero-2005
Mensajes: 2.351
Antigüedad: 19 años, 2 meses
Puntos: 25
Respuesta: ¿Olvidó su contraseña? php y mysql

<?
include("dbconexion.php");
if (isset($_POST["usuario"])) {
$usuario = $_POST["usuario"];
$pass2 = $_POST["pass2"];
$checpass = mysql_query("SELECT * FROM usuarios WHERE usuario='$usuario'");
$query = "UPDATE usuarios SET pass1='".$pass2."' WHERE usuario='".$usuario."'";
$fila = mysql_fetch_array($checpass);
if ($pass2 == $fila['pass1']) {
echo "Estas iguaaaaal!!!";
}else{
mysql_query($query);
mail($email, $asunto, $mensaje, $cabeceras);
echo "Señor usuario $usuario contraseña $pass2 ha sido enviado!";
} }
?>
__________________
Hospedaje Web al mejor costo!
  #16 (permalink)  
Antiguo 29/12/2009, 08:23
 
Fecha de Ingreso: septiembre-2008
Mensajes: 67
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: ¿Olvidó su contraseña? php y mysql

Sigue igual cuando dejo el campo de pass2 vacio me tira estas igual cuando le pongo una contraseña me dice que se cambio pero no es cierto, y cuando pongo la misma contraseña me dice que la cambio, es como si no leyera en la base de datos, ya me habia funcionado soy un nabo, por haberlo cambiado, si alguien ve donde puedo estar fallando o se le ocurre algo bienvenido será,
esta es la estructura de mi tabla por si las moscas
Código HTML:
CREATE TABLE `usuarios` (
  `id` bigint(20) NOT NULL auto_increment,
  `usuario` char(100) NOT NULL,
  `responsable` varchar(255) NOT NULL default '',
  `email` char(100) NOT NULL default '',
  `telefono` char(100) NOT NULL default '',
  `pass1` char(100) NOT NULL default '',
  `nivel` char(1) NOT NULL default '2',
  `activate` varchar(20) NOT NULL default '',
  `estado` varchar(1) NOT NULL default '1',
  PRIMARY KEY  (`id`),
  KEY `id` (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
  #17 (permalink)  
Antiguo 30/12/2009, 17:08
 
Fecha de Ingreso: septiembre-2008
Mensajes: 67
Antigüedad: 15 años, 7 meses
Puntos: 0
APORTE CON SOLUCION ¿Olvidó su contraseña? php y mysql

problema resuelto///

mi problema estaba en el formulario, cuando ponia el value="<? echo "".$_SESSION['s_usuario']."" ?>" dejaba un espacio y por eso no me reconocia el usuario y por eso no validaba nada mas, les dejo el form y el usuario para alguien que lo pueda aprobechar:

form:

Código HTML:
<form id="form1" name="form1" method="post" action="cambiopass.php">
    <label><? echo "".$_SESSION['s_usuario']."" ?> 
    <input name="usuario" type="hidden" id="usuario" value="<? echo "".$_SESSION['s_usuario']."" ?>" checked="checked" />
    </label>
    <input name="nuevapass" type="text" id="nuevapass" value="ponga aquí su contrase&ntilde;a nueva" size="32" />
    <input type="submit" name="enviar" id="enviar" value="Enviar" />
    <label></label>
    <label></label>
  </form> 
en el mismo archivo pero mas arriba el codigo de cambio de pass

Código PHP:
<? 
include("dbconexion.php"); 
if (isset(
$_POST["usuario"])) { 
$usuario $_POST["usuario"]; 
$nuevapass $_POST["nuevapass"]; 
$checpass mysql_query("SELECT * FROM usuarios WHERE usuario='$usuario'"); 
$query "UPDATE usuarios SET pass1='".$nuevapass."' WHERE usuario='".$usuario."'"
$nuevapass2 "ponga aquí su contraseña nueva";
if(
$nuevapass==$nuevapass2) {
echo 
"ponga una contraseña valida";
}else{
$fila mysql_fetch_array($checpass); 
if (
$nuevapass == $fila['pass1']) { 
echo 
"Estas iguaaaaal!!! <br></br> La contraseña nueva ingresada ''$nuevapass'' es igual a la anterior";
}else{
if(
$usuario==NULL|$nuevapass==NULL) {
echo 
"un campo est&aacute; vacio.";
}else{
$minuser_len 6//username minimum length
if (strlen($nuevapass) < $minuser_len || strlen($email) < $minemail_len){
echo 
"La contraseña debe tener como mínimo 6 digitos";
}else{
mysql_query($query);
echo 
"Señor usuario $usuario contraseña $nuevapass ha sido enviado!"
} } } } }
?>

Gracias a todos por sus aportes y su tiempo!!!!
!!!FELIZ AÑO NUEVO PARA TODOS¡¡¡
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.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 02:33.