Často se stává, že je nutné návštěvníky rozdělit na žádoucí a nežádoucí a dát příležitost vidět některé stránky webu pouze těm, kteří mají uživatelské jméno a heslo. Jak to udělat například ve skriptovacím jazyce na straně serveru PHP?
Instrukce
Krok 1
Uspořádejme nejjednodušší způsob, jak chránit vaše stránky před neoprávněnými návštěvníky. Nositelem informací o tom, zda je návštěvník oprávněn, bude relace. Relace je obdobou cookies v prohlížeči, pouze s tím rozdílem, že se nevytvářejí na našem počítači, ale na serveru. Používají se ke stejným účelům jako soubory cookie - k ukládání různých informací o nás, zatímco procházíme ze stránky na stránku jednoho webu. Když zavřeme prohlížeč, server tuto relaci zničí a při příštím přihlášení vytvoří novou. Tento serverový mechanismus používáme k záznamu, zda je uživatel již přihlášen do relace nebo ne. Při čtení těchto informací, když návštěvník požaduje stránku, php-skript buď otevře přístup k stránkám chráněným heslem, nebo nabídne zadání uživatelského jména a hesla.
Krok 1: Vytvořte stránku pro zadávání přihlašovacích údajů a hesla. HTML kód autorizačního formuláře v jeho nejjednodušší podobě může vypadat takto:
Přihlásit se:
Heslo:
Zde (na samém začátku souboru) přidáme php-kód, který zkontroluje správnost uživatelského jména a hesla zadaného návštěvníkem. Na začátek napíšeme:
session_start ();
Tento příkaz zahájí novou relaci, pokud pro tohoto návštěvníka ještě nebyla vytvořena.
Poté zkontrolujeme, zda má relace proměnnou s názvem „userName“- uloží název, pokud již byl návštěvník přihlášen. Pokud taková proměnná existuje, přesměrujte návštěvníka na hlavní stránku (index.php) a dokončete spuštění tohoto php skriptu:
if ($ _ SESSION ['userName']) {
záhlaví ("Umístění: index.php");
výstup;
}
Zbytek kódu bude proveden pouze v případě, že uživatel ještě nezadal správné uživatelské jméno a heslo. Uveďme, které přihlašovací jméno a heslo je třeba považovat za správné:
$ validName = 'Jsem můj!';
$ validPass = 'tajné heslo';
Poté zkontrolujeme, zda se hodnoty odeslané z formuláře shodují se správnými hodnotami. Protože jsme ve formuláři zadali metodu přenosu dat POST, měly by se číst ze superglobální proměnné $ _POST:
if ($ _ POST ['userName'] == $ validName && $ _POST ['userPass'] == $ validPass) {
$ _SESSION ['userName'] = $ validName;
záhlaví ("Umístění: index.php");
výstup;
}
Zde bude kód ve složených závorkách {} spuštěn se správnými hodnotami uživatelského jména a hesla. Na řádku $ _SESSION ['userName'] = $ validName; ma do relace zapíšeme proměnnou s názvem 'userName', která obsahuje přihlášení nyní oprávněného uživatele. To bude značka, kterou má přístup otevřenou všude, dokud bude platná jeho aktuální relace.
A pokud jsou do formuláře zadány nesprávné údaje, přidejte příslušnou zprávu:
else echo"
Přihlašovací jméno nebo heslo je nesprávné!
;
Veškerý kód, který je třeba uložit do souboru s názvem login.php, bude vypadat takto:
<? php
session_start ();
if ($ _ SESSION ['userName']) {
záhlaví ("Umístění: index.php");
výstup;
}
$ validName = 'Jsem můj!';
$ validPass = 'tajné heslo';
if ($ _ POST ['userName'] == $ validName && $ _POST ['userPass'] == $ validPass) {
$ _SESSION ['userName'] = $ validName;
záhlaví ("Umístění: index.php");
výstup;
}
else echo"
Přihlašovací jméno nebo heslo je nesprávné!
;
?>
Přihlásit se:
Heslo:
Krok 2
Krok 2: Vytvořte autorizační blok - samostatný soubor, který bude připojen ke každé stránce, která vyžaduje ochranu heslem. Tento soubor bude obsahovat pouze php-kód, takže jeho přípona bude „php“a my mu u takových souborů dáme název podle tradice - „auth“, tedy „auth.php“. I zde, bezprostředně po úvodní značce <? Php, by měla být instrukce k zahájení relace:
session_start ();
Můžeme číst všechny proměnné, které jsou uloženy v relaci z superglobálního pole $ _SESSION. Musíme zkontrolovat hodnotu proměnné "userName" - pokud se návštěvník ještě nepřihlásil, nebude v poli a přesměrujeme ho na stránku pro zadání jeho uživatelského jména a hesla:
if (! $ _ SESSION ['autorizováno']) {
záhlaví ("Umístění: login.php");
výstup;
}
Veškerý kód, který je třeba uložit do souboru auth.php, bude vypadat takto:
<? php
session_start ();
if (! $ _ SESSION ['admin']) {
záhlaví ("Umístění: enter.php");
výstup;
}
?>
Krok 3
Krok 3: po uložení těchto souborů na server zůstane na všech php stránkách, které je třeba chránit před neoprávněnými uživateli, aby se připojil blok autorizace. To znamená, že na samém začátku každého php souboru budete muset vložit tento kód:
<? php
vyžadovat "auth.php";
?>
Chcete-li změnit přístupové heslo, budete muset změnit hodnoty těchto proměnných v souboru login.php:
$ validName = 'Jsem můj!';
$ validPass = 'tajné heslo';
$ validName - přihlášení, $ validPass - heslo.