
Vamos iniciar uma série de artigos sobre Login com PHP e MySQL utilizando PDO, por meio de uma metodologia muito interessante e prática. O objetivo é que você entenda como é melhor fazer login utilizando PDO, mais seguro, rápido e estável.
Iniciando nosso projeto, vamos começar com o arquivo index.html contendo os campos Login e Senha para inserção dos dados de acesso do usuário. Como nosso objetivo é trabalhar com a aplicação do PDO e MySQL, não irei configurar um esquema CSS, com o intuito de simplificar nosso modelo.
<!DOCTYPE html>
<html>
<head>
<title>Login com PHP e MYSQL usando PDO</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body>
<div>LOGIN DE ACESSO</div>
<p></p>
<div>
<form action="login.php" method="post">
<label>Login</label>
<input type="text" name="login" placeholder="Informe seu Login"><br><br>
<label>Senha</label>
<input type="password" name="senha" placeholder="Informe sua Senha"><br><br>
<button name="logar">Logar no Sistema</button>
</form>
</div>
</body>
</html>

Agora, vamos preparar o código que irá receber os dados do usuário
O código do arquivo login.php ficará assim:
<?php
//Captura os dados de acesso do usuário para verificação
$dados = filter_input_array(INPUT_POST);
//Obtém um dado específico e aplica filtro para garantir maior segurança na conexão
$login = filter_var($dados["login"], FILTER_SANITIZE_STRING);
$senha = filter_var($dados["senha"], FILTER_SANITIZE_STRING);
//Verifica cada dado individualmente para saber se está em branco
//Se estiver, direciona o usuário de volta para a página de Login com aviso de erro
if(empty($login) || empty($senha)){
echo "Seus dados de acesso estão em branco!";
}else{
}
Analisando o código acima, podemos observar que…
Primeiro, com a abertura da tag php “<?php”, não se faz necessário fechar esta tag, quando o arquivo inteiro é php. O fechamento seria “?>”.
Segundo, com a variável $dados, capturamos através de filter_input_array todos os dados obtidos do formulário enviados via POST, para este arquivo o login.php. Uma maneira segura de fazer requisição de dados, é filtrando no recebimento, uma etapa no escopo segurança que deve ser realizado, para fortalecer a utilização de dados.
Nesta linha ($dados = filter_input_array(INPUT_POST);), podemos identificar que INPUT_POST, é a tipificação de filter_input_array para recebimento dos dados via POST. Outras tipificações existem, como INPUT_GET (não seguro), INPUT_COOKIE, INPUT_ENV e INPUT_SERVER.
Terceiro. Para que você obtenha com ainda mais segurança dados para análise e comparação no banco de dados o valor correto, utilize mais um filtro que eliminará caracteres indevidos nos campos input do formulário.
O filtro a ser utilizado é o filter_var, deste modo:
$login = filter_var($dados[“login”], FILTER_SANITIZE_STRING);
FILTER_SANITIZE_STRING remove qualquer tag HTML contida nos campos input do formulário, bem como codifica caracteres especiais. Você também pode adicionar outros filtros na mesma linha, separando-os com vírgula (comma), desta forma:
$login = filter_var($dados[“login”], FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_HIGH);
FILTER_FLAG_STRIP_HIGH remove qualquer caractere com valor ASCII > 127. No nosso modelo, vamos utilizar apenas FILTER_SANITIZE_STRING, para remover as tags HTML apenas.
A sintaxe para o filtro filter_var é filter_var(var, filtername, options).
Se você deseja utilizar em seu sistema de acesso, e-mail como campo de login, utilize o filtro FILTER_VALIDATE_EMAIL, que valida se o e-mail digitado no campo login está digitado corretamente.
Nesta linha.. if(empty($login) || empty($senha)){.. nós verificamos se a variável $login e a variável $senha estão em branco, caso esteja, então lançamos uma mensagem de erro, caso contrário, damos continuidade ao código. Traduzindo… Se($login) estiver em branco (empty), e, Se($senha) estiver em branco, lance mensagem (echo). Beleza?! Senão…
Acompanhe a Parte 2!
Mais