Ako na registráciu v PHP

Registráciu všeobecne rozumieme ako pridanie novej osoby do nejakého systému.

Ako však takúto registráciu naprogramovať na internetovej stránke? Je to veľmi jednoduché.

Ako prvé si musíme vytvoriť registračný formulár:

<form action="registruj.php" method="post">
  Meno: <input type="text" name="meno" required /><br />
  Heslo: <input type="password" name="heslo" required /><br />
  <input type="submit" />
</form>

... v tomto registračnom formulári som si nastavil súbor ktorému bude formulár poslaný a metódu akou bude poslaný. Ďalej som si vytvoril 2 položky meno a heslo.

Ak toto máme môžeme sa pustiť do programovanie PHP skriptu ktorý nám takýto formulár obslúži. Súbor registruj.php by teda vyzeral asi takto:

<?php
  // Priradenie superglobalnych premennych do lokalnych + odstranenie bielych znakov zo zaciatku a konca
  $meno = trim($_POST['meno']);
  $heslo = trim($_POST['heslo']);

  $stav = null; // Nasetovanie stavovej premennej na null

  if (!is_null($meno) || !is_null($heslo)) // Overenie ci nahodou meno alebo heslo nie je prazdne
  {
    try
    {
      $pdo = new PDO('mysql:dbname=testdb;host=127.0.0.1', 'user', 'password'); // Vytvorenie spojenia na databazu
    }
    catch (PDOException $e)
    {
      echo 'Connection failed: ' . $e->getMessage();
    }

    $select = "SELECT count(*) FROM osoby WHERE meno = '" . $meno . "';";
    $query = $pdo->prepare($select); // Vytiahnutie z databazy pocet riadkov v ktorych sa zadane meno nachadza
    $query->execute();

    if ($query->fetchObject()->count == 0) // Ak sa v databaze meno nachadza 0 krat prejdeme k vlozeniu
    {
      $insert = "INSERT INTO osoby (meno, heslo) VALUES ('" . $meno . "','" . sha1($heslo) . "');";
      $pdo->prepare($insert)->execute(); // Vlozenie mena a zahashovaneho hesla do databazy

      $stav = 'ok';
    }
    else
    {
      $stav = 'err';
    }
  }
  else
  {
    $stav = 'err';
  }

  if ($stav == 'ok') // Ak vsetko prebehlo ako sa tak za napise na obrazovku kladna sprava
  {
    echo 'Registracia prebehla úspešne';
  }
  else
  {
    echo 'Pri registracii sa vyskytla chyba';
  }

... no a týmto by sme mali mať našu úlohu splnenú.

Použitie architektúry MVC

Ak používame nejaký framework ktorý využíva architektúru MVC tak je princíp rovnaký avšak niektoré veci sa dajú pekne rozdeliť tak aby bola oddelená logika od dát a to nasledovne. Vykonanie overení či sú dáta správne a príprava dát na zápis sa vykoná v kontrolery a následne sa pošlú modelu ktorý ich zapíše do databázy.

Značky: