LINUXSOFT.cz Přeskoč levou lištu
Uživatel: Heslo:  
   CZUKPL

> 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 45722×

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:

  1. Administrátor musí ze stránky poznat, jak má údaje zadat, tzn. měli bychom to nějak popsat
  2. 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

pridej.cz

 

DISKUZE

Good Job 3.12.2004 16:00 David Gajdos
L Re: Good Job 3.12.2004 19:59 Petr Zajíc
Nemá chybu 4.12.2004 15:21 Martin Svoboda
Dotaz 5.12.2004 11:32 mysql_php
L Re: Dotaz 5.12.2004 12:00 Petr Zajíc
Zmena v súboroch 25.10.2006 20:27 Peter Rožnay
Vkládání datumu 12.8.2007 17:42 Jindřich Kovář
Rada více urovní 7.1.2008 10:08 Pepek Námořník
Zamezení přístupu do admin.php 14.3.2010 13:00 Jan Quagmire
function je admin 20.6.2010 20:06 marek cerny




Příspívat do diskuze mohou pouze registrovaní uživatelé.
> Vyhledávání software
> Vyhledávání článků

23.5.2018 20:55 /Ondřej Čečák
Od pátku 25.5. proběhne na Fakultě informačních technologií ČVUT v Praze openSUSE Conference. Můžete se těšit na spostu zajímavých přednášek, workshopů a také na Release Party nového openSUSE leap 15.0. V na stejném místě proběhne v sobotu 26.5. i seminář o bezpečnosti CryptoFest.
Přidat komentář

20.5.2018 17:45 /Redakce Linuxsoft.cz
Ve čtvrtek 31. května 2018 připravuje webový magazín BusinessIT ve spolupráci s Best Online Média s.r.o. pátý ročník odborné konference Firemní informační systémy 2018. Akce proběhne v kongresovém centru Vavruška (palác Charitas), Karlovo náměstí 5, Praha 2 (u metra Karlovo náměstí) od 9:00 hod. dopoledne do cca 15 hod. odpoledne. Konference je zaměřena na efektivní využití firemních informačních systémů a na to, jak plně využít jejich potenciál. Podrobnější informace na webových stránkách konfrence.
Přidat komentář

14.5.2018 7:28 /František Kučera
Květnový pražský sraz spolku OpenAlt se koná již tento čtvrtek – 17. 5. 2018 od 18:00 v Kavárně Ideál (Sázavská 30, Praha), kde máme rezervovaný salonek. Tentokrát na téma: Audio – zvuk v GNU/Linuxu.
Přidat komentář

7.5.2018 16:20 /František Kučera
Na stránkách spolku OpenAlt vyšla fotoreportáž Pražské srazy 2017 dokumentující srazy za uplynulý rok. Květnový pražský sraz na téma audio se bude konat 17. 5. 2018 (místo a čas ještě upřesníme).
Přidat komentář

17.4.2018 0:46 /František Kučera
Dubnový pražský sraz spolku OpenAlt se koná již tento čtvrtek – 19. 4. 2018 od 18:00 v Kavárně Ideál (Sázavská 30, Praha), kde máme rezervovaný salonek. Tématem tohoto srazu bude OpenStreetMap (OSM) aneb svobodné mapy.
Přidat komentář

16.3.2018 22:01 /František Kučera
Kulatý OpenAlt sraz v Praze oslavíme klasicky: u limonády a piva! Přijďte si posedět, dát si dobré jídlo a vybrat z mnoha piv do restaurace Kulový blesk, který najdete v centru Prahy nedaleko metra I. P. Pavlova na adrese Sokolská 13, Praha 2. Sraz se koná ve čtvrtek 22. března a začínáme v 18:00. Heslo: OpenAlt. Vezměte s sebou svoje hračky! Uvítáme, když si s sebou na sraz vezmete svoje oblíbené hračky. Jestli máte nějaký drobný projekt postavený na Arduinu, nějakou zajímavou elektronickou součástku, či třeba i pěkný úlovek z crowdfundingové akce, neváhejte. Oslníte ostatní a o zábavu bude postaráno.
Přidat komentář

13.2.2018 0:41 /František Kučera
Únorový pražský sraz OpenAltu se koná 15. 2. 2018 a tentokrát se vydáme na návštěvu do jednoho pražského datacentra. Sejdeme se v 17:50 v severovýchodní části nástupiště tramvajové zastávky Koh-I-Noor. Po exkurzi se přesuneme do restaurace U Pštrosa (Moskevská 49), kde probereme tradiční témata (svobodný software a hardware, DIY, CNC, SDR, 3D tisk…) a tentokrát bude k vidění i IoT brána od The Things Network.
Přidat komentář

11.2.2018 23:11 /Petr Ježek
Hledáte lehký a rychlý prolížeč PDF souborů? Pokud vás již omrzelo čekat na načítání stránek či jiné nešvary, zkuste xreader.
Přidat komentář

   Více ...   Přidat zprávičku

> Poslední diskuze

20.2.2018 18:48 / Ivan Majer
portal

20.2.2018 15:57 / Jan Havel
Jak využíváte služby cloudu v podnikání?

16.1.2018 1:08 / Ivan Pittner
verejna ip od o2 ubuntu

15.1.2018 17:26 / Mira Harvalik
Re: Jak udělat HTML/Javascript swiping gallery do mobilu?

30.12.2017 20:16 / Michal Knoll
odmocnina

Více ...

ISSN 1801-3805 | Provozovatel: Pavel Kysilka, IČ: 72868490 (2003-2018) | mail at linuxsoft dot cz | Design: www.megadesign.cz | Textová verze