Stránka 1 z 1

PHP 5.3 Login Pomocí $_SESSION

PříspěvekNapsal: 19 březen 2013 05:02:26
od Wlezley
Zdar!

Nedávno jsem řešil zvláštní problém, když jsem vytvářel přihlašování k administraci jednoho jednoduchého webu. Zjistil jsem, že od doby kdy jsem v PHP dělal naposledy, několik klíčových věcí se nejen v této oblasti změnilo. Hlavně co se týče použití SESSION. Popíšu zde (okrajově) jak to tedy vlastně je ve verzích PHP 5.3.x.

První věc; to se nezměnilo. Když chcete v nějakém dokumentu používat proměnné $_SESSION, nesmí vám na začátku chybět:
Kód: Vybrat vše
// Inicializace session
session_start();

Pak už lze session používat; řekněme že tímto se otevře přístup k session (pokud klient (prohlížeč) nemá cookie s PHP session ID, vytvoří se).

Nyní následuje celkem jednoduchá věc. Zkontrolujeme zda-li je uživatel přihlášen (tedy jestli má nastavené proměnné v $_SESSION). Když není přihlášen, zobrazí se mu formulář pro přihlášení; když je přihlášen, může využívat rozšířené funkce (například přidávání článků, nastavení v administraci, atd...).

Ale pozor. Nyní se už klíče pro session neregistrují. To znamená, že hodnoty $_SESSION můžeme přiřazovat přímo. Například:
Kód: Vybrat vše
// Inicializace session
session_start();

// Naplneni session hodnotami
$_SESSION['klic_1'] = "hodnota";
$_SESSION['klic_2_pole'] = array("hodnota1", "hodnota2", "hodnota3");

Je jasné, že tenhle způsob je lepší než tomu bylo kdysi, kdy se každý klíč musel nejdříve zaregistrovat a teprve pak až bylo možné ho používat.

Logout je taky celkem v pohodě. Jednoduše session zničíme:
Kód: Vybrat vše
// Zniceni session
session_destroy();

Ale pozor, je v tom zase háček. Než budeme moct session zničit, musíme předtím opět zavolat session_start(); aby jsme mohli provádět operace se session. Já ještě před samotným zničením session nuluji hodnoty. Kdybych to měl ukázat na příkladu (podle vzoru naplnění session hodnotami viz. výše), bude to vypadat následovně:
Kód: Vybrat vše
/* L O G O U T */
// Inicializace session
session_start();

// Restart hodnot
$_SESSION['klic_2_pole'] = array();
$_SESSION = array();

// Zniceni session
session_destroy();


To je prozatím vše, později přidám funkční příklad. :hypocrite: