Error in PHP when starting session

0

Good morning,

I'm doing a login and I've been researching and improving it since the previous one I had was not very effective 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 do not login 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 does not work for me because I'm not sending anything ... or so I think

    
asked by Critical Ghost 25.04.2017 в 15:35
source

1 answer

1

in the connection.php you have:

**$connection** = mysqli_connect('localhost','root','12345678','web_juegos'); 

in the access you have

$userPOST = htmlspecialchars(mysqli_real_escape_string(**$conexion**, $userPOST));

I recommend this in the connection.php:

function conectarBD(){
// 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';
    }
    return $connection;
    }

in the access something like this:

include('conexion.php');
$conexion = conectarBD();

and your other actions with database must be with the same name

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);
    
answered by 25.04.2017 / 16:20
source