Estoy comenzando con la POO, y me ha surgido una duda, me puse a leer en internet, y encuentro muchas respuestas y varias se contradicen entre sí. Otras explican que no se debe hacer de tal manera porque, por más que funcione correctamente no es lo adecuado en base a las buenas técnicas de programación.
Bien seguramente mi duda es bien simple para los que saben o tienen un poco de práctica en el tema.
Tengo un sitio web en el cual estoy creando un sistema login y registro, el mismo tiene las contraseñas encriptadas con un Salt aleatorio que creo para cada usuario al momento del registro.
Bien en el archivo clases/Usuario.php tengo la siguiente clase
Código PHP:
Ver original
<?php class Usuarios { public $idusuario = null; public $usuario = null; public $pass = null; public $nombre = null; public $apellido = null; public $mail = null; public $tipousuario = null; public $idlocal = null; public $esadmin = null; public $puntos = null; public $salt = null; { { } { } } public function loginUsuario() {...63 lines } //Funcion de registro de usuarios public function registraUsuario() { $success = false; try { //Tomamos los valores del post $this->usuario = $_POST['usuario']; $this->pass = $_POST['pass']; $this->nombre = $_POST['nombre']; $this->apellido = $_POST['apellido']; $this->tipousuario = $_POST['tipousuario']; $this->idlocal = $_POST['idlocal']; $this->esadmin = $_POST['esadmin']; //Nos conectamos a la base de datos $con = new mysqli(DB_HOST, DB_USUARIO, DB_PASSWORD, DB_DATABASE); //Preparamos el query SQL $sql = 'INSERT INTO usuarios VALUES (usuario, contrasena, salt, nombre, apellido, mail, tipo_usuario, id_local)' . 'VALUES (?,?,?,?,?,?,?,?)'; //Creamos la sentencia preparada a utilizar $pre = $con->prepare($sql); $pre->bind_param('ssssssii', $this->usuario, $this->pass, $this->salt, $this->nombre, $this->apellido, $this->mail, $this->tipousuario, $this->idlocal); $pre->execute(); $con->close(); $success = true; return $success; } catch (Exception $ex) { return $ex->getMessage(); } }
Y tengo otra clase que genera contraseñas que se encuentra en el archivo 'clases/generaSalt.php'
Código PHP:
Ver original
<?php class generaSalt { public $longitud; public $cadena; public $salt; public function crearSalt(){ //Se define una cadena de caractares. Te recomiendo que uses esta. $this->cadena = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890"; //Obtenemos la longitud de la cadena de caracteres //Se define la variable que va a contener la contraseña $this->salt = ""; //Se define la longitud de la contraseña, en mi caso 10, pero puedes poner la longitud que quieras $this->longitud=50; //Creamos la contraseña for($i=1 ; $i<=$this->longitud ; $i++){ //Definimos numero aleatorio entre 0 y la longitud de la cadena de caracteres-1 //Vamos formando la contraseña en cada iteraccion del bucle, añadiendo a la cadena $pass la letra correspondiente a la posicion $pos en la cadena de caracteres definida. } return $this->salt; } }
Bien ahora viene mi duda.
Quiero utilizar correctamente el método 'crearSalt' de la clase generarSalt, en el método registraUsuario de la clase Usuarios
Como podría introducirlo correctamente dentro del try de registraUsuarios?
Muchas gracias!