I have a simple HTML page, which contains only one Login and password;
<form id="geral" action="valida.php" method="POST" accept-charset="iso-8859-1">
<h3><img border="0" src="financeiro/img/logo/1.png" width="80" height="70"> </h3>
<div class="form-group-login">
<label for="login"> </label>
<input name="login" id="login" type="text" placeholder="Digite o seu login..." />
</div>
<div class="form-group-login">
<label for="password"> </label>
<input name="password" type="password" id="password" placeholder="Digite sua senha..." />
<!--<button id="btn_login" class="botao">Entrar</button> -->
<button type="submit" id="enviar" value="enviar" class="botao" >Entrar</button>
</form>
After entering Login and password, it is directed to a file called valida.php. In this file, it only queries another file called security.php, whose file does any security analysis to log in or not.
valida.php
valida.php
//Inclui o arquivo com o sistema de segurança
require_once("seguranca.php");
//Verifica se um formulário foi enviado
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
//Salva duas variáveis com o que foi digitado no formulário
//Detalhe: faz uma verificação com isset() pra saber se o campo foi preenchido
$usuario = (isset($_POST['login'])) ? $_POST['login'] : '';
$senha = (isset($_POST['password'])) ? $_POST['password'] : '';
//Utiliza uma função criada no seguranca.php para validar os dados digitados
if (validaUsuario($usuario, $senha) == true) {
// O usuário e a senha digitados foram validados, manda pra pagina interna
header("Location: /financeiro/index.html");
}else {
// O usuário e/ou a senha são inválidos, manda de volta pro form de login
// Para alterar o endereço da pagina de login, verifique o arquivo
expulsaVisitante();
}
}
security.php
Seguranca.php
function validaUsuario($usuario, $senha) {
global $_SG;
//$cS = ($_SG['caseSensitive']) ? 'BINARY' : '';
// Usa a função addslashes para escapar as aspas
//$nusuario = addslashes($usuario);
//$nsenha = addslashes($senha);
//$senhamd5 = md5($nsenha);
// Monta uma consulta SQL (query) para procurar um usuário
$sql = "SELECT 'id', 'nome' FROM usuario' WHERE 'usuario' = '$usuario' AND 'senha' = '$senha' LIMIT 1";
$query = mysqli_query($conexao, $sql);
$resultado = mysqli_fetch_assoc($query);
// Verifica se encontrou algum registro
if ($resultado) {
// Definimos dois valores na sessão com os dados do usuário
$_SESSION['usuarioID'] = $resultado['id']; // Pega o valor da coluna 'id do registro encontrado no MySQL
$_SESSION['usuarioNome'] = $resultado['nome']; // Pega o valor da coluna 'nome' do registro encontrado no MySQL
// Verifica a opção se sempre validar o login
if ($_SG['validaSempre'] == true) {
// Definimos dois valores na sessão com os dados do login
$_SESSION['usuarioLogin'] = $usuario;
$_SESSION['usuarioSenha'] = $senha;
}
return true;
// Nenhum registro foi encontrado => o usuário é inválido
} else {
return false;
}
}
The problem is that putting right or wrong data does not let you log in. It always falls in the Returne false, of the IF in the function validUser. If you test by putting if (isset ($ result)), it lets you log in with right or wrong data.
Debugging the code, I echoed the variables and the error is this:
Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, boolean given in C:\xampp\htdocs\dashboard\web\web\seguranca.php on line 55
SELECT id, nome FROM usuario WHERE usuario = 'teste' AND senha = '123mudar' LIMIT 1
If I play this select directly via terminal and after the column with this data, however, searching says that the error is in Query.