Aula 20: Criando a Tabela users e a Classe User

Por: Nerd Toolkit Postado em: Outubro 21, 2024 Visto por: 510

1. Criando a Tabela users

Vamos iniciar criando a tabela users no banco de dados MySQL. Esta tabela vai armazenar o nome de usuário e a senha de cada usuário registrado no sistema. A senha será armazenada de forma segura, usando o hash para proteção.

Execute o seguinte comando SQL no seu banco de dados:

CREATE TABLE users (
   id INT(11) AUTO_INCREMENT PRIMARY KEY,
   username VARCHAR(50) NOT NULL UNIQUE,
   password VARCHAR(255) NOT NULL
);
  • id: Identificador único para cada usuário.
  • username: Nome de usuário, único para cada conta.
  • password: Senha do usuário, armazenada de forma criptografada.

2. Criando a Classe User

Agora que temos a tabela de usuários, vamos criar a classe User em PHP. Esta classe será responsável pelas operações de criação de usuário, login e validação de dados.

Estrutura da Classe User

No arquivo classes/User.php, crie a classe da seguinte forma:

<?php
class User {
   private $db;
   public function __construct($db) {
       $this->db = $db;
   }
   // Método para registrar um novo usuário
   public function register($username, $password) {
       $hashed_password = password_hash($password, PASSWORD_BCRYPT);
       $query = "INSERT INTO users (username, password) VALUES (?, ?)";
       $stmt = $this->db->prepare($query);
       $stmt->bind_param("ss", $username, $hashed_password);
       
       return $stmt->execute();
   }
   // Método para fazer login de um usuário
   public function login($username, $password) {
       $query = "SELECT id, username, password FROM users WHERE username = ?";
       $stmt = $this->db->prepare($query);
       $stmt->bind_param("s", $username);
       $stmt->execute();
       $stmt->store_result();
       if ($stmt->num_rows == 1) {
           $stmt->bind_result($id, $username, $hashed_password);
           $stmt->fetch();
           
           if (password_verify($password, $hashed_password)) {
               // Inicia sessão
               $_SESSION['user_id'] = $id;
               $_SESSION['username'] = $username;
               return true;
           }
       }
       return false;
   }
   // Método para verificar se o usuário está logado
   public static function isLoggedIn() {
       return isset($_SESSION['user_id']);
   }
   // Método para encerrar a sessão (logout)
   public static function logout() {
       session_unset();
       session_destroy();
   }
}
?>
Explicação dos Métodos:
  • register(): Este método cria um novo usuário no banco de dados, criptografando a senha antes de armazená-la.
  • login(): Este método verifica o nome de usuário e a senha fornecidos. Se os dados estiverem corretos, a sessão do usuário é iniciada.
  • isLoggedIn(): Verifica se o usuário está logado.
  • logout(): Encerra a sessão do usuário, fazendo o logout.

3. Usando a Classe User

Agora que temos a classe User, podemos integrá-la ao nosso sistema de autenticação.

Registro de Usuário:

Para registrar um novo usuário, vamos usar o método register() da classe User. Por exemplo, em um arquivo register_process.php:

<?php
require_once 'classes/Database.php';
require_once 'classes/User.php';
$database = new Database();
$db = $database->getConnection();
if ($_SERVER["REQUEST_METHOD"] == "POST") {
   $user = new User($db);
   $username = $_POST['username'];
   $password = $_POST['password'];
   
   if ($user->register($username, $password)) {
       echo "Usuário registrado com sucesso!";
       header("Location: login.php");
   } else {
       echo "Erro ao registrar usuário.";
   }
}
?>
Login de Usuário:

Para o login, use o método login() da classe User, como no arquivo login_process.php:

<?php
require_once 'classes/Database.php';
require_once 'classes/User.php';
session_start();
$database = new Database();
$db = $database->getConnection();
if ($_SERVER["REQUEST_METHOD"] == "POST") {
   $user = new User($db);
   $username = $_POST['username'];
   $password = $_POST['password'];
   
   if ($user->login($username, $password)) {
       header("Location: tasks.php");
   } else {
       echo "Nome de usuário ou senha incorretos.";
   }
}
?>

4. Exercício Prático

Como exercício prático:

  • Teste o sistema de registro e login de usuários que acabamos de implementar.
  • Experimente adicionar validações adicionais, como verificação de campos vazios ou limite mínimo de caracteres para a senha.

5. Próximos Passos

Agora que temos a tabela de usuários e a classe User implementada, o próximo passo será melhorar a interface e expandir as funcionalidades de autenticação, como recuperação de senha.

Tags:
#criar tabela users MySQL  # classe User PHP  # autenticação de usuários PHP  # login e registro PHP  # sistema de usuários PHP  # programação orientada a objetos PHP  # OOP autenticação PHP 

Notícias Relacionadas

Aula 20: Criando a Tabela users e a Classe User
  Contato
  • support@nerdtoolkit.com.br
Mapa do Site
Mostrar mapa do site
  Sobre

Feito de programadores para programadores.

Este site utiliza cookies. Ao continuar a utilizar este site, você concorda com a nossa utilização de cookies e política de privacidade.
Leia mais Concordo