Foros del Web » Programando para Internet » PHP »

problema al subir password a mysql con mi script

Estas en el tema de problema al subir password a mysql con mi script en el foro de PHP en Foros del Web. Holas, quisiera que alguien me ayudara con el siguiente código. Lo que hace es generar contraseñas aleatorias con numeros y palabras metidas en un array. ...
  #1 (permalink)  
Antiguo 12/01/2005, 04:37
Avatar de RUX
RUX
 
Fecha de Ingreso: enero-2004
Ubicación: Las Palmas de Gran Canari
Mensajes: 566
Antigüedad: 20 años, 3 meses
Puntos: 0
Exclamación problema al subir password a mysql con mi script

Holas, quisiera que alguien me ayudara con el siguiente código. Lo que hace es generar contraseñas aleatorias con numeros y palabras metidas en un array. El problema es que al finalizar el script siempre me introduce en la base de datos la ultima contraseña generada en todas las filas. Sin embargo si arrojo un ECHO antes y despues compruebo como funciona correctamente solo que al subir la contraseña, la sube repetida la ultima generada para todas las filas:

Código PHP:
// Compruebo que los datos existen en la base de datos
    
    // conecto a la base de datos
             
require('conexion.php');
    
mysql_select_db("$base_datos",$con) or die (mysql_error());
    
$consulta mysql_query("SELECT * FROM bandas WHERE validacion ='1'") or die (mysql_error());
    
$filas_num mysql_num_rows($consulta);
    if(
$filas_num != 0){

    
// CAMBIO LAS CONTRASEÑAS
    
while( $row mysql_fetch_array($consulta)){
    
        
// genero contraseñas
        
$number1 rand(1,30);
        
$number2 rand(1,300);
        
        
$palabras = array(
        
=> "rock",
        
=> "pop",
        
=> "soul",        
        
=> "canary",
        
=> "guitar",
        
=> "banjo",
        
=> "music",
        
=> "piano",
        
=> "organo",
       
10 => "xilophone",
       
11 => "rithm",
       
12 => "balada",  
       
13 => "bajo",
       
14 => "violin",
       
15 => "violonchelo",        
       
16 => "stevevai",
       
17 => "satriani",
       
18 => "pastorius",
       
19 => "wooten",
       
20 => "marlon",
       
21 => "rizk",
       
22 => "techno",
       
23 => "punk",
       
24 => "latin",
       
25 => "rizk",
       
26 => "techno",
       
27 => "instrumento",
       
28 => "industrial",
       
29 => "garage",
       
30 => "fusion",
        );
        
        
$cadena "$palabras[$number1]$number2";
    
    
// Codifico la contraseña x4
    
for ($i=1$i<=4$i++) {
    
$cadena base64_encode($cadena);
  }

        
$seleccionar mysql_query("SELECT pass FROM tabla WHERE validacion='1'");
        
mysql_query("UPDATE tabla SET pass='$cadena' WHERE validacion='1'");
        
$contar $contar 1;
        }
    if(isset(
$contar)) echo "Número de consultas realizadas: $contar";
        }else{
        echo 
"No se ha podido cambiar las contraseñas";
        } 
Muchas Gracias
SALUDOS
__________________
Rux.es - Sitio Personal | IslaRock.com - Todo Rock
  #2 (permalink)  
Antiguo 12/01/2005, 04:46
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Hola,

Cita:
UPDATE tabla SET pass='$cadena' WHERE validacion='1'
Hace lo que le mandas: poner ese valor en todos los registros que tengan validacion a '1'.

Por lo que veo, vas recorriendo uno a uno esos registros, asi que el where del update lo tendrias que poner tipo

id=$row[id]

para que modifique solo el de ese registro.

Salduos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #3 (permalink)  
Antiguo 12/01/2005, 05:05
Avatar de RUX
RUX
 
Fecha de Ingreso: enero-2004
Ubicación: Las Palmas de Gran Canari
Mensajes: 566
Antigüedad: 20 años, 3 meses
Puntos: 0
Holas Josemi, no lo entendí bién, pues existen 84 registros en mi tabla con esa validacion='1' ¿¿no deberia de aplicarlo a todos esos??. De cualquier manera funciona como tu dices

Muchas gracias!!
__________________
Rux.es - Sitio Personal | IslaRock.com - Todo Rock
  #4 (permalink)  
Antiguo 12/01/2005, 05:42
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Ese update esta dentro del while, asi que se ejecuta 84 veces igual, solo cambia el password. Es decir, pone el pass correspondiente a todos los registros con validacion=1. Y como no se modifica ese campo, siempre esa consulta modifica los 84 registros.

Es decir, tal como lo estabas haciendo, en cada iteracion modificabas todos los registros con activacion=1. Y la unica modificacion que quedaba era la ultima. Graficamente:

Primera iteracion del bucle: registro_1=pass1; registro_2=pass1
Segunda iteracion del bucle: registro_1=pass2; registro_2=pass2
tercera iteracion del bucle: registro_1=pass3; registro_2=pass3

y asi sucesivamente ibas pisando los valores actualizados en las iteraciones anteriores.

saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #5 (permalink)  
Antiguo 12/01/2005, 06:12
Avatar de RUX
RUX
 
Fecha de Ingreso: enero-2004
Ubicación: Las Palmas de Gran Canari
Mensajes: 566
Antigüedad: 20 años, 3 meses
Puntos: 0
ah vale, ahora sí
Muchas gracias otra vez por las molestias!!
SALUDOS
__________________
Rux.es - Sitio Personal | IslaRock.com - Todo Rock
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 18:53.