Hola amigos! Espero que me podrías ayudar.
Bueno! Tengo un formulario donde los usuarios deberán introducir datos, y sus datos se registran en la base de datos, y se le envía un email con la información introducida. Allí todo va bien.
Una cosa que no consigo es además de mandarles los datos que hayan introducido, quiero mandarles su número de identificación (id
). ¿Sería posible?
Gracias!!!
Respuestas
Para poder ayudarte necesitaríamos conocer más detalles de la aplicación. Así de primeras, no deberías tener ningún problema para obtener el id
del usuario. Simplemente haz una consulta en la base de datos después de guardar la información y ya podrás acceder al valor de la columna id
.
No obstante, mi recomendación sería que no enviaras el id
el usuario. En primer lugar porque es una información que no le sirve para nada. En segundo lugar, porque es uno de los datos que se considera "sensible" desde el punto de vista de la seguridad y se suele recomendar no hacerlo público (por ejemplo no lo incluyas tampoco como parte de la URL).
@javiereguiluz
Gracias por su respuesta. Estoy usando ajax, javascript, php y mysql.
Es un concurso que estoy haciendo. Y lo que prentendo es asignar un número de identificación a cada concursante, mandándoles el id o generar un número automaticamente. Dicho número tendré que saberlo.
Gracias de nuevo por tu ayuda!
@KhalifaBoulbaye
@KhalifaBoulbaye es muy cierto lo que te dice Javier. Yo te recomendaría crear un nuevo campo (con valor único) en el registro de tu usuario. Algo como: code - random:
$rand = random(0,99999);
En tu caso, para asegurarme que el valor random que voy a almacenar no existe registrado con otro usuario consulto todos los registros. Si no existe, lo almaceno en el nuevo usuario. Una vez terminado el registro lo envío al usuario.
Saludos!
@cristian_angulo
@cristian_angulo aunque mi recomendación iba más por no mostrar el id
al usuario pero seguir manteniendo los valores id
secuenciales, es ciero que cada vez se escucha más la idea de no generar id
secuenciales para cosas importantes como por ejemplo el registro de usuarios.
De hecho, últimamente he leído a algún programador PHP famoso proponer el uso de códigos UUID para identificar a cada usuario. Estos códigos UUID son como una versión avanzada de la solucuón random
que propones, ya que consta de varias secuencias aleatorias generadas de la siguiente manera:
public static function uuid() { return sprintf('%04x%04x-%04x-%04x-%04x-%04x%04x%04x', mt_rand(0, 0xffff), mt_rand(0, 0xffff), mt_rand(0, 0xffff), mt_rand(0, 0x0fff) | 0x4000, mt_rand(0, 0x3fff) | 0x8000, mt_rand(0, 0xffff), mt_rand(0, 0xffff), mt_rand(0, 0xffff) ); }
En cualquier caso, esta solución parece un cambio demasiado drástico para el problema que nos planteaba @KhalifaBoulbaye.
@javiereguiluz
Perdonad mi ignorancia, llevo poco tiempo en PHP y MySQL, y lo que has puesto Javier me suena a chino!!!
Lo de random()
que propones Cristian, me parece un poco más fácil. Pero al ahora de enviarlo por email ¿cómo sería? Imagino que habrá que hacer una consulta, no?
Lo que yo envío a los usuarios son los datos introducidos en el formulario, sin necesidad de hacer ningún consulta.
@KhalifaBoulbaye
Para obtener el valor del id
asociado al usuario que acabas de insertar en la base de datos puedes usar la función mysqli_insert_id()
de PHP. Así te evitas tener que hacer una consulta adicional.
Aquí te explican la función y te muestran algunos ejemplos de cómo se usa: php.net/mysqli_insert_id
@javiereguiluz
¡Gracias por vuestra ayuda!
He consiguido otra forma de hacerlo. Lo que he hecho que darle al usuario que introduzca su propio número identificación.
@KhalifaBoulbaye
Darle al usuario la posibilidad de elegir su propio identificador no parece una práctica muy segura. Si el código de identificación es un número, es muy probable que se produzcan colisiones (¿qué sucede cuando dos usuarios diferentes eligen el número 10
como identificador?). Y si el identificador no es un número y tiene un formato más avanzado, entonces será difícil que el usuario genere su propio identificador.
@javiereguiluz
Es la única forma que me pareció más fácil. Tienes razón que no es un forma segura. Es solo temporal, es un formulario de inscripción, y tiene un plazo de terminado. Respecto que al que se repita el mismo identificador, dos usuarios no pueden tener el mismo número. Lo he controlado con php.
@KhalifaBoulbaye