Zjednodušte si práci – autentifikace uživatele
Rád bych navázal na svůj předchozí článek a ukázal vám další třídu pro zjednodušení nejčastějších operací v PHP. Tentokrát se budu věnovat základní autentifikaci uživatele.
Ještě než začneme s podrobným rozborem, stáhněte si kompletní zdrojový kód. Od věci není ani nahlédnutí do předchozího článku o práci s MySQL, v dalším textu budu předpokládat jednak jeho znalost, jednak použití v něm popisované třídy pro komunikaci s databází.
Základní schopnosti třídy
- přihlášení uživatele pomocí uživatelského jména a hesla
- kontrola přihlášení uživatele pomocí identifikačního řetězce
- odhlášení uživatele
- přidání nového uživatele
- získání informací o uživateli
- nastavení informací o uživateli
- přenos identifikačního řetězce v cookie nebo url
Tabulka uživatelů a spojení s DB
Třída potřebuje ke své práci tabulku s uživateli, která musí obsahovat minimálně tyto čtyři sloupce:
id
– unikátní celočíselné id uživatele. Žádný uživatel nesmí mít id=0, vhodné je přiřadit tomuto sloupci vlastnostauto_increment
. Název tohoto sloupce by měl býtid
, pokud chcete použít jiný název, změňte vlastnost třídyfield_id
($user->field_id='idecko';
).login
– identifikátor, pomocí nějž se uživatel přihlašuje. Název tohoto sloupce by měl býtlogin
, pokud chcete použít jiný název, změňte vlastnost třídyfield_login
.password
– uživatelské heslo. Název tohoto sloupce by měl býtpassword
, pokud chcete použít jiný název, změňte vlastnost třídyfield_password
.auth
– do tohoto sloupce se ukládá hashová část identifikačního řetězce. Typ by měl být řetězec s délkou 32 znaků. Název tohoto sloupce by měl býtauth
, pokud chcete použít jiný název, změňte vlastnost třídyfield_auth
.
Tabulka může obsahovat ještě další sloupce, například reálné jméno uživatele, ale ty už nejsou pro funkčnost autentifikace uživatele důležité. K těmto dalším sloupcům můžete přistupovat pomocí metod register
, getInfo
a update
.
Název používané tabulky nastavte do vlastnosti třídy tb_user
. Třída používá pro přístup k DB třídu mysql.class.php
, odkaz na její instanci tedy vložte do vlastnosti sql
.
Přihlášení uživatele
Pro tuto akci použijeme metodu login($jmeno, $heslo)
. Význam parametrů je patrný už z jejich názvu – uživatelské jméno a heslo. Při úspěšném přihlášení vrátí metoda hodnotu true
a nastaví vlastnosti id
, aid
, url_aid
a cookie. Při neúspěchu vrací hodnotu false
.
Kontrola přihlášení
Kontrolu přihlášení provádí metoda check($identifikacni_retezec)
. Funkce má jeden nepovinný parametr, který může obsahovat identifikační řetězec. Pokud není zadán, metoda si tyto údaje zjistí z cookie nebo url. Pokud ověření proběhne úspěšně, vrátí hodnotu true
a nastaví vlastnosti id
, aid
, url_aid
a cookie. Při neúspěchu vrací metoda hodnotu false
.
Odhlášení uživatele
Pro odhlášení použijte metodu logout()
. Tato metoda zruší cookie a smaže hodnotu vlastností id
, aid
, url_aid
. (Před použitím metody logout je třeba ověřit uživatele pomocí metody check, aby bylo jasné koho chceme odhlásit.)
Přidání nového uživatele
Nového uživatele přídává metoda register($data)
, v parametru $data
(asociativní pole) jsou uloženy informace o vytvářeném uživateli včetně uživatelského jména a hesla. V případě, že takový login už existuje, vrátí metoda hodnotu false
, pokud neexistuje, zaregistruje uživatele a přihlásí jej.
Získání informací o uživateli
K získání informací o uživateli použijeme metodu getInfo($sloupce)
, parametr může obsahovat seznam sloupců, které se budou vytahovat z DB. Pokud není zadán, použije se *
pro získání všech sloupců. Parametr se vkládá přímo do SQL dotazu, tak buďte opatrní.
Nastavení informací o uživateli
Pro nastavení informací o uživateli slouží metodat update($data)
. V parametru $data
(asociativní pole) jsou uloženy měněné informace o uživateli. Pro volání této metody je potřeba být přihlášený, v opačném případě vrací metoda hodnotu false
. Metoda nemusí měnit všechny údaje, můžete nastavit třeba jen některé. Příklad:
$user->update(array(
‚login‘ => ‚king‘,
‚name‘ => ‚The King‘
));
Získaní id uživatele a předávání identifikačního řetězce
Tyto údaje jsou dostupné až po kontrole přihlášení metodou check
nebo po přihlášení metodou login
. Id uživatele získáte z vlastnosti id
a platný identifikační řetězec pomocí vlastnosti aid
. Ve vlastnosti url_aid
je identifikační řetězec v případě, že nefunguje automatické předávání pomocí cookie. Pokud je definováno url_aid
, obsahuje curl_aid
řetězec pro přímé vložení do url. Příklad:
// pokud $user->id obsahuje nenulovou hodnotu je uživatel přihlášen
if ($user->id) {
echo ‚Přihlášený uživatel.
Vaše id je ‚.$user->id.‘
Identifiační řetězec ‚.$user->aid;
} else {
echo ‚Nepřihlášený uživatel‘;
};
echo ‚<a href=“jinastranka.php?‘.$user->curl_aid.'“>další stránka</a>‘;
Třída umí také předávat identifikační řetězec v cookie. Pokud je vlastnost use_cookie
nastavena na true
, metoda check
se pokusí řetězec získat z cookie a do cookie jej i uložit. Když metoda check
zjistí, že se cookie uložila, nenastavuje už hodnotu vlastnosti url_aid
.
Ukázka použití – základní kostra
<?php
include ‚mysql.class.php‘;
include ‚user.class.php‘;
$sql = new tMysql; // vytvoření a nastavení instance tMysql
$sql->db_name = ‚moje_db‘;
$sql->db_server = ‚localhost‘;
$sql->db_user = ‚uzivatel‘;
$sql->db_password = ‚heslo‘;
$sql->connect();
$user = new tUser; // vytvoření a nastavení instance tUser
$user->sql = &$sql;
$user->tb_user = ‚uzivatele‘;
$user->check(); // kontrola přihlášení
// tady program pokračuje
Starší komentáře ke článku
Pokud máte zájem o starší komentáře k tomuto článku, naleznete je zde.
Mohlo by vás také zajímat
-
Jaký monitor je nejlepší k novému Macu Mini?
25. listopadu 2024 -
Monitory OLED: klíčové pojmy a funkce
13. května 2024 -
Souboj na trhu s CPU pro servery: AMD vs. Intel
8. prosince 2023 -
Chcete jedinečnou doménu? Objevte koncovky FOOD, MEME a MUSIC!
7. listopadu 2024
Nejnovější
-
Jak rozšířit úložiště Macu za pětinovou cenu?
16. prosince 2024 -
Nové trendy v doménách pro osobní projekty – DIY, LIVING a LIFESTYLE
9. prosince 2024 -
Jak chránit webové stránky před Web/AI Scrapingem
27. listopadu 2024 -
Jaký monitor je nejlepší k novému Macu Mini?
25. listopadu 2024