# HG changeset patch # User František Kučera # Date 1241536089 -7200 # Node ID 74a6a363ff9e47a7908ff862118a9fda11d2107b # Parent 4137ab2aab4b732a47d4575bef21b93be3e48e88 Převzatá struktura z BG http://sorry.vse.cz/~xkucf03/skola.php diff -r 4137ab2aab4b -r 74a6a363ff9e php/heslo/html/hlavicka.html --- a/php/heslo/html/hlavicka.html Tue May 05 16:49:30 2009 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,15 +0,0 @@ - - - - - - - - - - Změna hesla – Veverka.ch - - -

Změna hesla – Veverka.ch

- - \ No newline at end of file diff -r 4137ab2aab4b -r 74a6a363ff9e php/heslo/html/paticka.html --- a/php/heslo/html/paticka.html Tue May 05 16:49:30 2009 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,3 +0,0 @@ - - - diff -r 4137ab2aab4b -r 74a6a363ff9e php/heslo/index.php --- a/php/heslo/index.php Tue May 05 16:49:30 2009 +0200 +++ b/php/heslo/index.php Tue May 05 17:08:09 2009 +0200 @@ -1,9 +1,9 @@ '); -include("html/paticka.html"); - -?> \ No newline at end of file +zapati(); +?> diff -r 4137ab2aab4b -r 74a6a363ff9e php/heslo/lib/funkce.inc.php --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/php/heslo/lib/funkce.inc.php Tue May 05 17:08:09 2009 +0200 @@ -0,0 +1,325 @@ +getMessage()); + //header("Location: chyba_db.php"); + exit(); +} + +set_exception_handler('exception_handler'); + +session_set_cookie_params(0, $NASTAVENI['cookie_cesta']); +session_start(); + + +$strankaP = split('/', $_SERVER['REQUEST_URI']); +$stranka = $strankaP[count($strankaP)-1]; + + +if (empty($_SERVER['HTTP_ACCEPT'])) { + $mimeTyp = 'application/xhtml+xml'; +} else { + $mimeTyp = (( stristr( $_SERVER['HTTP_ACCEPT'], 'application/xhtml+xml' ) && !preg_match("/application\/xhtml\+xml;\s*q=0(\.0)?\s*(,|$)/",$_SERVER['HTTP_ACCEPT']) ) ? 'application/xhtml+xml' : 'text/html' ); +} +header("Content-Type: $mimeTyp"); +//header("Content-Type: text/html"); +//header("Content-Type: application/xhtml+xml"); + +/** $nadpis = titulek stránky + h1 */ +function zahlavi($nadpis, $autorizace = true) { + global $mimeTyp; + if ($autorizace) { + overPristup(); + } + + html(' + + + + + + + + + + + ' . $nadpis . ' + + +

' . $nadpis . '

'); +if ($autorizace) { +html('

Uživatel: ' . $_SESSION['login'] . '

'); +} +} + +/** $zobrazitNabidku = zobrazí postranní menu */ +function zapati($zobrazitNabidku = true) { + if ($zobrazitNabidku) { + html('

Obsah

+ +'); +htmlInfoKomentar(); +html(''); + } else { + html(''); + htmlInfoKomentar(); + html(''); + } + +} + +function htmlInfoKomentar() { + global $zacatek, $mimeTyp, $NASTAVENI; + if ($NASTAVENI['ladiciKomentare']) { + $konec = getMicrotime(); + html(''); + } +} + +function htmlOdstavec($text) { + html("

\n$text\n

