Este é um tutorial para criar um sistema de login com a ajuda do PHP, MySQL e HTML. Seu site precisa ser dinâmico e seus visitantes precisam ter acesso instantâneo a ele. Portanto, eles querem fazer login quantas vezes forem possíveis. 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 para os usuários. Ele abrange tudo, desde sites de compras, sites educacionais e sites de associação, etc.
Gerenciamento de Sistema Empresarial e Segurança | Matricule-se no Curso Gratuito*
*Link de afiliado. Consulte 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 as seguintes coisas:
- 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 o conhecimento de como usá-lo
- Capacidade de adicionar todas as medidas de segurança corretas em seu sistema de login
Se você tem todos esses requisitos básicos e conjuntos de conhecimento, então você está pronto para prosseguir para os próximos passos e mergulhar em 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 é bem simples de criar. 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. Múltiplas contas 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 várias contas com o mesmo endereço de e-mail.
Passo 1: Criando o Formulário de Registro em HTML
Vamos criar um arquivo PHP chamado register.php com o seguinte código. Este é um formulário HTML simples com algumas validações básicas. Se você não estiver familiarizado com HTML, pode encontrá-lo em muitos sites online que oferecem modelos de formulário de login html5 prontos.
<!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 ficará assim.
Todos os campos de entrada são obrigatórios, adicionando o "required"
, que é o atributo HTML padrão. O uso de type="email"
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, usamos bootstrap para desenvolvimento rápido. Se você quiser economizar tempo com o código HTML, pode sempre usar alguns modelos html5 gratuitos para o seu projeto.
Passo 2: Criando a Tabela do Banco de Dados MySQL
Você precisará criar um novo banco de dados com qualquer nome apropriado que desejar. Depois disso, execute a consulta SQL abaixo para criar a tabela de usuários dentro do seu banco de dados MySQL recém-criado.
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 com o 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, iremos iniciar a sessão e verificar se um usuário já está logado, se sim, iremos redirecionar 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 permita 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 que possamos 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 clicar no botão de envio, ele 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 hash forte unidirecional.
O script PHP acima 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, criaremos um formulário de login para permitir que os usuários acessem a área restrita do sistema. Em 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-o 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>
A saída do código acima será semelhante a isto
Passo 2: Criando um Sistema de Login em PHP
Após criar o formulário de login em HTML, escreveremos um código para validar as credenciais de login. Ao enviar o formulário, verificaremos se o email e a senha estão preenchidos. Se estiverem preenchidos, executaremos uma SELECT
para encontrar o registro no banco de dados com base no email e na senha. Se algum registro for encontrado, armazenaremos o "userID"
na sessão e o usuário será redirecionado para o arquivo welcome.php, caso contrário, o usuário será alertado com 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 algum código no topo da página para verificar se o usuário não está logado, então redirecionamos o usuário 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. Uma vez que você entender o quão simples é criar um sistema de login, você pode adicionar outras funcionalidades como redefinir senha, esqueceu a senha, verificar endereço de e-mail, editar perfil do usuário, etc.
Source:
https://dzone.com/articles/create-a-login-system-using-php