Normalizácia databázy

Teraz ukladáme statusy našich používateľov v rovnakej tabuľke, kde sú samotní používatelia. To je však nesprávne - dostávame nenormalizovanú tabuľku, pretože slová 'user' a 'admin' sa opakujú mnohokrát.

Je potrebné vykonať normalizáciu - vyčleníme naše statusy do samostatnej tabuľky statuses:

id name
1 user
2 admin

A v tabuľke users vytvoríme stĺpec status_id. Teraz pri registrácii budeme do stĺpca status_id zapisovať id statusu z tabuľky statuses:

html<?php
  $query = "INSERT INTO users
    SET login='$login', password='$password', status_id='1'";
?>

Najzložitejšie zmeny nastanú pri autorizácii: na to, aby sme získali status používateľa, bude potrebné vykonať LEFT JOIN:

html<?php
  $login = $_POST['login'];
  
  // Získame používateľa podľa loginu a spojíme so statusom:
  $query = "SELECT users.*, statuses.name as status FROM users
    LEFT JOIN statuses
  ON users.status_id=statuses.id WHERE login='$login'";
  
  $res = mysqli_query($link, $query);
  $user = mysqli_fetch_assoc($res);
  
  if (!empty($user)) {
    $hash = $user['password'];
    
    if (password_verify($_POST['password'], $hash)) {
      $_SESSION['auth'] = true;
      $_SESSION['status'] = $user['status']; // status
    } else {
      
    }
  } else {
    
  }
?>
Задание 1

Prepíšte vašu autorizáciu a registráciu v súlade s popísaným v teórii.

Задание 2

Vykonajte zmeny v práci admin rozhrania (výpis statusov používateľov, zmeny statusov a tak ďalej).