Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Campo contraseña

Estas en el tema de Campo contraseña en el foro de Mysql en Foros del Web. Tengo un campo en una tabla, que va a actuar como contraseña para el logueo en la página web. ¿Cómo hago para que, al crear ...
  #1 (permalink)  
Antiguo 13/05/2008, 03:43
 
Fecha de Ingreso: abril-2008
Mensajes: 34
Antigüedad: 16 años
Puntos: 0
Campo contraseña

Tengo un campo en una tabla, que va a actuar como contraseña para el logueo en la página web.
¿Cómo hago para que, al crear registros, este campo se rellene al azar?

Gracias, un saludo
  #2 (permalink)  
Antiguo 13/05/2008, 09:29
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Re: Campo contraseña

Esto te generara un numero aleatorio, a partir de aqui puedes hacer lo que quieras....

Quim


De la ayuda de MySQL

Cita:
RAND(), RAND(N)

Returns a random floating-point value v in the range 0 <= v < 1.0. If a constant integer argument N is specified, it is used as the seed value, which produces a repeatable sequence of column values.

mysql> SELECT RAND();
-> 0.9233482386203
mysql> SELECT RAND(20);
-> 0.15888261251047
mysql> SELECT RAND(20);
-> 0.15888261251047
mysql> SELECT RAND();
-> 0.63553050033332
mysql> SELECT RAND();
-> 0.70100469486881
mysql> SELECT RAND(20);
-> 0.15888261251047
The effect of using a non-constant argument is undefined. As of MySQL 5.0.13, non-constant arguments are disallowed.

To obtain a random integer R in the range i <= R < j, use the expression FLOOR(i + RAND() * (j – i). For example, to obtain a random integer in the range the range 7 <= R < 12, you could use the following statement:

SELECT FLOOR(7 + (RAND() * 5));
You cannot use a column with RAND() values in an ORDER BY clause, because ORDER BY would evaluate the column multiple times. However, you can retrieve rows in random order like this:

mysql> SELECT * FROM tbl_name ORDER BY RAND();
ORDER BY RAND() combined with LIMIT is useful for selecting a random sample from a set of rows:

mysql> SELECT * FROM table1, table2 WHERE a=b AND c<d -> ORDER BY RAND() LIMIT 1000;
Note that RAND() in a WHERE clause is re-evaluated every time the WHERE is executed.

RAND() is not meant to be a perfect random generator, but instead is a fast way to generate ad hoc random numbers which is portable between platforms for the same MySQL version.
  #3 (permalink)  
Antiguo 14/05/2008, 02:30
 
Fecha de Ingreso: abril-2008
Mensajes: 34
Antigüedad: 16 años
Puntos: 0
Re: Campo contraseña

Ok, entonces si quiero que se rellene ese campo automaticamente al crear un registro, con un valor de 6 cifras.

Debería poner en valor predeterminado esto: FLOOR(100000 + RAND() * (999999 – 100000)

Correcto?.
  #4 (permalink)  
Antiguo 14/05/2008, 04:13
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Re: Campo contraseña

Si o algo asi.

Quim
  #5 (permalink)  
Antiguo 15/05/2008, 01:14
 
Fecha de Ingreso: abril-2008
Mensajes: 34
Antigüedad: 16 años
Puntos: 0
Re: Campo contraseña

Lo pongo en el valor predeterminado, y en vez de un numero me sale como valor de campo lo que he puesto "FLOOR(100000 + RAND() * (999999 – 100000)".
  #6 (permalink)  
Antiguo 15/05/2008, 02:31
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Re: Campo contraseña

No... tienes que ponerlo en la sentencia INSERT INTO donde iria el valor del campo.
Tambien se podria hacer con un trigger... tu mismo.
Quim

Última edición por quimfv; 15/05/2008 a las 02:48
  #7 (permalink)  
Antiguo 15/05/2008, 03:59
 
Fecha de Ingreso: abril-2008
Mensajes: 34
Antigüedad: 16 años
Puntos: 0
Re: Campo contraseña

Perdona, es que no habia probado nada parecido. No consigo que me salga, he probado con un update para modificar el de los registros que ya tengo almacenados y tambien me sale lo que he escrito en vez de un número.
Tambien he probado con insert into y pasa lo mismo.

Gracias por tu ayuda
  #8 (permalink)  
Antiguo 15/05/2008, 04:32
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Re: Campo contraseña

No tengo aquí mysql pero si me pasas lo que intentas me lo miro....

Quim
  #9 (permalink)  
Antiguo 15/05/2008, 04:40
 
Fecha de Ingreso: abril-2008
Mensajes: 34
Antigüedad: 16 años
Puntos: 0
Re: Campo contraseña

He probado estas dos cosas

update alumnos set password='FLOOR(100000 + RAND() * (999999 – 100000))'
where password<'100000' (ahora mismo registros tienen numeros del 1 al 30 que puse manualmente)

Tambien sin comas:
update alumnos set password=FLOOR(100000 + RAND() * (999999 – 100000))
where password<'100000' (así da error)

Y:
insert into alumnos(password)
FLOOR(100000 + RAND() * (999999 – 100000))

insert into alumnos(password)
values('FLOOR(100000 + RAND() * (999999 – 100000))')

insert into alumnos(password)
values(FLOOR(100000 + RAND() * (999999 – 100000)))

Todo eso he probado más o menos jeje
  #10 (permalink)  
Antiguo 15/05/2008, 05:02
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Re: Campo contraseña

De entrada simplifica 999999 – 100000=899999.

Esta tarde puedo mirar me lo con mysql ahora no.

Pero, password es varchar por tanto espera un texto mira que funcion te puede convertir el resultado de FLOOR(...) a texto y no pongas comas...


Luego te digo algo...


Quim
  #11 (permalink)  
Antiguo 15/05/2008, 07:20
 
Fecha de Ingreso: abril-2008
Mensajes: 34
Antigüedad: 16 años
Puntos: 0
Re: Campo contraseña

Ok, cuando puedas. Muchisimas gracias
  #12 (permalink)  
Antiguo 15/05/2008, 08:58
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Re: Campo contraseña

Tanto una como la otra me han funcionado a la perfección te paso todo el script:

Código:
DROP TABLE IF EXISTS `forum`.`users`;
CREATE TABLE  `forum`.`users` (
  `iduser` int(11) NOT NULL auto_increment,
  `password` varchar(6) default NULL,
  `name` varchar(45) NOT NULL,
  PRIMARY KEY  (`iduser`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;


insert into users(`password`,`name`)
values(FLOOR(100000 + RAND() * 899999),'quim');


insert into users(`name`)
values('Ziyad');

update users set `password`=FLOOR(100000 + RAND() * (999999-100000))
where `password` is null;
Errores que tenias, no encerrabas los nombres de los campos entre " ` " (password ademas creo que tiene algun significado especial, pero bueno con el delimitador no le molesta) y esto 999999 – 100000 me daba error, asi no 999999-100000.

Yo uso MySql 5.0.45-community-nt-log

Quim
  #13 (permalink)  
Antiguo 16/05/2008, 01:23
 
Fecha de Ingreso: abril-2008
Mensajes: 34
Antigüedad: 16 años
Puntos: 0
Respuesta: Campo contraseña

Funciona perfectamente, muchas gracias quim.

Te molesto un poco mas jeje, ¿hay una forma de que salgan tanto números como letras?

Gracias otra vez.
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 16:17.