Foros del Web » Programando para Internet » PHP »

Problema con cambiar contraseña php y mysql

Estas en el tema de Problema con cambiar contraseña php y mysql en el foro de PHP en Foros del Web. Hola que tal como les va, aqui ando buscando una solucion a mi problema, hace poco gracias a ustedes pude terminar con el codigo que ...
  #1 (permalink)  
Antiguo 28/12/2009, 16:07
 
Fecha de Ingreso: septiembre-2008
Mensajes: 67
Antigüedad: 15 años, 6 meses
Puntos: 0
Problema con cambiar contraseña php y mysql

Hola que tal como les va, aqui ando buscando una solucion a mi problema, hace poco gracias a ustedes pude terminar con el codigo que me generaba una nueva contraseña si es que la perdia el usuario, bueno ahora me estoy volviendo loco queriendo generar un cambio de contraseña, o sea cuando el usuario se loguea y quiere cambiar su contraseña, como hago esto la verdad es que quise juntar varias cosas pero me he mareado, cualquier ayuda me vendria util.

Publico el codigo de regenerar contraseña validando que el correo exista en la base de datos

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["email"])) {
   
$email $_POST["email"];
   
$query "UPDATE usuarios SET pass1='".$p_gen."' WHERE email='".$email."'"
   
$checkemail mysql_query("SELECT email FROM usuarios WHERE email='$email'");
   
$email_exist mysql_num_rows($checkemail);
   if (
$email_exist==0) {
   echo 
"La cuenta de correo $email no se encuentra en nuestra base de datos, intente nuevamente";
   }else{
   
mysql_query($query) or die(mysql_error()); 
   
$asunto =    'Nuevo pass.';  
   
$mensaje =   "su nuevo pass es: $p_gen";  
   
$cabeceras 'From: [email protected]"\r\n" .  
                         
'Reply-To: [email protected]"\r\n" .  
                         
'X-Mailer: PHP/' phpversion();  
 
   
mail($email$asunto$mensaje$cabeceras);   
   echo 
"Su nuevo pass ha sido enviado!";
}
}
?>
para quien le pueda servir, bueno ahora lo que estoy tratando de hacer no puedo mas ya se me caen las pestañas, sale de un form con esta estructura:
Código PHP:
<?
  $usuario 
= ($_SESSION['s_usuario']);
   
?>
  </p>
  <div align="center">
    <form id="recupero" name="recupero" method="post" action="cambiopass2.php">
      <label></label>
      <div align="center">
        <label>
        <div align="center">Usuario:<br />
          <input name="usuario" type="text" id="usuario" value=" <? echo"".$_SESSION['s_usuario'].""?> "/>
        </div>
        </label>
        <div align="center"><br />
          Contrase&ntilde;a Actual:
          <input name="pass2" type="text" id="pass2" size="32" />
          Nueva Contrase&ntilde;a
          :
          <input name="pass3" type="text" id="pass3" size="32" />
        </div>
        <label>
        <input type="submit" name="enviar" id="enviar" value="Enviar" />
        </label>
        <br />
      </div>
    </form>
Aqui el codigo que intento generar


Código PHP:
<? 
   
include("dbconexion.php"); 
   if (isset(
$_POST["usuario"])) {
   
$select mysql_query("SELECT pass1 FROM usuarios WHERE usuario='".$_POST["usuario"]."'");
   
$pass2 $_POST["pass2"]; 
   
$pass3 $_POST["pass3"]; 
   
$usuario $_POST["usuario"];
   if (
$select $pass3){
   echo 
" $usuario La contraseña $pass1 es igual a la anterior selecciona otra por favor"
   }else{
   echo 
"voy y lo cambio, o sea despues pongo el codigo para reemplazarlo aqui";
}
}
?>
  #2 (permalink)  
Antiguo 28/12/2009, 16:11
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Problema con cambiar contraseña php y mysql

Cita:
UPDATE usuarios SET password = 'mi nuevo password' WHERE id = 13
la verdad no entiendo tu problema, es algo sencillo...

la idea es actualizar la contraseña utilizando una columna única en la BD, como puede ser el ID del usuario...

obviamente, debes tenerlo almacenado en sesión para poder comparar correctamente, y bingo!!


Edito: lo que si esta mal, es utilizar el email o el ID del usuario a través de POST ... imagina que yo hago una simulación de tu formulario y pongo arbitrariamente cualquier email existente en tu BD ... ¿que pasaría??

es por eso, que los datos importantes es mejor almacenarlos en sesión... y jamas pasarlos por hidden en formularios...
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 28/12/2009, 16:38
 
Fecha de Ingreso: septiembre-2008
Mensajes: 67
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: Problema con cambiar contraseña php y mysql

Cita:
Iniciado por pateketrueke Ver Mensaje
la verdad no entiendo tu problema, es algo sencillo...

la idea es actualizar la contraseña utilizando una columna única en la BD, como puede ser el ID del usuario...

obviamente, debes tenerlo almacenado en sesión para poder comparar correctamente, y bingo!!


Edito: lo que si esta mal, es utilizar el email o el ID del usuario a través de POST ... imagina que yo hago una simulación de tu formulario y pongo arbitrariamente cualquier email existente en tu BD ... ¿que pasaría??

es por eso, que los datos importantes es mejor almacenarlos en sesión... y jamas pasarlos por hidden en formularios...
Gracias por contestar amigo, la verdad es que si, no entendiste, mi consulta es, como hacer el reemplazo ya lo tengo resuelto, como puse arriba en el primer codigo lo voy a estar acomodando para lo que trato de hacer, ahora mi problema es cuando los datos salen del form y lo envia al archivo para comparar contraseñas no me verifica la contraseña si es la misma, como ves estoy sacando el nombre de usuario con una variable de session, con lo cual no corro riesgos ya que en realidad cambiamos la clave de nuestra session de login, ahora lo que necesito es cuando me llega la variable de usuario por post desde nuestro form (que ya explico que viene de una session) compare si la contraseña que puso como actual
Código PHP:
$pass2 
no sean iguales, asi poder realizar el cambio de la contraseña enviada en el form como contraseña nueva
Código PHP:
$pass3 
  #4 (permalink)  
Antiguo 30/12/2009, 17:10
 
Fecha de Ingreso: septiembre-2008
Mensajes: 67
Antigüedad: 15 años, 6 meses
Puntos: 0
APORTE CON SOLUCION Respuesta: Problema con cambiar 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¡¡¡
  #5 (permalink)  
Antiguo 31/12/2009, 12:47
Avatar de Esck21  
Fecha de Ingreso: septiembre-2009
Mensajes: 50
Antigüedad: 14 años, 7 meses
Puntos: 1
Respuesta: Problema con cambiar contraseña php y mysql

Hey....

Cita:
if ($select = $pass3){
echo " $usuario La contraseña $pass1 es igual a la anterior selecciona otra por favor";
}else{
echo "voy y lo cambio, o sea despues pongo el codigo para reemplazarlo aqui";
}
es : if($select == $pass3) {...}
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 00:29.