Para este ejemplo debemos considerar algunas factores:
<?php session_start(); //inciamos sesión
//verificamos si esta saliendo de la sesión, ya veremos mas adelante como asignamos el valor.
if (isset($_GET['logout']) && $_GET['logout']==1) session_destroy();
$msg = 'Ingresa tus datos'; //mensaje según las acciones.
$muestraForm = true; // variable para decidir si mostramos el formulario
//comprobamos si se ha pasado la contraseña y el usuario
if (isset($_POST['password']) && isset($_POST['usuario'])) {
$usuarioPost = strip_tags(html_entity_decode($_POST['usuario'], ENT_NOQUOTES, "UTF-8"));
$passwordPost = strip_tags(html_entity_decode($_POST['password'], ENT_NOQUOTES, "UTF-8")); // ejemplo 'miclavesecreta'
/********************
* en esta sección podemos hacer una consulta a nuestra base de datos con mysqli_query utilizando el usuario como condición y de la fila que obtenemos vamos a hacer una comparación de valores del campo que contiene la contraseña.
Una forma de obtener la clave sería $password = $row['password'] ; * segun se llame el campo que la almacena, ya no necesitamos cifrarla porque cuando se guardó debimos hacerlo. Una forma de hacerlo es con password_hash, como lo hicimos en una publicación anterior.
ejemplo:
$password= strip_tags(html_entity_decode($_POST['password'], ENT_NOQUOTES, "UTF-8"));
$valorParaGuardar = password_hash($password, PASSWORD_DEFAULT);
entonces el valor que nos devuelve y que guardamos sería algo como :
$2y$10$QrSyPejWHpo0sxfd1ZnPTObKhIkv4VNQBcmz2SsbBGN/29nN9fhtu
regresando al código, ya tenemos el valor guardado en la base de datos
**************************/
$passwordCampo = $row['password'] ; // osea $2y$10$QrSyPejWHpo0sxfd1ZnPTObKhIkv4VNQBcmz2SsbBGN/29nN9fhtu
// hacemos la comprobación del valor $_POST y del CAMPO
if (password_verify($passwordPost, $passwordCampo)) {
$msg = 'Bienvenido';
$PassOk = true; // asignamos un valor verdadero para que nos deje pasar a secciones privadas.
$muestraForm = false; // no necesitamos mostrar el formulario
}else{
$msg 'password Invalido.'; // un mensaje mostrando que no coincidieron las claves
//asignamos un valor negativo para el acceso a zonas restringidas
$PassOk = false;
}
} // terminamos if si recibimos datos para hacer login
if ($PassOk) {
//accedemos al panel privado o mostramos contenido protegido.
echo '<p>'.$msg.' Has accedido correctamente</p>';
// mostramos el enlace para cerrar sesión
echo '<p><a href="?logout=1">Cerrar Sesión</a></p>';
}
if($muestraForm){
//al no pasar contraseña enviamos al formulario de inicio
echo '<h2>'.$msg.'</h2>
<form name="form" method="post" action="">
<label for="usuario">Usuario:</label><br>
<input type="text" id="usuario" name="usuario" value=""><br>
<label for="password">Contraseña:</label><br>
<input type="password" id="password" name="password" value="">
<input type="submit" value="Login">
</form>';
}
?>
Este ejemplo es una continuación de la publicación
Guardar registro con password_hash