400 Bad Request

Bad Request

Your browser sent a request that this server could not understand.

PHP 5.3 Login Pomocí $_SESSION

PHP 5.3 Login Pomocí $_SESSION

Příspěvekod Wlezley » 19 březen 2013 05:02:26

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:
Uživatelský avatar
Wlezley
 
Příspěvky: 316
Registrován: 24 září 2011 22:54:46
Bydliště: Plzeň
Projekt: Wlezley EU

Zpět na PHP

Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 0 návštevníků


cron