⊗ppPmAuSs 415 of 447 menu

Autorizace pomocí session v PHP

Naše autorizace by měla fungovat takto: uživatel, který se chce na webu autorizovat, přijde na stránku login.php, zadá správné přihlašovací jméno a heslo a poté již chodí po stránkách webu jako autorizovaný.

Aby ostatní stránky webu věděly, že je náš uživatel autorizován, musíme v session uchovávat poznámku o tom.

Zatím naše autorizace není zcela funkční, protože jsme session ještě nepřipojili a ostatní stránky webu nemohou zjistit, zda je uživatel autorizován nebo ne.

Poznámku o autorizaci budeme uchovávat v proměnné session $_SESSION['auth'] - pokud je tam zapsáno true, pak je uživatel autorizován, a pokud null - pak není autorizován.

Pojďme provést odpovídající úpravu v našem kódu:

<?php session_start(); if (!empty($_POST['password']) and !empty($_POST['login'])) { $login = $_POST['login']; $password = $_POST['password']; $query = "SELECT * FROM users WHERE login='$login' AND password='$password'"; $res = mysqli_query($link, $query); $user = mysqli_fetch_assoc($res); if (!empty($user)) { $_SESSION['auth'] = true; } else { // nesprávně zadal přihlašovací jméno nebo heslo } } ?>

Nyní na jakékoli stránce webu můžeme zkontrolovat, zda je uživatel autorizován nebo ne, například takto:

<?php if (!empty($_SESSION['auth'])) { } ?>

Lze uzavřít text nějaké stránky celý pro neautorizovaného uživatele:

<?php if (!empty($_SESSION['auth'])): ?> <!DOCTYPE html> <html> <head> </head> <body> <p>text pouze pro autorizovaného uživatele</p> </body> </html> <?php else: ?> <p>prosím, autorizujte se</p> <?php endif; ?>

Lze uzavřít pouze část stránky:

<!DOCTYPE html> <html> <head> </head> <body> <p>text pro jakéhokoli uživatele</p> <?php if (!empty($_SESSION['auth'])) { echo 'text pouze pro autorizovaného uživatele'; } ?> <p>text pro jakéhokoli uživatele</p> </body> </html>

Nechť na našem webu, kromě stránky login.php, jsou ještě stránky 1.php, 2.php a 3.php. Zařiďte, aby k těmto stránkám měl přístup pouze autorizovaný uživatel.

Nechť na našem webu je ještě stránka index.php. Zařiďte, aby část této stránky byla otevřena pro všechny uživatele, a část - pouze pro autorizované.

Upravte svůj kód tak, aby při úspěšné autorizaci se do session zapsalo také přihlašovací jméno uživatele.

Zařiďte, aby při příchodu na jakoukoli stránku webu, autorizovaný uživatel viděl své přihlašovací jméno, a neautorizovaný - odkaz na stránku autorizace.

Čeština
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Používáme soubory cookie pro fungování webu, analýzu a personalizaci. Zpracování údajů probíhá v souladu s Zásadami ochrany osobních údajů.
přijmout vše přizpůsobit odmítnout