PHP (74) - Administrátorské rozhraní portálu
Dnes se při stavbě portálu zakousneme do tvorby administrátorského rozhraní.
3.12.2004 15:00 |
Petr Zajíc
| Články autora
| přečteno 53846×
V minulém díle jsme teoreticky rozebrali úskalí, která nás mohou
potkat při sestavování administrační sekce portálu. Dnes si pojďme
ukázat, jak takovou věc v praxi dovést do zdárného konce.
Administrační sekce portálu
Jak bude vypadat funkce pro ověřování, zda je přihlášený uživatel
administrátorem už asi tušíte. Její jádro bude spočívat v tom, že v
prvé řadě otetuje, zda je vůbec někdo přihlášen, a pokud ano, zda má v
databázi nastaveno, že je to administrátor. Můžeme tedy směle napsat
něco jako:
function
jeadmin ($link)
{
if (!isset($_SESSION["id"])) return false;
$vysledek=mysql_query("select id from
uzivatele where id=".$_SESSION["id"]." and jeadmin=1", $link);
return (boolean) mysql_num_rows($vysledek);
}
Všimněte si, že funkci se nemusí předávat jako parametr ID
přihlášeného uživatele, protože proměnné $_SESSION jsou naštěstí v těle
funkcí k dispozici. Jestliže přihlášený uživatel bude administrátorem,
můžeme někam umístit jeho osobní menu. Já jsem to (například) umístil
do souboru index.php takto:
...atd...
</table>
<?require "admin.php"?>
</div>
</body>
</html>
Připomínám (byla o tom řeč minule),
že každý skript přístupný pouze administrátorovi by měl začínat řádkem:
if (!jeadmin()) return;
jinak totiž napsáním šikovného url ve stylu
index.php?clanek=NecoCoMelVidetPouzeAdmin uzří i nepovolané oko to, co
mělo zůstat skryto.
Rozhraní pro zadávání koncertů
Skritp zadejkoncert.php nejprve otestuje, zda je přihlášen
administrátor. Pokud je, zobrazí formulář pro zadání data, času a místa
konání koncertu. Celý skript je poměrně přímočarý, až na patálie
způsobené zpracováním údajů o čase.
Minule jsme zdůvodnili, že nejschůdnější varianta bude spočívat v tom,
když administrátorovi zkrátka striktně nařídíme určitý formát zadávání
data a času. Když říkám nařídíme, mám tím na mysli dvě věci:
- Administrátor musí ze stránky poznat, jak má údaje zadat, tzn.
měli bychom to nějak popsat
- Skript bude muset provést kontrolu toho, zda to uživatel dodržel.
Skript pro kontrolu formátu data a času využívá funkci explode,
která rozdělí "řetězec řetězcem". (Je to jako vytloukání klínu klínem
;-)))). Měly by vzniknout tři řetězce v případě datumu (dělíme tečkou)
a dva řetězce v případě času (dělíme dvojtečkou). To lze testovat
pomocí funkce count.
Dál je to již snadné - u času lze testovat, zda je hodina v intervalu
0-23 a minuta 0-59, u datumů lze použít funkci checkdate. Takže celá
funkce pro datum vypadá následovně:
function jedatum($datum)
{
$test=explode(".",$datum);
if(!(count($test))==3) return false;
return checkdate($test[1],$test[0],$test[2]);
}
Pozn.: Tady vidíme, že nařídit
uživatelům vstupní formát zadávání informací může programátorovi značně
ulehčit práci. Ovšem, takový program se pak lehce může stát
"user-unfriendly".
Ještě to není všechno. Další problém nastane, když naše přepečlivě
ošetřené datumy budeme chtít uložit do databáze. MySQL sice umí
pochopit různé formáty data a času, ale české datum mezi nimi není. S
časem problém nebude, ale na datum bude ještě nutné dopsat nějakou
konverzní funkci. Vyjdeme z toho, že datum je již otestované, a tak
lehce překlopíme datum z formátu d.m.yyyy třeba do formátu yyyy-mm-dd,
kterému již MySQL bez problému porozumí. Celý skript zadejkoncert.php
si můžete zobrazit.
Zjednodušení odkazu na databáze
Pravděpodobně jste si všimli toho, že prakticky každá funkce, která
se dotazovala databáze, přebírala dosud jako vstupní parametr odkaz na
databázi (proměnná $link). Lukáš Kokoška
v diskusi k
článku o přihlašování uživatelů navrhoval použít následující
konstrukci:
function
iduzivatele ($prezdivka, $heslo)
{
global $link;
...
}
Takové vylepšení je samozřejmě žádoucí, neboť snižuje počet
předávaných parametrů a tím zvyšuje čitelnost kódu. Nicméně, stále je v
těle funkcí třeba uvádět klíčové slovo global a je jen otázka času, kdy
se na to zapomene.
Inspirován Lukášovým příspěvkem jsem zavedl jen jednu globální
proměnnou $GLOBALS["link"], která již je přístupná i ve funkcích a celé
připojování k databázi jsem umístil do jednoho skriptu. Takže teď
funcke vypadají ve stylu:
function iduzivatele
($prezdivka, $heslo)
{
mysql("select...",$GLOBALS["link"]);
}
Bude to jednak čitelnější a jednak jednodušší na správu.
Změny na portálu
Nové soubory:
Změněné soubory:
Většina souborů. Je to kvůli redesignu připojení k databázi
popsanému výše.
Na současný stav projektu se můžete na našem webu podívat
nebo si jej můžete stáhnout.
Pozn.: Aby Vám stažená verze
fungovala na lokálním stroji, upravte si hodnotu konstant SQL_HOST,
SQL_USERNAME, SQL_PASSWORD a SQL_DBNAME. Případně si je můžete včlenit
do konfiguračního souboru podobně, jako jsem to udělal v souboru
func.php.
Verze pro tisk
|
Příspívat do diskuze mohou pouze registrovaní uživatelé.
|
|

