Good morning,
I am making a login and I have been investigating and improving it since the previous one that I had was not very efficient to say.
Code:
<?php
//Conectamos a la base de datos
require('/conexion.php');
//Obtenemos los datos del formulario de acceso
$userPOST = $_POST["userAcceso"];
$passPOST = $_POST["passAcceso"];
//Filtro anti-XSS
$userPOST = htmlspecialchars(mysqli_real_escape_string($conexion, $userPOST));
$passPOST = htmlspecialchars(mysqli_real_escape_string($conexion, $passPOST));
//Definimos la cantidad máxima de caracteres
//Esta comprobación se tiene en cuenta por si se llegase a modificar el "maxlength" del formulario
//Los valores deben coincidir con el tamaño máximo de la fila de la base de datos
$maxCaracteresUser0 = "20";
$maxCaracteresPassword0 = "60";
//Si los input son de mayor tamaño, se "muere" el resto del código y muestra la respuesta correspondiente
if(strlen($userPOST) > $maxCaracteresUser0) {
die('El nombre de usuario no puede superar los '.$maxCaracteresUser0.' caracteres');
};
if(strlen($passPOST) > $maxCaracteresPassword0) {
die('La contraseña no puede superar los '.$maxCaracteresPassword0.' caracteres');
};
//Pasamos el input del usuario a minúsculas para compararlo después con
//el campo "usernamelowercase" de la base de datos
$userPOSTMinusculas = strtolower($userPOST);
//Escribimos la consulta necesaria
$consulta = "SELECT * FROM `usuario0` WHERE User0='".$userPOSTMinusculas."'";
//Obtenemos los resultados
$resultado = mysqli_query($conexion, $consulta);
$datos = mysqli_fetch_array($resultado);
//Guardamos los resultados del nombre de usuario en minúsculas
//y de la contraseña de la base de datos
$userBD = $datos['User0'];
$passwordBD = $datos['Password0'];
//Comprobamos si los datos son correctos
if($userBD == $userPOSTMinusculas and password_verify($passPOST, $passwordBD)){
session_start();
$_SESSION['usuario'] = $datos['User0'];
$_SESSION['estado'] = 'Autenticado';
/* Sesión iniciada, si se desea, se puede redireccionar desde el servidor */
//Si los datos no son correctos, o están vacíos, muestra un error
//Además, hay un script que vacía los campos con la clase "acceso" (formulario)
} else if ( $userBD != $userPOSTMinusculas || $userPOST == "" || $passPOST == "" || !password_verify($passPOST, $passwordBD) ) {
die ('<script>$(".acceso").val("");</script>
Los datos de acceso son incorrectos');
} else {
die('Error');
};
?>
and I get this error or warning, but still does not log in and the connection to the database is correct.
These are the lines mentioned in the previous image:
11 $userPOST = htmlspecialchars(mysqli_real_escape_string($conexion, $userPOST));
12 $passPOST = htmlspecialchars(mysqli_real_escape_string($conexion, $passPOST));
37 $resultado = mysqli_query($conexion, $consulta);
38 $datos = mysqli_fetch_array($resultado);
This is the connection code.php:
<?php
// Conexión a la base de datos
$connection = mysqli_connect('localhost','root','12345678','web_juegos');
// Si la conexión falla, aparece el error
if($connection === false) {
echo 'Ha habido un error <br>'.mysqli_connect_error();
} else {
echo 'Conectado a la base de datos';
}
?>
I think it doesn't work for me because I'm not sending anything... or so I think
in the connection.php you have:
in the access you have
I recommend this in the connection.php:
in access something like this:
and your other actions with database must be with the same name