Este é um tutorial para criar um sistema de login com a ajuda de PHP, MySQL e HTML. Seu site precisa ser dinâmico e seus visitantes precisam ter acesso instantâneo a ele. Portanto, eles desejam fazer login o máximo de vezes possível. O sistema de autenticação de login é muito comum para qualquer aplicativo da web. Ele permite que usuários registrados acessem o site e recursos exclusivos para membros. Também é útil quando queremos armazenar informações dos usuários. Ele abrange tudo, desde sites de compras, sites educacionais e sites de associação, etc.
Enterprise System Management and Security | Inscreva-se no Curso Gratuito*
*Link de afiliado. Veja Termos de Uso.
Este tutorial é dividido em 5 partes.
Sumário
- Requisitos
- Sistema de Cadastro
- Sistema de Login
- Página de Boas-vindas
- Script de Logout
1) Requisitos para Construir um Sistema de Login em PHP
Para seguir com sucesso este tutorial e construir um sistema de login em PHP, você deve ter e estar familiarizado com os seguintes itens:
- Um servidor que suporte PHP para executar seu código
- Conhecimento e familiaridade com HTML e CSS
- Um banco de dados MySQL instalado em seu dispositivo e saber como utilizá-lo
- Capacidade de adicionar todas as medidas de segurança corretas em seu sistema de login
Se você possui todos esses requisitos básicos e conjuntos de conhecimentos, então está pronto para prosseguir para os próximos passos e aprender como construir seu sistema de login em PHP.
2) Construindo um Sistema de Cadastro
Nesta parte, criaremos um sistema de cadastro que permite aos usuários criar uma nova conta no sistema. Nosso primeiro passo é criar um formulário de registro em HTML. O formulário é bastante simples de ser criado. Ele solicita apenas um nome, e-mail, senha e confirmação de senha. Os endereços de e-mail serão únicos para cada usuário. Contas múltiplas para o mesmo endereço de e-mail não são permitidas. Será exibida uma mensagem de erro para os usuários que tentarem criar múltiplas contas com o mesmo endereço de e-mail.
Passo 1: Criando Formulário de Registro em HTML
Vamos criar um arquivo PHP chamado register.php com o seguinte código nele. Este é um formulário HTML simples com alguma validação básica. Se não estiver familiarizado com o HTML, você pode obtê-lo em muitos sites online que oferecem templates prontos de formulário de login em HTML5.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Sign Up</title>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css">
</head>
<body>
<div class="container">
<div class="row">
<div class="col-md-12">
<h2>Register</h2>
<p>Please fill this form to create an account.</p>
<form action="" method="post">
<div class="form-group">
<label>Full Name</label>
<input type="text" name="name" class="form-control" required>
</div>
<div class="form-group">
<label>Email Address</label>
<input type="email" name="email" class="form-control" required />
</div>
<div class="form-group">
<label>Password</label>
<input type="password" name="password" class="form-control" required>
</div>
<div class="form-group">
<label>Confirm Password</label>
<input type="password" name="confirm_password" class="form-control" required>
</div>
<div class="form-group">
<input type="submit" name="submit" class="btn btn-primary" value="Submit">
</div>
<p>Already have an account? <a href="login.php">Login here</a>.</p>
</form>
</div>
</div>
</div>
</body>
</html>
A saída do formulário HTML acima será assim.
Todos os campos de entrada são obrigatórios, adicionando o atributo "required"
, que é o atributo padrão do HTML. O uso de type="email"
irá validar o endereço de e-mail fornecido pelos usuários e dará um erro se o endereço de e-mail não for válido. Para o formulário de registro, utilizamos o bootstrap para um desenvolvimento rápido. Se deseja economizar tempo no código HTML, você sempre pode utilizar alguns templates gratuitos de HTML5 para seu projeto.
Passo 2: Criando a Tabela do Banco de Dados MySQL
Você precisará criar um novo banco de dados com qualquer nome adequado que desejar. Após isso, por favor, execute a consulta SQL abaixo para criar a tabela de usuários dentro do seu novo banco de dados MySQL.
CREATE TABLE `users` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(75) NOT NULL,
`password` varchar(255) NOT NULL,
`email` varchar(100) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `email` (`email`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1;
Passo 3: Criando o Arquivo de Configuração do Banco de Dados
Agora, criamos a tabela de usuários. Vamos criar um novo arquivo PHP chamado config.php para conectar ao banco de dados MySQL. Cole o seguinte código no arquivo config.php e altere o nome do banco de dados para o que você escolheu ao criar o banco de dados.
Passo 4: Criando um Arquivo de Sessão
Vamos criar um arquivo chamado session.php. Neste arquivo, iniciaremos a sessão e verificaremos se um usuário já está logado, se sim, redirecionaremos o usuário para o arquivo welcome.php.
Passo 5: Criar Formulário de Registro em PHP
Finalmente, é hora de criar um código PHP que permite aos usuários registrar suas contas no sistema. Este código PHP alertará os usuários com um erro se algum usuário já estiver registrado com o mesmo endereço de e-mail.
Substitua o seguinte código no arquivo register.php.
prepare("SELECT * FROM users WHERE email = ?")) {
$error = '';
// Vincular parâmetros (s = string, i = int, b = blob, etc), no nosso caso o nome de usuário é uma string, então usamos "s"
$query->bind_param('s', $email);
$query->execute();
// Armazenar o resultado para verificar se a conta existe no banco de dados.
$query->store_result();
if ($query->num_rows > 0) {
$error .= 'The email address is already registered!
';
} else {
// Validar senha
if (strlen($password ) < 6) {
$error .= 'Password must have atleast 6 characters.
';
}
// Validar confirmação de senha
if (empty($confirm_password)) {
$error .= 'Please enter confirm password.
';
} else {
if (empty($error) && ($password != $confirm_password)) {
$error .= 'Password did not match.
';
}
}
if (empty($error) ) {
$insertQuery = $db->prepare("INSERT INTO users (name, email, password) VALUES (?, ?, ?);");
$insertQuery->bind_param("sss", $fullname, $email, $password_hash);
$result = $insertQuery->execute();
if ($result) {
$error .= 'Your registration was successful!
';
} else {
$error .= 'Something went wrong!
';
}
}
}
}
$query->close();
$insertQuery->close();
// Fechar conexão com o banco de dados
mysqli_close($db);
}
?>
Sign Up
Register
Please fill this form to create an account.
Uma vez que o usuário clique no botão de envio, ele irá verificar se $_SERVER["REQUEST_METHOD"] == "POST"
e se a variável $_POST['submit']
foi definida. Por motivos de segurança, sempre sugerimos não armazenar a senha como texto simples no banco de dados. Utilizamos a função password_hash()
que cria um novo hash de senha usando um algoritmo de hashing unidirecional forte.
O script PHP acima irá validar se nenhum usuário está registrado com o mesmo endereço de e-mail e também validar a senha. Após a validação ser confirmada, armazenamos as informações fornecidas pelo usuário na tabela de usuários e alertamos o usuário que o registro foi bem-sucedido.
3) Construindo um Sistema de Login
Nesta parte, iremos criar um formulário de login para permitir que os usuários acessem a área restrita do sistema. No nosso caso, a área restrita é uma página de boas-vindas que abordaremos na próxima parte.
Passo 1: Criando um Formulário de Login em HTML
Abaixo está o Formulário de Login em HTML. Cole isso em um arquivo chamado login.php
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Login</title>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css">
</head>
<body>
<div class="container">
<div class="row">
<div class="col-md-12">
<h2>Login</h2>
<p>Please fill in your email and password.</p>
<form action="" method="post">
<div class="form-group">
<label>Email Address</label>
<input type="email" name="email" class="form-control" required />
</div>
<div class="form-group">
<label>Password</label>
<input type="password" name="password" class="form-control" required>
</div>
<div class="form-group">
<input type="submit" name="submit" class="btn btn-primary" value="Submit">
</div>
<p>Don't have an account? <a href="register.php">Register here</a>.</p>
</form>
</div>
</div>
</div>
</body>
</html>
O resultado do código acima será assim
Passo 2: Criando um Sistema de Login em PHP
Depois de criar o formulário de login em HTML, iremos escrever um código para validar as credenciais de login. Ao enviar o formulário, vamos verificar se o email e a senha foram preenchidos. Se estiverem preenchidos, executaremos uma consulta SELECT
para encontrar o registro em um banco de dados com base no email e senha. Se algum registro for encontrado, então iremos armazenar o "userID"
na sessão e redirecionar o usuário para o arquivo welcome.php, caso contrário, o usuário receberá uma mensagem de erro.
Vamos substituir o seguinte código no arquivo login.php.
Please enter email.';
}
// validar se a senha está vazia
if (empty($password)) {
$error .= 'Please enter your password.
';
}
if (empty($error)) {
if($query = $db->prepare("SELECT * FROM users WHERE email = ?")) {
$query->bind_param('s', $email);
$query->execute();
$row = $query->fetch();
if ($row) {
if (password_verify($password, $row['password'])) {
$_SESSION["userid"] = $row['id'];
$_SESSION["user"] = $row;
// Redirecionar o usuário para a página de boas-vindas
header("location: welcome.php");
exit;
} else {
$error .= 'The password is not valid.
';
}
} else {
$error .= 'No User exist with that email address.
';
}
}
$query->close();
}
// Fechar conexão
mysqli_close($db);
}
?>
Login
Login
Please fill in your email and password.
4) Criando uma Página de Boas-vindas
Abaixo está o código para o arquivo welcome.php. Os usuários serão redirecionados para esta página após um processo de login bem-sucedido. Adicionamos um código no topo da página para verificar se o usuário não está logado e, nesse caso, redirecioná-lo para a página de login.
Vamos criar um arquivo welcome.php e colar o seguinte código nele.
Welcome
Hello, . Welcome to demo site.
5) O Script de Logout
Finalmente, vamos criar um arquivo logout.php com o seguinte código nele.
Uma vez que o usuário clicar no link Sair, o script acima será chamado para destruir a sessão e redirecionar o usuário para o arquivo login.php.
Conclusão
Neste tutorial, expliquei como você pode criar um Sistema de Login usando HTML, PHP e MySQL. Depois de entender o quão simples é criar um sistema de login, você pode adicionar outras funcionalidades como redefinir senha, esqueci minha senha, verificar endereço de e-mail, editar perfil do usuário, etc.
Source:
https://dzone.com/articles/create-a-login-system-using-php