Abrir barra lateral
Criar um site de login e senha em PHP envolve várias etapas, desde a configuração do ambiente de desenvolvimento até a criação do código necessário para autenticação. Vou fornecer um guia básico para ajudá-lo a começar.
1. Configuração do Ambiente
Antes de começar, certifique-se de que você tenha o seguinte instalado no seu computador:
- PHP: Linguagem de programação do servidor.
- MySQL: Banco de dados para armazenar as informações de login.
- Apache ou Nginx: Servidor web.
Você pode usar pacotes como XAMPP ou WAMP que já incluem Apache, PHP e MySQL.
2. Estrutura do Projeto
Crie uma estrutura de diretório para o seu projeto:
arduino/login-system
/config
config.php
/public
index.php
login.php
register.php
dashboard.php
/includes
db.php
auth.php
3. Configuração do Banco de Dados
Primeiro, crie um banco de dados MySQL e uma tabela para armazenar os usuários:
sqlCREATE DATABASE login_system;
USE login_system;
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) NOT NULL UNIQUE,
password VARCHAR(255) NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
4. Arquivo de Configuração
Crie um arquivo config.php
para armazenar as configurações do banco de dados:
php<?php
define('DB_SERVER', 'localhost');
define('DB_USERNAME', 'root');
define('DB_PASSWORD', '');
define('DB_NAME', 'login_system');
// Tentativa de conexão ao banco de dados MySQL
$link = mysqli_connect(DB_SERVER, DB_USERNAME, DB_PASSWORD, DB_NAME);
// Verificar conexão
if($link === false){
die("ERROR: Não foi possível conectar. " . mysqli_connect_error());
}
?>
5. Conexão com o Banco de Dados
Crie um arquivo db.php
para gerenciar a conexão com o banco de dados:
php<?php
require_once 'config.php';
function db_connect() {
global $link;
return $link;
}
?>
6. Registro de Usuários
Crie um arquivo register.php
para o formulário de registro e a lógica de criação de usuários:
php<?php
require_once '../config.php';
$username = $password = "";
$username_err = $password_err = $confirm_password_err = "";
if($_SERVER["REQUEST_METHOD"] == "POST"){
if(empty(trim($_POST["username"]))){
$username_err = "Por favor, insira um nome de usuário.";
} else {
$sql = "SELECT id FROM users WHERE username = ?";
if($stmt = mysqli_prepare($link, $sql)){
mysqli_stmt_bind_param($stmt, "s", $param_username);
$param_username = trim($_POST["username"]);
if(mysqli_stmt_execute($stmt)){
mysqli_stmt_store_result($stmt);
if(mysqli_stmt_num_rows($stmt) == 1){
$username_err = "Este nome de usuário já está em uso.";
} else {
$username = trim($_POST["username"]);
}
} else {
echo "Algo deu errado. Por favor, tente novamente.";
}
}
mysqli_stmt_close($stmt);
}
if(empty(trim($_POST["password"]))){
$password_err = "Por favor, insira uma senha.";
} elseif(strlen(trim($_POST["password"])) < 6){
$password_err = "A senha deve ter pelo menos 6 caracteres.";
} else {
$password = trim($_POST["password"]);
}
if(empty(trim($_POST["confirm_password"]))){
$confirm_password_err = "Por favor, confirme a senha.";
} else {
$confirm_password = trim($_POST["confirm_password"]);
if(empty($password_err) && ($password != $confirm_password)){
$confirm_password_err = "As senhas não coincidem.";
}
}
if(empty($username_err) && empty($password_err) && empty($confirm_password_err)){
$sql = "INSERT INTO users (username, password) VALUES (?, ?)";
if($stmt = mysqli_prepare($link, $sql)){
mysqli_stmt_bind_param($stmt, "ss", $param_username, $param_password);
$param_username = $username;
$param_password = password_hash($password, PASSWORD_DEFAULT);
if(mysqli_stmt_execute($stmt)){
header("location: login.php");
} else {
echo "Algo deu errado. Por favor, tente novamente.";
}
}
mysqli_stmt_close($stmt);
}
mysqli_close($link);
}
?>
<!DOCTYPE html>
<html lang="pt-br">
<head>
<meta charset="UTF-8">
<title>Registro</title>
</head>
<body>
<div>
<h2>Registro</h2>
<p>Por favor, preencha este formulário para criar uma conta.</p>
<form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>" method="post">
<div>
<label>Nome de usuário</label>
<input type="text" name="username" value="<?php echo $username; ?>">
<span><?php echo $username_err; ?></span>
</div>
<div>
<label>Senha</label>
<input type="password" name="password">
<span><?php echo $password_err; ?></span>
</div>
<div>
<label>Confirme a senha</label>
<input type="password" name="confirm_password">
<span><?php echo $confirm_password_err; ?></span>
</div>
<div>
<input type="submit" value="Registrar">
</div>
<p>Já tem uma conta? <a href="login.php">Entre aqui</a>.</p>
</form>
</div>
</body>
</html>
7. Autenticação de Usuários
Crie um arquivo login.php
para o formulário de login e a lógica de autenticação:
php<?php
require_once '../config.php';
$username = $password = "";
$username_err = $password_err = $login_err = "";
if($_SERVER["REQUEST_METHOD"] == "POST"){
if(empty(trim($_POST["username"]))){
$username_err = "Por favor, insira seu nome de usuário.";
} else {
$username = trim($_POST["username"]);
}
if(empty(trim($_POST["password"]))){
$password_err = "Por favor, insira sua senha.";
} else {
$password = trim($_POST["password"]);
}
if(empty($username_err) && empty($password_err)){
$sql = "SELECT id, username, password FROM users WHERE username = ?";
if($stmt = mysqli_prepare($link, $sql)){
mysqli_stmt_bind_param($stmt, "s", $param_username);
$param_username = $username;
if(mysqli_stmt_execute($stmt)){
mysqli_stmt_store_result($stmt);
if(mysqli_stmt_num_rows($stmt) == 1){
mysqli_stmt_bind_result($stmt, $id, $username, $hashed_password);
if(mysqli_stmt_fetch($stmt)){
if(password_verify($password, $hashed_password)){
session_start();
$_SESSION["loggedin"] = true;
$_SESSION["id"] = $id;
$_SESSION["username"] = $username;
header("location: dashboard.php");
} else {
$login_err = "Usuário ou senha inválidos.";
}
}
} else {
$login_err = "Usuário ou senha inválidos.";
}
} else {
echo "Algo deu errado. Por favor, tente novamente.";
}
}
mysqli_stmt_close($stmt);
}
mysqli_close($link);
}
?>
<!DOCTYPE html>
<html lang="pt-br">
<head>
<meta charset="UTF-8">
<title>Login</title>
</head>
<body>
<div>
<h2>Login</h2>
<p>Por favor, preencha seus dados para entrar.</p>
<?php
if(!empty($login_err)){
echo '<div>' . $login_err . '</div>';
}
?>
<form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>" method="post">
<div>
<label>Nome de usuário</label>
<input type="text" name="username" value="<?php echo $username; ?>">
<span><?php echo $username_err; ?></span>
</div>
<div>
<label>Senha</label>
<input type="password" name="password">
<span><?php echo $password_err; ?></span>
</div>
<div>
<input type="submit" value="Login">
</div>
<p>Não tem uma conta? <a href="register.php">Registre-se agora</a>.</p>
</form>
</div>
</body>
</html>
8. Página de Dashboard
Crie um arquivo dashboard.php
para ser a página de destino após o login:
php<?php
session_start();
if(!isset($_SESSION["loggedin"]) || $_SESSION["loggedin"] !== true){
header("location: login.php");