Jednoduchý návod na vlastní prezentaci v PHP s použitím CSS a MySql databáze.
Dnes si zajistíme přihlašování uživatelů a jejich kontrolu.
Musíme upravit soubor index.php a to tak, že hned za kontrolu blokovaných IP adres přidáme podmínku if ($page=="admin") {include("login.php");} Mělo by to vypadat takto:
upravený index.php
<?php
include("block.php");
if ($page=="admin") {include("login.php");}
include("config.php");
include("command.inc");
…zbytek souboru
a taky tento soubor vytvořit.
login.php
<?
if (!IsSet($_SERVER["PHP_AUTH_USER"]) or $_COOKIE["access"]=="0")
{
SetCookie ("access");
Header("WWW-Authenticate: Basic realm=\"Adminsitrace\"");
$access = "0";
}
else
{
include("config.php");
$heslo = MD5($_SERVER["PHP_AUTH_PW"]);
$dblogin = mysql_query("Select * FROM admini WHERE login='".$_SERVER["PHP_AUTH_USER"]."'") or die ("Nelze se nacist data login pro přihlášení.<br>" . mysql_error());
$dbheslo = mysql_query("Select * FROM admini WHERE heslo='".$heslo."'") or die ("Nelze se nacist data heslo pro přihlášení.<br>" . mysql_error());
$dblogin1 = mysql_num_rows($dblogin);
$dbheslo1 = mysql_num_rows($dbheslo);
if ($dblogin1!="1" or $dbheslo1!="1") { $access = "0"; SetCookie ("access", "0"); }
}
?>
Tento soubor nám zajistí přihlašování pomocí http autentifikace.
První podmínka nám kontroluje pomocí funkce isset, jestli je nastavena proměnná SERVER["PHP_AUTH_USER"] a nebo jestli hodnota $_COOKIE["access"] se rovná 0.
Pokud je alespoň jedna z těchto podmínek splněna, znamená to, že uživatel není přihlášen a zobrazí se mu http autentifikace.
Pokud není splněna ani jedna z podmínek, znamená to, že již byly přihlašovací informace odeslány a my musíme provést jejich kontrolu.
Funkce isset testuje, jestli proměnná existuje. Pokud je proměnná zinicializovaná a má nenulový obsah vrací funkce TRUE, v opačném případě vrací FALSE.
Další novou funkcí je funkce setcookie.
Tako funkce definuje cookie, který se pošle spolu s hlavičkami. Cookies se musí odeslat jako první ze všech HTTP hlaviček (to je omezení cookies, ne PHP). Volání této funkce musíte tudíž umístit před jekékoli tagy.
Všechny argumenty kromě argumentu name jsou nepovinné. Pokud je přítomný pouze argument name, u klienta se smaže cookie tohoto jména. Kterýkoliv argument můžete také nahradit prázdným řetězcem (""), čímž tento argument přeskočíte. Argumenty expire a secure jsou celočíselné a nedají se přeskočit prázdným řetězcem. Místo toho použijte nulu (0). Argument expire je běžné Unixové celočíselné vyjádření času, jak je vrací funkce time() či mktime(). Argument secure indikuje, že by se tento cookie měl přenášet pouze po zabezpečeném HTTPS spojení.
Pokračujeme načtením soubor config.php pro spojení s databází.
Dále si do proměnné heslo uložíme heslo zadané uživatelem při authentifikaci, které si zakódujeme pomocí funkce MD5 a to proto že hesla v databázi se snažíme uchovat bezpečná.
MD5 je rozšířená hašovací funkce s otiskem (nebo-li kontrolním součtem, hašem) o velikosti 128 bitů. MD5 je popsána v internetovém standardu RFC 1321. Prosadila se do mnoha aplikací, např. pro kontrolu integrity souborů nebo ukládání hesel.
Do proměnné dbheslo si vytáhneme data pro heslo z tabulky admin pro prihlášeného uživatele a do proměnné dhheslo1 si vložíme přímo toto heslo.
Nyní už jen zkontrolujme, jestli heslo zadané uživatelem se shoduje s heslem v databázi. Pokud ne, nastavíme proměnnou access na hodnotu 0 a zapíšeme cookies access takés touto hodnotou.
Nakonec ještě musíme vytvořit tabulku admin s daty pro adminstraci
CREATE TABLE `admini` (
`id` int(3) NOT NULL auto_increment,
`jmeno` varchar(255) NOT NULL default '',
`login` varchar(20) NOT NULL default '',
`heslo` varchar(255) NOT NULL default '',
PRIMARY KEY (`id`)
) TYPE=MyISAM AUTO_INCREMENT=6 ;
INSERT INTO `admini` (`id`, `jmeno`, `login`, `heslo`) VALUES
(1, 'SUPERADMIN', 'admin', '63a9f0ea7bb98050796b649e85481845');
Tento script nám vytvořil tabulku a vložil do ní hlavního administrátora.
Tento „superadmin“ má ve výchozím stavu následující přihlašovací údaje:
Login: admin
Heslo: root
Tímto jsme si ošetřili přihlašování k administračnímu rozhraní.
V příštím díle, se již vrhneme na samotné moduly a začneme správou uživatelů.
K nahlédnutí na http://ukazky.owebu.cz/diviweb
Login: admin
Heslo: root
Soubory k tomuto dílu. DOWNLOAD
Autor: Václav Dressler