PHP - validacion de contraseñas con md5

 
Vista:
Imágen de perfil de jeinner
Val: 7
Ha aumentado su posición en 20 puestos en PHP (en relación al último mes)
Gráfica de PHP

validacion de contraseñas con md5

Publicado por jeinner (20 intervenciones) el 18/05/2015 21:29:40
Buen dia señores la Web del programador:

He intentado validar un inicio de sesion con contraseñas encriptadas con md5 pero no me reconoce: error los datos no coinciden. He cambiado la longitud del varchar en el campo a 32 y tampoco, ya que cuando coloco la contraseña encriptada si puedo iniciar sesion. Me esoy quedando ciego tratando de resolver este error. Soy nuevo en PHP y quisiera terminar este trabajo fiinal de la Universidad.

Gracias por su colaboracion.

Este es mi codigo:
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
<?php
//establecer conexion con la bd
include("conectar_bd.php");
 
//recojo las variables enviadas por el formulario
$cedula     = $_POST['cedula'];
$nombre1    = $_POST['nombre1'];
$nombre2    = $_POST['nombre2'];
$apellido1  = $_POST['apellido1'];
$apellido2  = $_POST['apellido2'];
$correo     = $_POST['correo'];
$telefono   = $_POST['telefono'];
$direccion  = $_POST['direccion'];
$edad       = $_POST['edad'];
$password   = $_POST['password'];
$password2  = $_POST['password2'];
 
//se verifica la contraseña
if($password != $password2){
    die('las claves no coinciden por favor Revise!<br><br><a href="registrousuarios.php">Volver</a>');
}
//se encripta la contraseña
$password = md5($password);
 
//creo el quuery de insercion a mysql
$sql = "INSERT INTO  paciente(cedulapaciente, nombre1, nombre2, apellido1, apellido2, correo, telefono, direccion, edad, password)
VALUES ('$cedula', '$nombre1', '$nombre2', '$apellido1', '$apellido2', '$correo', '$telefono', '$direccion', '$edad','$password')";
//creo el recordset con el query para ejecutarlo
$rs = mysql_query($sql)or die(mysql_error());
 
//verifico si los datos se agregaron o no
if(mysql_affected_rows()>0){
	//si agrego el registro, sin error muestro un simple mensaje
	echo "Tus datos se han registrado exitosamente";
}
else{
	//caso contrario que haya habido un error lo reenvio a la pagina del formulario
	$msj = "se ha producido un error intente de nuevo";
	header('location:registrousuarios.php?mensaje = msj');
}
//libero el recordrset de la ejecucion del query
//cierro la conexion
mysql_close();
 
echo '
<h2>Registro completo</h2>
<h5>Gracias por registrarse en nuestro portal, ya puede ingresar como usuario</h5>
<a href="sesionini.php">Ingrese</a>
';
?>

este es el manejador de sesiones:
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
<?php
 
include("conectar_bd.php");
 
$usuario=$_POST["usuario"];
$password=$_POST["password"];
 
$paciente = mysql_query("SELECT * FROM paciente WHERE cedulapaciente = '$usuario' AND password = '$password'");
$medico = mysql_query("SELECT * FROM medico WHERE cedulamedico = '$usuario' AND password = '$password'");
$administrador = mysql_query("SELECT * FROM administrador WHERE cedulaadmin = '$usuario' AND password = '$password'");
 
if(mysql_num_rows($paciente) > 0) {
	session_start();
	$_SESSION['paciente']="$usuario";
	header("Location: portalpaciente.php");
 
mysql_free_result($paciente);
exit();
}
else if(mysql_num_rows($medico) > 0) {
    session_start();
    $_SESSION['medico']="$usuario";
    header("Location: portalmedico.php");
 
mysql_free_result($medico);
exit();
}
else if(mysql_num_rows($administrador) > 0) {
    session_start();
    $_SESSION['administrador']="$usuario";
    header("Location: portaladministrador.php");
 
mysql_free_result($administrador);
exit();
}
else {
$mensajeaccesoincorrecto = "El usuario y la clave no coinciden, por favor vuelva a introducirlos.";
echo $mensajeaccesoincorrecto; }
 
?>
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
1
Responder
sin imagen de perfil

validacion de contraseñas con md5

Publicado por Maxi (13 intervenciones) el 18/05/2015 23:59:39
La línea 6 del archivo de manejo se sesiones debería ser así:

1
$password = md5($_POST["password"]);
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
Imágen de perfil de jeinner
Val: 7
Ha aumentado su posición en 20 puestos en PHP (en relación al último mes)
Gráfica de PHP

validacion de contraseñas con md5

Publicado por jeinner (20 intervenciones) el 19/05/2015 00:30:18
Muchas gracias Maxi, no lo imaginaba muy novato!. Gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

validacion de contraseñas con md5

Publicado por Maxi (13 intervenciones) el 19/05/2015 06:11:44
Me alegra que te haya sido útil la respuesta. Lo que me gustaría además es advertirte que si el código de inicio de sesión es real (y no sólo de ejemplo para poder hacer tu pregunta) corres un gran riesgo de inyección SQL. Cualquiera que ponga como nombre de usuario "'or '1'=1-- " (sin las comillas doble de principio y fin, al final hay un carácter de espacio) podrá loguerse sin problemas.

Deberías pasar tu variable $_POST["usuario"] por la función mysql_escape_string.
1
mysql_escape_string($usuario=$_POST["usuario"]);


En realidad lo mejor sería que trabajaras con PDO_MYSQL dado que la forma en que te conectas a MySQL está obsoleta a partir de PHP 5.5.0 y será eliminada en el futuro.

Te dejo unos links al respecto:

Inyección MySQL:
http://es.wikipedia.org/wiki/Inyecci%C3%B3n_SQL

Funciones de conexión obsoletas:
http://php.net/manual/es/function.mysql-connect.php

Conexión PDO:
http://php.net/manual/es/ref.pdo-mysql.php
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
Imágen de perfil de jeinner
Val: 7
Ha aumentado su posición en 20 puestos en PHP (en relación al último mes)
Gráfica de PHP

validacion de contraseñas con md5

Publicado por jeinner (20 intervenciones) el 20/05/2015 05:29:03
Gracias nuevamente, revisare la documentacion, estoy tratando de hacer un sistema de reserva de citas medicas en php y mysql para un trabajo final de universidad. Gracias por su colaboracion.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar