PHP - Problema al encriptar contraseña y despues hacer login

 
Vista:
sin imagen de perfil

Problema al encriptar contraseña y despues hacer login

Publicado por Armando (5 intervenciones) el 12/12/2017 13:12:25
Buenas a toda la comunidad.
He estado siguiendo un curso sobre PHP con el patrón MVC y la verdad que esta bien el curso, pero he tenido un problema al registrar un usuario encriptando la contraseña con la funcion crypt, porque al hacer el login utilizando la misma funcion, me salta el intento fallido de logeo y cuando lo hago sin la funcion crypt se loegea perfectamente.
adjunto el codigo para ver si pueden guiarme en el buen camino.

Funcion de Registro de usuario


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#Registro de Usuario
#-----------------------------------
 
public function registroUsuarioController(){
 
	if(isset($_POST["usuarioRegistro"])){
 
	if(preg_match('/^[a-zA-Z0-9]+$/', $_POST["usuarioRegistro"]) &&
		preg_match('/^[a-zA-Z0-9]+$/', $_POST["passwordRegistro"]) &&
		preg_match('/^[^0-9][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[@][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[.][a-zA-Z]{2,4}$/', $_POST["emailRegistro"])){
 
		$encriptarRegistro = crypt($_POST["passwordRegistro"], '$2y$07$asxx54ahjppf45sd87a5a4dDDGsystemdev$');
 
		$datosController = array("usuario"=>$_POST["usuarioRegistro"],
		   "password"=>$encriptarRegistro,
		   "email"=>$_POST["emailRegistro"]);
 
		$respuesta = Datos::registroUsuarioModel($datosController, "usuarios");
 
		if($respuesta == "success"){
 
			header("location:index.php?action=ok");
 
		}
 
			else{
 
				header("location:index.php");
 
			}
 
		}
	}
 
}

Funcion de logeo de usuario



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#Ingreso De Usuario
#---------------------------
 
public function ingresoUsuarioController(){
 
	if(isset($_POST["usuarioIngreso"])){
 
	if(preg_match('/^[a-zA-Z0-9]+$/', $_POST["usuarioIngreso"]) &&
		preg_match('/^[a-zA-Z0-9]+$/', $_POST["passwordIngreso"])){
 
			$encriptarIngreso = crypt($_POST["passwordIngreso"], '$2y$07$asxx54ahjppf45sd87a5a4dDDGsystemdev$');
 
			$datosController = array("usuario" => $_POST["usuarioIngreso"], "password" =>$encriptarIngreso);
 
			$respuesta = Datos::ingresoUsuarioModel($datosController, "usuarios");
 
			$intentos = $respuesta["intentos"];
			$usuario = $_POST["usuarioIngreso"];
			$maximoIntentos = 2;
 
			if($intentos < $maximoIntentos){
 
			if($respuesta["usuario"] == $_POST["usuarioIngreso"] &&  $respuesta["password"] == $encriptarIngreso){
 
				session_start();
 
				$_SESSION["validar"] = true;
 
				$intentos = 0;
 
				$datosIntentos = array("usuarioActual"=>$usuario, "actualizarIntentos"=>$intentos);
 
				$respuestaActualizarIntentos = Datos::intentosUsuarioModel($datosIntentos, "usuarios");
 
				header("location:index.php?action=usuarios");
 
			}
 
				else{
 
					++$intentos;
 
					$datosIntentos = array("usuarioActual"=>$usuario, "actualizarIntentos"=>$intentos);
 
					$respuestaActualizarIntentos = Datos::intentosUsuarioModel($datosIntentos, "usuarios");
 
					header("location:index.php?action=fallo");
 
				}
 
			}
 
			else{
 
				$intentos = 0;
 
				$datosController = array("usuarioActual"=>$usuario, "actualizarIntentos"=>$intentos);
 
				$respuestaActualizarIntentos = Datos::intentosUsuarioModel($datosController, "usuarios");
 
				header("location:index.php?action=fallo3intentos");
 
			}
 
		}
 
	}
 
}

Muchas gracias a todos y espero hallar la solución para seguir aprendiendo.

También he intentado con la funcion password_verify y me sigue negando el logeo.

Logeo con passwprd verify



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
#---------------------------
 
public function ingresoUsuarioController(){
 
	if(isset($_POST["usuarioIngreso"])){
 
	if(preg_match('/^[a-zA-Z0-9]+$/', $_POST["usuarioIngreso"]) &&
		preg_match('/^[a-zA-Z0-9]+$/', $_POST["passwordIngreso"])){
 
			//$encriptarIngreso = crypt($_POST["passwordIngreso"], '$2y$07$asxx54ahjppf45sd87a5a4dDDGsystemdev$');
 
			$datosController = $_POST["usuarioIngreso"];
 
			$respuesta = Datos::ingresoUsuarioModel($datosController, "usuarios");
 
			$intentos = $respuesta["intentos"];
			$usuario = $_POST["usuarioIngreso"];
			$maximoIntentos = 2;
 
			if($intentos < $maximoIntentos){
 
			if($respuesta["usuario"] == $_POST["usuarioIngreso"] && password_verify($_POST["passwordIngreso"], $respuesta["password"]) == TRUE){
 
				session_start();
 
				$_SESSION["validar"] = true;
 
				$intentos = 0;
 
				$datosIntentos = array("usuarioActual"=>$usuario, "actualizarIntentos"=>$intentos);
 
				$respuestaActualizarIntentos = Datos::intentosUsuarioModel($datosIntentos, "usuarios");
 
				header("location:index.php?action=usuarios");
 
			}
 
				else{
 
					++$intentos;
 
					$datosIntentos = array("usuarioActual"=>$usuario, "actualizarIntentos"=>$intentos);
 
					$respuestaActualizarIntentos = Datos::intentosUsuarioModel($datosIntentos, "usuarios");
 
					header("location:index.php?action=fallo");
 
				}
 
			}
 
			else{
 
				$intentos = 0;
 
				$datosController = array("usuarioActual"=>$usuario, "actualizarIntentos"=>$intentos);
 
				$respuestaActualizarIntentos = Datos::intentosUsuarioModel($datosController, "usuarios");
 
				header("location:index.php?action=fallo3intentos");
 
			}
 
		}
 
	}
 
}

La verdad que no se donde esta el fallo si estoy escribiendo mal las funciones o yo no se interpretar el código
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

Problema al encriptar contraseña y despues hacer login

Publicado por Armando (5 intervenciones) el 12/12/2017 15:15:58
Ya he encontrado la solución al problema. Era simplemente que en la base de datos en el campo contraseña tenia puesto un varchar de menos longitud de la que genera la función crypt y al cambiar en campo tipo varchar por uno de tipo text se soluciono el problema.

El código esta bien funciona a la perfección, lo malo es que un pequeño error de estos que no detectamos a tiempo, te tiene dándole vueltas al código bastante tiempo y finalmente el error no estaba en el código que tantas veces uno repasa o cambia para encontrar una solución.

Muchas gracias por la atención y espero que esto sirva para otras personas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
3
Comentar