Vyhledávání software

Vyhledávání článků
28.11.2018 23:56 /František Kučera Prosincový sraz spolku OpenAlt se koná ve středu 5.12.2018 od 16:00 na adrese Zikova 1903/4, Praha 6. Tentokrát navštívíme organizaci CESNET. Na programu jsou dvě přednášky: Distribuované úložiště Ceph (Michal Strnad) a Plně šifrovaný disk na moderním systému (Ondřej Caletka). Následně se přesuneme do některé z nedalekých restaurací, kde budeme pokračovat v diskusi.
Komentářů: 1
12.11.2018 21:28 /Redakce Linuxsoft.cz 22. listopadu 2018 se koná v Praze na Karlově náměstí již pátý ročník konference s tématem Datová centra pro business, která nabídne odpovědi na aktuální a často řešené otázky: Jaké jsou aktuální trendy v oblasti datových center a jak je optimálně využít pro vlastní prospěch? Jak si zajistit odpovídající služby datových center? Podle jakých kritérií vybírat dodavatele služeb? Jak volit vhodné součásti infrastruktury při budování či rozšiřování vlastního datového centra? Jak efektivně datové centrum spravovat? Jak co nejlépe eliminovat možná rizika? apod. Příznivci LinuxSoftu mohou při registraci uplatnit kód LIN350, který jim přinese zvýhodněné vstupné s 50% slevou.
Přidat komentář
6.11.2018 2:04 /František Kučera Říjnový pražský sraz spolku OpenAlt se koná v listopadu – již tento čtvrtek – 8. 11. 2018 od 18:00 v Radegastovně Perón (Stroupežnického 20, Praha 5). Tentokrát bez oficiální přednášky, ale zato s dobrým jídlem a pivem – volná diskuse na téma umění a technologie, IoT, CNC, svobodný software, hardware a další hračky.
Přidat komentář
4.10.2018 21:30 /Ondřej Čečák LinuxDays 2018 již tento víkend, registrace je otevřená.
Přidat komentář
18.9.2018 23:30 /František Kučera Zářijový pražský sraz spolku OpenAlt se koná již tento čtvrtek – 20. 9. 2018 od 18:00 v Radegastovně Perón (Stroupežnického 20, Praha 5). Tentokrát bez oficiální přednášky, ale zato s dobrým jídlem a pivem – volná diskuse na téma IoT, CNC, svobodný software, hardware a další hračky.
Přidat komentář
9.9.2018 14:15 /Redakce Linuxsoft.cz 20.9.2018 proběhne v pražském Kongresovém centru Vavruška konference Mobilní řešení pro business.
Návštěvníci si vyslechnou mimo jiné přednášky na témata: Nejdůležitější aktuální trendy v oblasti mobilních technologií, správa a zabezpečení mobilních zařízení ve firmách, jak mobilně přistupovat k informačnímu systému firmy, kdy se vyplatí používat odolná mobilní zařízení nebo jak zabezpečit mobilní komunikaci.
Přidat komentář
12.8.2018 16:58 /František Kučera Srpnový pražský sraz spolku OpenAlt se koná ve čtvrtek – 16. 8. 2018 od 19:00 v Kavárně Ideál (Sázavská 30, Praha), kde máme rezervovaný salonek. Tentokrát jsou tématem srazu databáze prezentaci svého projektu si pro nás připravil Standa Dzik. Dále bude prostor, abychom probrali nápady na využití IoT a sítě The Things Network, případně další témata.
Přidat komentář
16.7.2018 1:05 /František Kučera Červencový pražský sraz spolku OpenAlt se koná již tento čtvrtek – 19. 7. 2018 od 18:00 v Kavárně Ideál (Sázavská 30, Praha), kde máme rezervovaný salonek. Tentokrát bude přednáška na téma: automatizační nástroj Ansible, kterou si připravil Martin Vicián.
Přidat komentář
Více ...
Přidat zprávičku
 Poslední diskuze
31.7.2023 14:13 /
Linda Graham iPhone Services
30.11.2022 9:32 /
Kyle McDermott Hosting download unavailable
13.12.2018 10:57 /
Jan Mareš Re: zavináč
2.12.2018 23:56 /
František Kučera Sraz
5.10.2018 17:12 /
Jakub Kuljovsky Re: Jaký kurz a software by jste doporučili pro začínajcího kodéra?
Více ...
|