Na to budeme potřebovat formulář. Jednoduchá záležitost, pokud vám tak nepřipadá, něco si o tom přečtěte.
session_unset() - tím zrušíme všechny session, které by mohly ještě stále probíhat, aby nerušily právě náš průběh oprace
<?php
session_unset(); ?>
<form action="uvod.php" method="post">
Heslo: <input type="password" name="heslo" /><br />
<input type="submit" value="OK" />
</form>
Měli bychom ověřit, to co bylo zadáno na předchozí stránce. Spustíme session, kterou se bude předávat mezi stránkami authorizační údaj. Tento skript by měl být v dokumentu ještě před jakýmkoli HTML výstupem, aby se neprozradil ani kousiček ze skrývané stránky.
<?php
$heslo = "1234"; /*nastavíme si heslo*/
session_start();
$pass = $_POST['heslo'];
/*proměnná $pass se rovná tomu co bylo zadáno ve formulari na strane formular-heslo.php*/
if (($pass == $heslo) or ($_SESSION['authuser'] == 1)) {
$_SESSION['authuser'] = 1;
/*pokud se zadané a stanovené heslo rovnají, můžeme nastavit session authuser =1, to se bude předávat do všech stránek a díky tomu budete mít také přístup k zaheslovaným stránkám; stránka se normálně načte; musíme také vytvořit možnost, že už bude někdo přihlášený a na úvodní stránku se vrátí proto použijeme-or-
(což znamená něco jako -nebo-)*/
}else {
echo "<p>Nemáte oprávnění k prohlížení této stránky</p>\n";
exit();
/*pokud se hesla rovnat nebudou, tak se vypíše echo a pomocí funkce exit() se přestane stránka načítat*/
}
?>
Tady už pokračuje obyčejná HTML stránka.. samozřejmě začnete znaky
<HTML>....atd.
Musíte do nich vložit skript uvedený níže. Už se předává pouze $_SESSION['authuser'] = 1; takže stačí na každou zaheslovanou stránku vložit požadavek, že se má prověřit, zda se to rovná 1. A také se musí session předat dál, abyste se dostali na další stránku pod heslem.
Tento skript stačí vložit na začátek každé stránky, která nemá být veřejně přístupná.
<?php
session_start();
if ($_SESSION['authuser'] != 1) {
echo "<p>Nemáte oprávnění k prohlížení této stránky</p>\n";
exit();
}
?>
Protože jsme přes proměnnou authuser kontrolovali přihlášení, tak teď ji naopak jednoduše vynulujeme.
<?php
session_start();
$_SESSION['authuser'] = 0;
exit();
?>
Jsme odhlášeni a konečně je na čase vyzkoušet jestli se na ty stránky nedostaneme i bez přihlášení. Zkuste to.. v příkladu po odhlášení k tomu máte ideální příležitost.
Bystří si všimli, že jsem tady pod okny s kodem neuváděl "zobrazit příklad". Bylo by to asi zbytečné, protože pokud nejsou skripty pohromadě, tak téměř nic neznamenají.
Jestli si chcete prostudovat skript, který jsem použil v příkladu, tak si ho stáhněte.
Je to lepší způsou jak si zaheslovat stránku, než ten původní. Dokonce vám umožní zaheslovat tak celou síť stránek.
Příště až se budu zabývat zaheslováním, tak bych rád ukázal jak rozlišit uživatele. To už však bude určitě muset pracovat s databází.
Pokud mi s tím chcete pomoct, ozvěte se.