"); +} + +function html($text) { + global $stranka; + /** Odstraníme odkazy, které vedou na tutéž stránku */ + $text = str_replace(' href="' . $stranka . '"', '', $text); + + echo("$text\n"); +} + +function htmlZnacka($znacka, $text) { + html("<$znacka>$text"); +} + +function htmlTlacitkovyOdkaz($url, $text) { + html('
'); +} + +function escapuj($text, $delka = 256) { + $text = str_replace("\n", "[br]", $text); + $text = substr(mysql_escape_string(htmlspecialchars($text)), 0, $delka); + $text = str_replace("[br]", "
", $text); + //$retezec = ereg_replace("[[:alpha:]]+://[^<>[:space:]]+[[:alnum:]/]", "\\0", $retezec); + return $text; +} + +function htmlIkonaKontrolyIP () { + global $NASTAVENI; + if ($NASTAVENI['kontrolovatIPadresu']) { + html('Kontrola IP'); + } +} + +/** volá se na všech strákách, které vyžadují autorizaci (všechny kromě prihlaseni.php) */ +function overPristup() { + global $NASTAVENI; + + if ($_SESSION['login'] == null || !isset($_SESSION['login']) || ($NASTAVENI['kontrolovatIPadresu'] && $_SERVER['REMOTE_ADDR'] != $_SESSION['ip_adresa_klienta'])) { + header("Location: prihlaseni.php"); + exit(); + } +} + +/** volá se v prihlaseni.php */ +function zkontrolujUzivatele($jmeno, $heslo) { + global $db, $NASTAVENI; + + if ($NASTAVENI['hashovatHesla']) { + $dotaz = $db->prepare("SELECT * FROM bg_uzivatel WHERE login = ? AND sha1(concat(?, heslo)) = ?"); + $dotaz->bindParam(1, $jmeno); + $dotaz->bindParam(2, $_SESSION['hesloBordel']); + $dotaz->bindParam(3, $heslo); + $dotaz->execute(); + $r = $dotaz->fetchAll(); + } else { + $dotaz = $db->prepare("SELECT * FROM bg_uzivatel WHERE login = ? AND heslo = sha1(?)"); + $dotaz->bindParam(1, $jmeno); + $dotaz->bindParam(2, $heslo); + $dotaz->execute(); + $r = $dotaz->fetchAll(); + } + + foreach ($r as $x) { + $_SESSION['login'] = $x['login']; + $_SESSION['ip_adresa_klienta'] = $_SERVER['REMOTE_ADDR']; + return true; + } + + $_SESSION['login'] = null; + return false; +} + + +function sqlZjistiHodnotu($dotaz, $parametry = null) { + global $db; + + $dotaz = $db->prepare($dotaz); + + if ($parametry != null) { + for($i = 0; $i < count($parametry); $i++) { + $dotaz->bindParam($i+1, $parametry[$i]); + } + } + + $dotaz->execute(); + $r = $dotaz->fetchAll(); + + foreach ($r as $x) { + return $x[0]; + } + return null; +} + +function sqlDotaz($dotaz, $parametry = null) { + global $db; + try { + $dotaz = $db->prepare($dotaz); + + if ($parametry != null) { + for($i = 0; $i < count($parametry); $i++) { + $dotaz->bindParam($i+1, $parametry[$i]); + } + } + + $dotaz->execute(); + $r = $dotaz->fetchAll(); + + return $r; + } catch (PDOException $e) { + logujChybu("sqlDotaz($dotaz)"); + } +} + +function getMicrotime(){ + list($usec, $sec) = explode(" ",microtime()); + return ((float)$usec + (float)$sec); +} + +function sqlHtmlTabulka($dotaz, $hlavicky = null, $parametry = null, $htmlID = null) { + global $db; + + $dotaz = $db->prepare($dotaz); + + if ($parametry != null) { + for($i = 0; $i < count($parametry); $i++) { + $dotaz->bindParam($i+1, $parametry[$i]); + } + } + + $dotaz->execute(); + $r = $dotaz->fetchAll(); + + if ($htmlID == null) { + $htmlID = getMicrotime(); + } + + + html(''); + if ($hlavicky != null) { + html(''); + foreach ($hlavicky as $h) { + htmlZnacka('td', $h); + } + html(''); + $pocet = count($hlavicky); + } else { + $pocet = null; + } + html(''); + + foreach ($r as $x) { + html(''); + if ($pocet == null) { + /** děleno 2 protože jsou tam číselné i řetězcové klíče */ + $pocet = count($x) / 2; + } + + for ($i = 0; $i < $pocet; $i++) { + htmlZnacka('td', $x[$i]); + } + html(''); + } + html('
'); +} + + +function htmlTabulkaUzivatelu() { + sqlHtmlTabulka('SELECT concat(concat(concat(concat(\'\'),login),\'\'), jmeno, prijmeni, email FROM bg_uzivatel', array('Login', 'Jméno', 'Příjmení', 'e-mail')); +} + +function htmlTabulkaProduktu() { + sqlHtmlTabulka('SELECT kod, nazev, popis FROM bg_produkt', array('Kód', 'Název', 'Popis')); +} + + +function sqlHtmlTabulkaBugu($r) { + if (count($r) > 0) { + $htmlID = getMicrotime(); + html(''); + html(''); + htmlZnacka('td', 'Číslo'); + htmlZnacka('td', 'Název'); + htmlZnacka('td', 'Zadavatel'); + htmlZnacka('td', 'Řešitel'); + //htmlZnacka('td', 'Datum'); + html(''); + + foreach ($r as $x) { + html(''); + htmlZnacka('td', '' . $x['id'] . ''); + htmlZnacka('td', $x['nazev']); + htmlZnacka('td', odkazNaUzivatele($x['zadavatel'])); + htmlZnacka('td', odkazNaUzivatele($x['resitel'])); + //htmlZnacka('td', $x['datum']); + html(''); + } + html('
'); + } else { + htmlOdstavec('Nic nenalezeno.'); + } +} + +function odkazNaUzivatele($uzivatel) { + if ($uzivatel == '-') { + return '-'; + } else { + return '' . $uzivatel . ''; + } +} + +function logujChybu($popis, $chyba = null) { + htmlOdstavec($popis); +} + +?> diff -r 4137ab2aab4b -r 74a6a363ff9e php/heslo/lib/nastaveni.php --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/php/heslo/lib/nastaveni.php Tue May 05 17:08:09 2009 +0200 @@ -0,0 +1,11 @@ +setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); + +$NASTAVENI['cookie_cesta'] = '/~xkucf03/bg/'; // aby nám někdo nekradl koláčky +$NASTAVENI['hashovatHesla'] = true; // aby hesla neputovala nezahashovaná po HTTP +$NASTAVENI['kontrolovatIPadresu'] = true; // aby nešlo krást session +$NASTAVENI['ladiciKomentare'] = true; // vypíše na konec stránky HTML komentář (mime, doba zpracování, IP klienta...) + +?> diff -r 4137ab2aab4b -r 74a6a363ff9e php/heslo/styl.css --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/php/heslo/styl.css Tue May 05 17:08:09 2009 +0200 @@ -0,0 +1,183 @@ +/** žádné rámečky kolem obrázků */ +a img { + border: none; +} +/** odkazy vedoucí mimo stránky budou označené ikonkou */ +a[href^='http:'] { + padding-right: 11px; + background: transparent url('externi_odkaz.png') right top no-repeat scroll; +} + +/** písmo, okraje a obrázek nahoře */ +html { + background: #ded6a3; + color:black; + background-image: url('navigace.gif'); + background-repeat: repeat-x; + +} +body { + font-family: Verdana, "Arial CE", Arial, Helvetica, sans-serif; + margin-top: 40px; + margin-left: 14em; + margin-right: 40px; + margin-bottom: 40px; + /** aby řádky nebyly příliš dlouhé */ + max-width: 50em; +} +/** H2, která se má zobrazovat jen v textových prohlížečích */ +#skrytyNadpisObsahu { + display:none; +} +/** seznam s obsahem */ +#obsah { + position:absolute; + top: 40px; + left: 0px; +} +/** položka nabídky */ +#obsah li { + list-style-image: url("odrazka.png"); + padding-top: 4px; + padding-bottom: 4px; + padding-left: 1ex; +} +/** položka nabídky pod myší */ +#obsah li:hover { + list-style-image: url("odrazka_pod_mysi.png"); +} + +#prihlasenyUzivatel { + text-align: right; + color: gray; + position: absolute; + position: relative; + top: -3em; +} + +table { + border-collapse:collapse; + margin-left: 2em; + margin-right: auto; + width: 33em; +} +td { + border: 1px solid; + padding-top: 4px; + padding-bottom: 4px; + padding-left: 6px; + padding-right: 6px; +} +thead tr { + background: #9B9672; + color:black; +} +thead a { + text-decoration:none; + color:black; + /** kopie hodnoty z thead tr */ + background: #9B9672; +} +tbody tr:hover { + background-color: #c1c1a1; + color:black; +} + + +/** HTML Formuláře */ +button { + border:gray solid 1px; + background: silver; + background-image: url('navigace.gif'); + color: white; + margin: 2px; + margin-top: 4px; + padding-left:4px; + padding-right:4px; +} + +fieldset { + border: none; +} + +form { + text-align: right; + max-width: 22em; +} + +form.siroky { + max-width: 30em; +} + +input { + border:silver solid 1px; + background: white; + color: black; + margin: 2px; + padding: 2px; + width:200px; +} + +select { + border:silver solid 1px; + background: white; + color: black; + margin: 2px; + padding: 2px; + width:206px; +} + +textarea{ + border:silver solid 1px; + background: white; + color: black; + margin: 2px; + padding-left: 2px; + +} + + +p.komentar { + border: gray solid 1px; + padding: 5px; +} + +div.komentarZahlavi { + margin-bottom: 4px; +} + +div.komentarZahlavi { + +} + +span.komentarOdpovedet { + +} + + + + + + +/** přejaté z Firefoxu */ +h1 { + display: block; + font-size: 2em; + font-weight: bold; + margin: .67em 0; +} +/** přejaté z Firefoxu */ +h2 { + display: block; + font-size: 1.5em; + font-weight: bold; + margin: .83em 0; +} +/** přejaté z Firefoxu */ +h3 { + display: block; + font-size: 1.17em; + font-weight: bold; + margin: 1em 0; +} +