Vajíčková mánie Vajíčková mánie
Probíhá výprodej HTML, JavaScript a Bootstrap. Slevy až 80 %
Vyšlehej si extra vědomosti! Až 100% bodů na prémiový obsah zdarma! Více zde

Lekce 10 - Skládání stránek v PHP

Unicorn College Tento obsah je dostupný zdarma v rámci projektu IT lidem.
Vydávání, hosting a aktualizace umožňují jeho sponzoři.

V minulé lekci, Vylepšení kontaktního formuláře v PHP, jsme dokončili kontaktní emailový formulář. S formuláři umíme již slušně zacházet. Dnes se v PHP tutoriálu podíváme na dynamické skládání stránek.

Dynamické skládání stránek

Většina dnešních webových stránek se skládá vlastně ze 2 částí. Tou první je tzv. layout, neboli rozložení webu. To je na každé podstránce webu stejné a obvykle obsahuje logo webu, navigační menu a patičku. Druhá část stránky je potom samotný článek, který je do layoutu zobrazen.

Layout webových stránek

U statických webových stránek jsme do každé podstránky museli layout ručně zkopírovat (v minulosti se daly používat rámce, ale ty byly z HTML kvůli četným problémům odebrány). Mít v každé podstránce celý layout je samozřejmě nepřehledné, pracně se tam vkládá a hlavně je problém v layoutu potom něco změnit, změnu musíme udělat ve všech podstránkách.

Jelikož nyní známe PHP, není nejmenší problém v tom, aby obsah článku do layoutu vložilo za nás. Na webu budeme mít v jednotlivých souborech pouze podstránky (bez layoutu) a layout bude přítomný v souboru index.php. Zde do layoutu vložíme ten článek, který uživatel vyžaduje. Uživatel si o článek řekne metodou GET, vloží tedy jméno stránky do URL adresy.

Můžeme si to představit takto:

Skládání webových stránek v PHP

Způsoby skládání stránek

Stránky můžeme skládat vlastně dvěma způsoby. Buď jak jsme si uvedli výše, že do layoutu vkládáme podstránku, nebo můžeme do podstránky vložit nahoru hlavičku a dolů patičku. My si zde ukážeme vkládání podstránky do layoutu, jelikož tento princip se dále používá i pro vkládání článků z databáze.

Příprava souborů

Založme si nový projekt a připravme si potřebné soubory. Budeme potřebovat index.php, ve kterém se bude nacházet náš layout. Já jsem níže uvedený layout převzal ze zdejšího HTML seriálu, můžete si ho odtamtud vypůjčit a stáhnout i potřebný styl a obrázky. Nebo si prostě napište svůj, bohatě stačí, když tam bude nadpis :)

<!DOCTYPE html>
<html lang="cs-cz">

        <head>
                <meta charset="utf-8" />
                <link rel="stylesheet" href="styl.css" type="text/css" />
                <title>HoBiho portfolio</title>
        </head>

        <body>
                <header>
                        <div id="logo"><h1>HoBi</h1></div>
                        <nav>
                                <ul>
                                        <li><a href="index.php?stranka=domu">Domů</a></li>
                                        <li><a href="index.php?stranka=omne">O mně</a></li>
                                        <li><a href="index.php?stranka=dovednosti">Dovednosti</a></li>
                                        <li><a href="index.php?stranka=reference">Reference</a></li>
                                        <li><a href="index.php?stranka=kontakt">Kontakt</a></li>
                                </ul>
                        </nav>
                </header>

                <article>
                        <div id="centrovac">
                                <header>
                                        <h1>O mně</h1>
                                </header>

                                <section>
                                        <?php

                                        ?>
                                </section>
                                <div class="cistic"></div>
                        </div>
                </article>


                <footer>
                        Vytvořil &copy;HoBi 2013 pro <a href="http://itnetwork.cz">ITNETWORK.CZ</a>
                </footer>
        </body>
</html>

V layoutu máme nějakou HTML hlavičku, dále hlavičku webové stránky, ve které je logo a navigace. Všimněte si, že odkazy na podstránky směřují na adresu:

index.php?stranka=domu

Všechny odkazy tedy vedou na soubor s layoutem, kterému předávají v parametru název stránky, která se do něj má vložit. Tyto HTML stránky si vložíme do podsložky podstranky se stejným názvem a příponou .php. Podstránka omne tedy bude uložena v:

podstranky/omne.php

Podstránky by teoreticky mohly mít i příponu HTML, ale často v některé budeme chtít nějaký PHP skript, např. pro kontaktní formulář.

Všimněte si také prázdné PHP sekvence v elementu section. Přesně tam budeme podstránku vkládat.

Vytvořte si složku podstranky a několik takových podstránek s příponou .php.

Vložení souboru

PHP má víceméně dva způsoby, jak do nějakého skriptu vložit obsah jiného souboru.

Vložení textu

Pokud chceme obsah cizího souboru vložit jako text, slouží k tomu PHP funkce file_get_conten­ts(). Funkce bere v parametru cestu k souboru a vrací text, který soubor obsahuje.

Obsah podstránky bychom pomocí funkce vložili kódem níže. Kód není ještě bezpečný, což dořešíme na konci lekce.

// skript níže není bezpečný
$obsah = file_get_contents('podstranky/' . $_GET['stranka'] . '.html');
echo $obsah;

Všimněte si, že jsem dal podstránkám příponu .html. Pokud bychom měli v podstránce totiž PHP skript a vložili ho touto funkci do layoutu, vypsal by se zdrojový kód skriptu místo toho, aby se provedl. To může být dost nebezpečné, jelikož PHP skripty běžně obsahují přístupové údaje k databázi a další citlivá data. Pokud však chceme vložit nějaké HTML nebo prostý text z nějakého souboru, je funkce ideální.

Dalším bezpečnostním problémem je, že uživatel si může do parametru napsat co chce a vypisovat si tak i obsah stránek, které ukazovat nechceme.

Vložení skriptu

Pokud chceme, aby se obsah cizího souboru vykonal jako PHP skript, použijeme k tomu funkci require(). Funkce bere jako parametr opět cestu k souboru a obsah hned vypíše. Pokud je v souboru nějaká PHP sekvence, tak ji spustí.

Do PHP sekvence v index.php vložíme následující kód:

// skript níže není bezpečný
require('podstranky/' . $_GET['stranka'] . '.php');

A vyzkoušíme zadat adresu nějaké podstránky:

Skládání stránek v PHP

Můžete si zkusit proklikat menu, podstránka se vždy vloží do layoutu a celý web se vypíše v prohlížeči. Velmi jsme si zjednodušili práci a otevřeli cestu do budoucna, kdy texty budeme vkládat z databáze.

Pozn.: Kromě require nalezneme v PHP i funkci include. Ta funguje úplně stejně, jen při neúspěšném vložení nezastaví běh aplikace, ale pouze vyvolá warning..

Bezpečnost

POZOR! Obě výše zmíněné funkce jsou potenciálně velmi nebezpečné a pokud je špatně použijete, vznikne vám v aplikaci bezpečnostní díra.

Podstata problému je v tom, že zobrazujeme obsah nějakého souboru, jehož název zadává uživatel. Ten tak může načíst např. soubor .htpasswd, ve kterém jsou uložena hesla a to touto adresou:

http://vasestranka.cz/index.php?stranka=../.htpasswd

Sekvence ../ přesune o složku výše. Dostaneme se tedy z podstránek do kořenové složky s webem. Následně útočník může zobrazit obsah úplně čehokoli.

Zabezpečení

Řešením této bezpečnostní trhliny je samozřejmě ošetřit vstup uživatele tak, aby mohl obsahovat jen znaky a-z a maximálně čísla. To uděláme pomocí tzv. regulárního výrazu. Teorie okolo těchto výrazů je poměrně složitá, ale jednoduše řečeno se jedná o takový "minijazyk" (správně metajazyk), který slouží zejména pro kontrolu obsahu textových řetězců. V dalších kurzech na síti se jim ještě budeme věnovat, nyní nám musí stačit, že k ověření řetězce pomocí regulárního výrazu slouží PHP funkce preg_match(), která vrátí 1 pokud text odpovídá.

Rovnou i změníme require na include a pokud se vložení nepovede, zobrazíme chybovou hlášku. U require se takto ptát nemůžeme, při neúspěchu vždy zastaví aplikaci. Také přidáme podmínku, že pokud parametr není zadaný, zobrazí se podstránka domů.

if (isset($_GET['stranka']))
        $stranka = $_GET['stranka'];
else
        $stranka = 'domu';
if (preg_match('/^[a-z0-9]+$/', $stranka))
{
        $vlozeno = include('podstranky/' . $stranka . '.php');
        if (!$vlozeno)
                echo('Podstránka nenalezena');
}
else
        echo('Neplatný parametr.');

Web je nyní bezpečný a vás již nebrzdí ruční kopírování layoutu. Můžete si zkusit vložit jako podstránku náš kontaktní formulář.

Nad otázkou bezpečnosti bychom se u webových aplikací měli zamýšlet vždy, když uživatel někde něco zadává. Vždy se musíme zeptat, co se s touto hodnotou děje a zda nemůže nějaký vstup způsobit bezpečnostní chybu.

Hotový web je v příloze ke stažení. V příští lekci, Cykly for a while v PHP, se podíváme na cykly. Brzy se také dostaneme k databázím.


 

Stáhnout

Staženo 3275x (1.09 MB)
Aplikace je včetně zdrojových kódů v jazyce php

 

 

Článek pro vás napsal David Čápka
Avatar
Jak se ti líbí článek?
49 hlasů
Autor pracuje jako softwarový architekt a pedagog na projektu ITnetwork.cz (a jeho zahraničních verzích). Velmi si váží svobody podnikání v naší zemi a věří, že když se člověk neštítí práce, tak dokáže úplně cokoli.
Unicorn College Autor sítě se informační technologie naučil na Unicorn College - prestižní soukromé vysoké škole IT a ekonomie.
Předchozí článek
Vylepšení kontaktního formuláře v PHP
Všechny články v sekci
Základní konstrukce jazyka PHP
Miniatura
Následující článek
Cykly for a while v PHP
Aktivity (7)

 

 

Komentáře

Avatar
VelkyBubak
Člen
Avatar
VelkyBubak:2.11.2013 2:48

pokud byly rámce z html odebrány, pak mi prosím vysvětli, proč je pořád lze použít
(tedy doufám že myslíš <Frameset>)

 
Odpovědět 2.11.2013 2:48
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na VelkyBubak
David Čápka:2.11.2013 8:38

Prohlížeče podporují mnoho zastaralých elementů a stylů, které už ve specifikaci vůbec nejsou. Je to samozřejmě z toho důvodu, aby šly zobrazit opravdu staré webové stránky, které už nikdo neaktualizuje. Když tedy něco lze použít, tak to vůbec neznamená, že bys to měl dělat. Vždy se podívej třeba do místních manuálů, které jsou aktuální.

Odpovědět  +1 2.11.2013 8:38
Jsem moc rád, že jsi na síti, a přeji ti top IT kariéru, ať jako zaměstnanec nebo podnikatel. Máš na to! :)
Avatar
Neaktivní uživatel:2.11.2013 9:29

Hezký článek, jen ta poslední podmínka s reg. výrazem se dá krásně nahradit s file_exists.

Odpovědět 2.11.2013 9:29
Neaktivní uživatelský účet
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Neaktivní uživatel
David Čápka:2.11.2013 9:31

A co by to vyřešilo? Kdyby někdo chtěl stáhnout např. .htpasswd, tak by ho to nechalo.

Odpovědět 2.11.2013 9:31
Jsem moc rád, že jsi na síti, a přeji ti top IT kariéru, ať jako zaměstnanec nebo podnikatel. Máš na to! :)
Avatar
Kit
Redaktor
Avatar
Odpovídá na Neaktivní uživatel
Kit:2.11.2013 9:33

Problém je, že by v té tvé podmínce prošel i "../../soubor".

Odpovědět 2.11.2013 9:33
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Odpovídá na David Čápka
Neaktivní uživatel:2.11.2013 9:40

Nemyslím si. Přece i ty přidáváš k výslednému řetězci ".php". Kdyby jsi to dal nad podmínku, volalo by se .htpasswd.php, což by neprošlo.

Odpovědět 2.11.2013 9:40
Neaktivní uživatelský účet
Avatar
Neaktivní uživatel:2.11.2013 9:42

Kdyby byl nastavený pevný počet stránek, bylo by také lepší použít switch s přesně zadanou adresou na daný soubor.

Odpovědět 2.11.2013 9:42
Neaktivní uživatelský účet
Avatar
Kit
Redaktor
Avatar
Odpovídá na Neaktivní uživatel
Kit:2.11.2013 9:46

... nebo ten název použít jako klíč do databáze, ve které ta stránka bude.

Odpovědět 2.11.2013 9:46
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Neaktivní uživatel
David Čápka:2.11.2013 9:47

Myslím, že se tam dají napsat i znaky, co vyvolají smazání. Ale to je přeci jedno, myslíš, že je v pořádku, že jde spustit každý PHP soubor, co je na webu? To určitě ne. Switch je naprosto nevhodný, proč bych proboha větvil, když přesně vím, kam uživatel chce? Když už, tak dát povolené podstránky do pole a kontrolovat to přes in_array.

Odpovědět 2.11.2013 9:47
Jsem moc rád, že jsi na síti, a přeji ti top IT kariéru, ať jako zaměstnanec nebo podnikatel. Máš na to! :)
Avatar
Odpovídá na Kit
Neaktivní uživatel:2.11.2013 9:48

Samozřejmě, to je asi nejlepší způsob.

Odpovědět 2.11.2013 9:48
Neaktivní uživatelský účet
Avatar
Kit
Redaktor
Avatar
Odpovídá na Neaktivní uživatel
Kit:2.11.2013 9:54

... ale jen v případě, kdy nepotřebuji vykonat skript, protože PHP skripty se do databáze ukládat nedají. Ve většině případů to však nevadí.

Odpovědět 2.11.2013 9:54
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Odpovídá na Kit
Neaktivní uživatel:2.11.2013 9:56

Tak tak. Skripty se můžou volat v pozadí. V prezentační části se mi PHP nelíbí.

Editováno 2.11.2013 9:57
Odpovědět 2.11.2013 9:56
Neaktivní uživatelský účet
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Kit
David Čápka:2.11.2013 9:58

Je to schválně udělané pro skripty, aby tam šly dávat i věci jako login a podobně, kde je skript pro obsluhu formuláře nebo nějaké další dynamické stránky (např. seznam uživatelů). Čím dříve si lidé zvyknou dělat vše přes index, tím lépe. Prostý výpis z databáze by rychle přestal stačit.

Odpovědět 2.11.2013 9:58
Jsem moc rád, že jsi na síti, a přeji ti top IT kariéru, ať jako zaměstnanec nebo podnikatel. Máš na to! :)
Avatar
Kit
Redaktor
Avatar
Odpovídá na David Čápka
Kit:2.11.2013 10:02

S prostým výpisem z databáze se dá vystačit dost dlouho, pokud máš dobře udělaný router.

Odpovědět  +1 2.11.2013 10:02
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
VelkyBubak
Člen
Avatar
Odpovídá na David Čápka
VelkyBubak:2.11.2013 22:27

Ok, děkuji. Posléze mě tato odpověď také napadla - bohužel, co se týká možnosti své příspěvky upravovat - když mi to došlo, už to nešlo.

Jinak až při čtení mi došlo, jak velká byla má blbost, když jsem na to šel opačně (vkládání menu do všech stránek)...

Editováno 2.11.2013 22:31
 
Odpovědět 2.11.2013 22:27
Avatar
kuba.skoda
Člen
Avatar
kuba.skoda:11.11.2013 16:32

Ahoj, díky za pěkný seriál v první řadě..
jen mě jako začátečníka napadlo..v tom seriálu na HTML&CSS jsme si udělali ten layout včetně toho navigačního menu, hlavičky atd..problém že teď vkládám jen do section a měnit zbytek tím teda nejde..
(např. obarvení položky v menu či popis stránky v hlavičce článku jak je tady špatně :) )
Ale třeba jsem jen nedočkavý a někde dál to bude :)

 
Odpovědět 11.11.2013 16:32
Avatar
pkrist
Člen
Avatar
pkrist:14.11.2013 14:07

Ahoj,
chtěl bych se zeptat. Pokud mám vytvořenou podsložku "podstránky" viz. výše a chtěl bych udělat více takovýchto podložek např. "fotky" a v této podsložce budu mít např. soubory "berlin.php" "praha.php" ... jak bude vypadat kód, děkuji

if (isset($_GET['s­tranka']))
$stranka = $_GET['stranka'];
else
$stranka = 'domu';
if (preg_match('/^[a-z0-9]+$/', $stranka))
{
$vlozeno = include('podstran­ky/' . $stranka . '.php');
if (!$vlozeno)
echo('Podstránka nenalezena');
}
else
echo('Neplatný parametr.');

 
Odpovědět 14.11.2013 14:07
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na kuba.skoda
David Čápka:19.11.2013 12:12

Obarvení záložky si přeci můžeš naifovat podle URL adresy, podmínky určitě umíš.

Odpovědět 19.11.2013 12:12
Jsem moc rád, že jsi na síti, a přeji ti top IT kariéru, ať jako zaměstnanec nebo podnikatel. Máš na to! :)
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na pkrist
David Čápka:19.11.2013 12:13

Podsložku nepotřebuješ, uděláš si jen jeden soubor fotky.php. V tom budeš podle dalšího parametru v get zobrazovat jen určité fotky.

Odpovědět 19.11.2013 12:13
Jsem moc rád, že jsi na síti, a přeji ti top IT kariéru, ať jako zaměstnanec nebo podnikatel. Máš na to! :)
Avatar
tribal.cz
Redaktor
Avatar
tribal.cz:12.12.2013 11:32

Já bych to chránil pomocí funkce is_file která nám jednoduše ověří existenci dotazovaného souboru pokud existuje vypise obsah stranky pokud ne predhodi uzivateli chybovou hlasku kterou nastavime pomoci podminky

 
Odpovědět 12.12.2013 11:32
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na tribal.cz
David Čápka:9.1.2014 18:02

To je nesmysl, již se to tu řešilo výše.

Odpovědět  +1 9.1.2014 18:02
Jsem moc rád, že jsi na síti, a přeji ti top IT kariéru, ať jako zaměstnanec nebo podnikatel. Máš na to! :)
Avatar
tribal.cz
Redaktor
Avatar
Odpovídá na David Čápka
tribal.cz:9.1.2014 18:32

Já to používám pro načítání stránek do indexu kde si script bere GET proměnnou ověřuje zda soubor existuje možná to neni 100% ale jistý stupeň ochrany to poskytuje do doby než programátor udělá kiks který naruší logiku takové funkce a s doplněním o preg replace se stupeň ochrany zvýší toť můj názor

 
Odpovědět 9.1.2014 18:32
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na tribal.cz
David Čápka:9.1.2014 18:34

Je úplně jedno jestli soubor existuje nebo ne, ty nesmíš dovolit vložit jiný soubor než ten, který je k tomu určený. Ta tvoje "ochrana" ti dovolí vypsat .htpasswd, protože existuje.

Odpovědět 9.1.2014 18:34
Jsem moc rád, že jsi na síti, a přeji ti top IT kariéru, ať jako zaměstnanec nebo podnikatel. Máš na to! :)
Avatar
mapak
Člen
Avatar
mapak:14.1.2014 15:31

Ahoj! Maličko jsem si upravil první část kódu a chci se zeptat, jestli je to po bezpečnostní stránce ok.

$stranka = (isset($_GET['s­tranka']) ? filter_input(IN­PUT_GET,'stran­ka',FILTER_SA­NITIZE_SPECIAL_CHAR­S) : 'domu');

Netbeans na mě křičí, že k superglobální proměnné nemám přistupovat přímo, ale v případě funkce isset to nevadí, ne? Měl jsem tam původně isset(filter_in­put(INPUT_GET,'str­anka',FILTER_SA­NITIZE_SPECIAL_CHAR­S)), ale to mi přijde i z logiky věci jako hloupost. Nechci přece testovat něco, co už je přefiltrované, chci testovat existenci původního parametru.

 
Odpovědět 14.1.2014 15:31
Avatar
Juraj Mlich
Redaktor
Avatar
Odpovídá na mapak
Juraj Mlich:14.1.2014 15:53

Pokiaľ by $_GET nebolo nadstavené vôbec, tak by sa ti aj isset($_GET["e­xample"]) vyhodilo ako chyba (pokiaľ viem) ...

 
Odpovědět  -1 14.1.2014 15:53
Avatar
mapak
Člen
Avatar
Odpovídá na Juraj Mlich
mapak:14.1.2014 19:40

Tomu úplně nerozumím. Funkce isset vrací TRUE pokud proměnná existuje a má jinou hodnotu než NULL. V ostatních případech vrací FALSE. Šlo mi pak o to, jestli PHP při tomhle testování proměnné přistupuje k jejímu obsahu a jestli to může být potenciálně nebezpečné.

 
Odpovědět 14.1.2014 19:40
Avatar
Kit
Redaktor
Avatar
Odpovídá na mapak
Kit:14.1.2014 20:07

Pokud proměnná $_GET neexistuje, potom volání isset($_GET["example"]) způsobí běhovou chybu. Nemůžeš se odkazovat na položku neexistujícího pole.

Odpovědět  +1 14.1.2014 20:07
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
mapak
Člen
Avatar
Odpovídá na Kit
mapak:14.1.2014 20:48

Omlouvám se, ale ani po přečtení dokumentace k proměnné $_GET nerozumím té chybě, o které mluvíte (Kit a Juraj). Vždyť ta podmínka "if (isset($_GET['s­tranka']))" je i v tomhle článku. Jak by to mělo být správně?

 
Odpovědět 14.1.2014 20:48
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na mapak
David Čápka:14.1.2014 20:50

Protože to říkají špatně, jak je to v článku, tak je to správně. NetBeans má občas dost divné názory, ošetřuje se při výstupu, nikoli vstupy.

Odpovědět 14.1.2014 20:50
Jsem moc rád, že jsi na síti, a přeji ti top IT kariéru, ať jako zaměstnanec nebo podnikatel. Máš na to! :)
Avatar
Juraj Mlich
Redaktor
Avatar
Odpovídá na David Čápka
Juraj Mlich:14.1.2014 21:13

Máš pravdu ... Ale potom je to chyba v PHP, ako predsa môže testovať, či je nadstavená premenná v neexistujúcom poli? Z hľadiska funkčnosti je to dobré ale z hľadiska čistosti je to podľa mňa zlé ...

 
Odpovědět 14.1.2014 21:13
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Juraj Mlich
David Čápka:14.1.2014 21:16

Testuje se index, ne pole. $_GET je navíc superglobální, takže nemá o jeho existenci smysl hovořit.

Editováno 14.1.2014 21:22
Odpovědět  +1 14.1.2014 21:16
Jsem moc rád, že jsi na síti, a přeji ti top IT kariéru, ať jako zaměstnanec nebo podnikatel. Máš na to! :)
Avatar
Kit
Redaktor
Avatar
Odpovídá na David Čápka
Kit:14.1.2014 21:24

Máš pravdu, $_GET a $_POST jsou definovány vždy. Zkusil jsem ještě tohle:

<?php
session_start();
if (isset($_SESSION)) {
    echo "Je tam";
} else {
    echo "Není tam";
}

Jak jsem očekával, globální proměnná $_SESSION je definována funkcí session_start(). Jinak neexistuje.

Odpovědět 14.1.2014 21:24
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Kit
Redaktor
Avatar
Odpovídá na David Čápka
Kit:14.1.2014 23:21

Ještě pro upřesnění: $_GET a $_POST nejsou pole, ale slovníky (angl. dictionary).

Odpovědět 14.1.2014 23:21
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
mapak
Člen
Avatar
mapak:15.1.2014 7:31

Super! Díky všem za rozbor!

 
Odpovědět 15.1.2014 7:31
Avatar
eXentr
Člen
Avatar
eXentr:19.1.2014 14:55

Jsem jediný komu nefunguje web co je tu ke staženi ?

Odpovědět 19.1.2014 14:55
žij a nechej žít
Avatar
mkub
Redaktor
Avatar
Odpovídá na eXentr
mkub:19.1.2014 15:55

ako to myslis, ze nefunguje?

 
Odpovědět 19.1.2014 15:55
Avatar
eXentr
Člen
Avatar
Odpovídá na eXentr
eXentr:19.1.2014 16:08

už chápu

Odpovědět 19.1.2014 16:08
žij a nechej žít
Avatar
eXentr
Člen
Avatar
eXentr:19.1.2014 16:09

když jsem si to zkusil nahrat na server tak to jde ja myslel že to jde i normalne v počítači

Odpovědět 19.1.2014 16:09
žij a nechej žít
Avatar
Petr Nymsa
Redaktor
Avatar
Odpovídá na eXentr
Petr Nymsa:19.1.2014 16:20

V tom případě ti radím vrátit se na úplný začátek seriálu, kde je popsané, že budeš potřebovat na testování nějaký webserver- např. Apache

Odpovědět 19.1.2014 16:20
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
eXentr
Člen
Avatar
eXentr:19.1.2014 16:39

ok to bude nejlepší :)

Odpovědět 19.1.2014 16:39
žij a nechej žít
Avatar
michalcarbol
Člen
Avatar
michalcarbol:21.1.2014 8:14

Ahoj jsem opravdu začátečník a chtěl bych poradit s něčím ohledně hlavičky. Ve své verzi HoBiho webu mám u aktuální html stránky (např. dovednosti.html) určenou třídu v menu "aktivni", díky které je natrvalo přiřazená jiná barva tlačítka. "<li class='aktivni'>Do­vednosti". Jak bych toho měl udělat v php? Děkuji moc

 
Odpovědět  +1 21.1.2014 8:14
Avatar
mkub
Redaktor
Avatar
Odpovídá na eXentr
mkub:21.1.2014 16:45

PHP subor nie je klasicjy HTML subor, prehliadace mu totiz nerozumeju a zobrazia ten text, ako je sformatovany pomocou vlozenych html tagov...
na top, aby to fungovalo, treba mat interpreter PHP, resp. spravne nakonfigurovany webovy server s tymto interpretrom
a uplne na zaciatku PHP sekcie by si mohol najst navod, ako nainstalovat Apache, PHP, MySQL na MS Windows, a pokial by si mal OS Linux, tak tam by takisto nemal byt problem, stacilo by v Linuxe nahodit baliky s nazvami: apache, php, phpmyadmin z repozitarov danej distribucie (v kazdom repozitari sa vsetko potrebne nachadza)

 
Odpovědět 21.1.2014 16:45
Avatar
eXentr
Člen
Avatar
Odpovídá na mkub
eXentr:21.1.2014 18:52

Ok díky za vysvětlení, to vše nainstalované už mám, akorát když jsem si stáh tu ukázku, neuvědomil jsem si že to musím taky nahrát do NetBeans. Ted už vím jak velkou hloupost jsem udělal :D

Odpovědět 21.1.2014 18:52
žij a nechej žít
Avatar
mkub
Redaktor
Avatar
Odpovídá na eXentr
mkub:21.1.2014 19:11

nahrat do NetBeans nemusis, NetBeans je iba IDE, ked si stiahnes subory s ukazkami, tak tie subory rozbal do adresara weboveho servera, kam sa umiestnuju html subory v zavislosti od pouziteho OS a nasledne ti bude stacit, ak v prehliadaci napises: http://localhost alebo http://127.0.0.1 a nemusis spustat cele IDE na to, aby si videl vysledok kodu

 
Odpovědět  +1 21.1.2014 19:11
Avatar
mkub
Redaktor
Avatar
Odpovídá na mkub
mkub:21.1.2014 19:25

a okrem toho Netbeans je ako kanon na vrabce, jedno z najpomalsich IDE, co poznam

 
Odpovědět 21.1.2014 19:25
Avatar
Benjibs
Člen
Avatar
Odpovídá na mkub
Benjibs:21.1.2014 19:26

Možno najpomalšie, ale jednoznačne najschopnejšie zo všetkých :P (typu Visual Studio, Eclipse, Code Blocks atď)

a navyše, tá pomalosť je cena za to, že to beží všade

Editováno 21.1.2014 19:29
Odpovědět 21.1.2014 19:26
1 + 1 = 2
Avatar
Petr Nymsa
Redaktor
Avatar
Odpovídá na Benjibs
Petr Nymsa:21.1.2014 19:42

Na vývoj webu teď jedině už Sublime Text 2 :)

Odpovědět  +1 21.1.2014 19:42
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
mkub
Redaktor
Avatar
Odpovídá na Benjibs
mkub:21.1.2014 19:59

to mas pravdu, ze Netbeans bezi vsade, ked to bezi ako aplikacia nad JVM,
ale na tvorbu webu je to ako kanon na vrabce a velmi neohrabane...

 
Odpovědět 21.1.2014 19:59
Avatar
Benjibs
Člen
Avatar
Odpovídá na Petr Nymsa
Benjibs:21.1.2014 20:30

To máš pravdu, tiež to používam, ale ked robíš vo viacerých jazykoch niečo väčšie než "pár riadkov", tak sa väčšinou bublinková pomoc, dokumentácia a kopa ďalších vychytávok, čo sú v netbeans veľmi zíde,

navyše teraz vyšla beta 8.0 obsahujúca dalšie parádičky, napr. dokončenie podpory Javy 8 (SE, ME), kompletný generátor PrimeFaces, zlepšenie Angularu, podpora pre PHP 5.5 atď

Odpovědět 21.1.2014 20:30
1 + 1 = 2
Avatar
jnao01
Člen
Avatar
jnao01:29.1.2014 10:42

Zdravím,
pomaly, ale isto si tento tutoriál prechádzam a ďakujem zaňho. :)
Chcem upozorniť na jednu vec, a to, že by bolo dobre upraviť "regulárny výraz" na to, aby povoľoval aj veľké písmena z dôvodu, že si akýkoľvek začiatočník môže prídať do názvu podstránky veľké písmeno, ako to napríklad bolo v mojom prípade (vytvoril som si podstránku nazvanú aboutMe.php), a potom mi to vypisovalo chybu. Upravil som výraz na

/^[a-zA-Z0-9]+$/

, a potom už problém zmizol.

 
Odpovědět 29.1.2014 10:42
Avatar
cypo
Člen
Avatar
cypo:5.2.2014 21:25

Zdravím ,
neviem či niečo prehliadam alebo robím nejakú chybu, ale je tu zahrnutá aj zmena headeru, čiže nadpisu danej stránky?

 
Odpovědět 5.2.2014 21:25
Avatar
Thor83
Člen
Avatar
Odpovídá na David Čápka
Thor83:26.2.2014 20:00

Dobrý den.Řeším podobný problém.Tedy mám vytvořeny podstránky v php které sou v menu ale co když budu mít další desítky podstránek/stránek třebas různé články takže vytvářet stránky clanek1.php clanek2.php asi blbost takže tou metodou GET ? by šlo vkládat jen nějaké divy nebo pouze určité HTML5 article section ze souboru clanky.php nebo jak se řeší takové věci?Děkuji

 
Odpovědět 26.2.2014 20:00
Avatar
albertpatera
Redaktor
Avatar
Odpovídá na Thor83
albertpatera:26.2.2014 20:17

ne, pomocí databáze vložíš článek do databáze a pak ho vypíšeš na stránku. Používá se třeba MySQL.

 
Odpovědět 26.2.2014 20:17
Avatar
David Hynek
Redaktor
Avatar
David Hynek:26.2.2014 23:20

Co použít .htaccess

RewriteEngine On
ErrorDocument 404 /error.php
RewriteRule  ^([a-z-]+)\.html$ ?page=$1 [L,QSA]

Adresa www.neco.cz/novinky.html bude poslaná PHP jako $_GET['page'] = 'novinky'

Odpovědět 26.2.2014 23:20
Čím víc vím, tím víc věcí nevím.
Avatar
David Hynek
Redaktor
Avatar
Odpovídá na cypo
David Hynek:26.2.2014 23:25

tady je napsán jen příklad. Když budeš mít stránku uloženou v DB, tak krom obsahu tam můžeš mít uložený titulek, klíčová slova a pod. A v templatu stránky je doplníš. Jde to i bez DB, jen není obsah uložen jako prostý text, ale je to třeba pole a pak postupuješ stejně jako bys data stáhl z DB...

Odpovědět 26.2.2014 23:25
Čím víc vím, tím víc věcí nevím.
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na cypo
David Čápka:21.3.2014 16:50

Není tam zahrnutá, dělalo by se to docela obtížně. Pokračuj dál a dostaneš se k databázím, tam se to řeší.

Odpovědět 21.3.2014 16:50
Jsem moc rád, že jsi na síti, a přeji ti top IT kariéru, ať jako zaměstnanec nebo podnikatel. Máš na to! :)
Avatar
rushh1120
Člen
Avatar
rushh1120:2.5.2014 9:49

ahoj, použil jsem postup z článku pro vkládání textů podstránek do šablony. Vše funguje OK , jen je problém v tom, jak udělat aby se načetl text i do úvodní hlavní stránky index.php hned po zadání názvu domény př. zadám www.neco.cz a zobrazí se stránka. Jak do ní vložit text skriptem?
díky

 
Odpovědět 2.5.2014 9:49
Avatar
tomass
Člen
Avatar
Odpovídá na rushh1120
tomass:4.7.2014 14:36

Jestli sem tvůj dotaz správně pochopil, tak se ti načte úvodní stránka do souboru domu.php, máš to v téhle podmínce, když nebude zadán parametr

index.php?stranka=neco

, tak se ti ta stránka nastaví na soubor home.php, takže když si zadáš www.neco.cz, tak se ti načtou do layoutu data z home.php

if (isset($_GET['stranka']))
        $stranka = $_GET['stranka'];
else
        $stranka = 'domu';
 
Odpovědět 4.7.2014 14:36
Avatar
Michal Kuba
Redaktor
Avatar
Michal Kuba:24.8.2014 20:43

Když si zkusím stáhnout přiložený soubor a otevřít, načte se mi layout ale když kliknu na cokoliv v menu tak to nereaguje, jen změní URL.

A když si sám napíšu tento index a podstránky k tomu tak se mi načte pouze index bez jakéhokoliv nastylování a stejně jako předtím, ať kliknu na cokoliv, tak to nereaguje, jen změní URL.

Takto vypadá celý můj index.php , najde tam někdo nějakou krpu nebo můžu mít problém třeba v adresářích?

<!DOCTYPE HTML >
<html>
  <head>
  <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  <meta name="generator" content="PSPad editor, www.pspad.com">
  <meta name="description" content="Domovská stránka webu ENI-story" />
  <meta name="keywords" content="home, ENI-story, ENIGMA, příběhy, záhadné příběhy" />
  <title>ENI-story</title>
  <link rel="stylesheet" href="css/style.css">
  <link rel="shortcut icon" href="images/E.ico" >

  </head>
  <body>
  <header>
    <div id="logo"><img src="images/logo.jpg" id="obr" alt="ENI-story"><a href="index.html" id="es">ENI-story</a></div>

    <nav>
       <ul>
          <li class="aktivni"><a href="index.php?stranka=domu">Domů</a></li>
          <li><a href="index.php?stranka=pribehy">Příběhy</a></li>
          <li><a href="index.php?stranka=owebu">O webu</a></li>
          <li><a href="index.php?stranka=kontakt">Kontakt</a></li>

       </ul>
    </nav>
    </header>

  <br>

    <article> <div id="centrovac">
    <header> <h2>Záhadné příběhy založené na pravdě</h2></header>
    <section>

    <?php
        if (isset($_GET['stranka']))
            $stranka = $_GET['stranka'];
        else
            $stranka = 'domu';
        if (preg_match('/^[a-z0-9]+$/', $stranka))
{
        $vlozeno = include('podstranky/' . $stranka . '.php');
            if (!$vlozeno)
                echo('Podstránka nenalezena');
}
        else
            echo('Neplatný parametr.');
?>

    </section></div></article>

   <<div id="cistic"></div></section>
   </div></article>







  </body>
</html>
 
Odpovědět  -1 24.8.2014 20:43
Avatar
666responsible:1.9.2014 11:45

Nazdar, asi ste to tu už riešili ale nenašiel som to.
Neviem sa zbaviť tejto chyby:

pri $obsah = file_get_conten­ts('podstranky/' . $_GET['stranka'] . '.html'); echo $obsah;

Notice: Undefined index: stranka in C:\xampp\htdoc­s\Wortexx\index­.php on line 28

Warning: file_get_conten­ts(podstranky/­.html): failed to open stream: No such file or directory in C:\xampp\htdoc­s\Wortexx\index­.php on line 28

V NetBeans mám pri $_GET['stranka'] výstražný trojuholník a chybovú hlášku Do not access Superglobal $_GET array directly.

a pri
if (isset($_GET['s­tranka'])) {
$stranka = $_GET['stranka'];
}
Warning: include(podstran­ky/domu.php): failed to open stream: No such file or directory in C:\xampp\htdoc­s\Wortexx\index­.php on line 35

Warning: include(): Failed opening 'podstranky/do­mu.php' for inclusion (include_path='­.;C:\xampp\php\PE­AR') in C:\xampp\htdoc­s\Wortexx\index­.php on line 35
Podstránka nenalezena

Viete mi poradiť kde je chyba? A prečo mi to hľadá aj v PEAR?
Dík

 
Odpovědět 1.9.2014 11:45
Avatar
David Hynek
Redaktor
Avatar
Odpovídá na 666responsible
David Hynek:1.9.2014 12:56

tak předpokládám, že chyba bude v cestě k souboru. Ale rozhodně bych byl opatrný s vkládáním samotného GETu bez kontroly.

jinak:

$obsah = file_get_conten­ts("podstranky/{$_GET['s­tranka']}.html");
echo $obsah;

Editováno 1.9.2014 12:59
Odpovědět 1.9.2014 12:56
Čím víc vím, tím víc věcí nevím.
Avatar
Juraj Mlich
Redaktor
Avatar
Odpovídá na 666responsible
Juraj Mlich:1.9.2014 13:13

Chyba je v tom, že pristupuješ k prvku poľa, ktorého index neexistuje. Zjednodušene - pole, uložené v $_GET, neobsahuje index "stranka".

 
Odpovědět 1.9.2014 13:13
Avatar
danhill
Člen
Avatar
Odpovídá na Juraj Mlich
danhill:4.11.2014 21:59

Ahoj, mám stejný problém. Ty "warningy" u
if (isset($_GET['s­tranka'])) {
$stranka = $_GET['stranka'];
}

Ale neporozuměl jsem Tvé odpovědi, jak to opravit.
Mohu poprosit ještě o dodatečné vysvětlení?
Děkuji moc.

Odpovědět 4.11.2014 21:59
Nikdy není tak zle, aby nemohlo být ještě hůře.
Avatar
danhill
Člen
Avatar
Odpovídá na danhill
danhill:4.11.2014 22:09

Omlouvám se, po bližším ohledání mám asi jiný problém (již nelze editovat), vkládám tedy dotaz znova:

Ahoj, mám podobný problém.

$vlozeno = include('podstran­ky/' . $stranka . '.php');
if (!$vlozeno)
echo('Podstránka nenalezena');

Tak když zadám např.: /index.php?stran­ka=neco (neco na mém webu nexistuje)
Tak bych očekával,že se mi vypíše pouze to echo('Podstránka nenalezena');

ale navíc to na mě vyhodí warning:

Warning: include() [function.include]: Unable to access podstranky/neco.php in /data/www/xxx­.cz/php.xxx.cz/in­dex.php on line 42

Warning: include(podstran­ky/neco.php) [function.include]: failed to open stream: No such file or directory in /data/www/xxx­.cz/php.xxx.cz/in­dex.php on line 42

Warning: include() [function.include]: Failed opening 'podstranky/ne­co.php' for inclusion (include_path='­.:/usr/local/php5/lib­/php') in /data/www/xxx­.cz/php.xxx.cz/in­dex.php on line 42
Podstránka nenalezena

Děkuji za pomoc.

Editováno 4.11.2014 22:12
Odpovědět 4.11.2014 22:09
Nikdy není tak zle, aby nemohlo být ještě hůře.
Avatar
Odpovídá na danhill
Martin Konečný (pavelco1998):4.11.2014 22:33

Můžeš tam hodit podmínku, jestli ten soubor existuje.

if (file_exists($soubor)) {
  include $soubor;
} else {
  echo "stránka neexistuje";
}
Odpovědět 4.11.2014 22:33
Aktuálně připravuji browser RPG, FB stránka - https://www.facebook.com/AlteiraCZ
Avatar
danhill
Člen
Avatar
Odpovídá na Martin Konečný (pavelco1998)
danhill:5.11.2014 18:20

Aha, děkuji.
Znaméná to, že ty warningy jsou v pořádku?
Mimochodem čím definuji proměnnou $soubor? To jako,že si do ní vypíšu existující stránky ve složce podstránky?

Odpovědět 5.11.2014 18:20
Nikdy není tak zle, aby nemohlo být ještě hůře.
Avatar
Odpovídá na danhill
Martin Konečný (pavelco1998):5.11.2014 19:00

S těmi warningy záleží, jak to myslíš. V pořádku je, že se to tak chová. Že ti to hází chyby, už v pořádku není. :D
Hlavně nepotlačuj chyby pomocí zavináče, to se dělá jen ve výjimečných případech.

Ta proměnná $soubor obsahuje cestu k souboru. Nechtělo se mi to celý vypisovat, ale je to to, co píšeš v tom includu

'podstranky/' . $stranka . '.php'

Já jen moc nemám rád takhle složený stringy, tak si to radši uložím do proměnný.

Odpovědět  +1 5.11.2014 19:00
Aktuálně připravuji browser RPG, FB stránka - https://www.facebook.com/AlteiraCZ
Avatar
danhill
Člen
Avatar
Odpovídá na Martin Konečný (pavelco1998)
danhill:5.11.2014 21:45

Super, děkuji moc za pomoc.
Měl bych hned další dotaz, který souvisí více méně sice až s dalšími lekcemi,ale u téhle to začalo.
Do stránky kontakt jsem nasunul formulář pro mail,který jsme tady tvořili dříve.
Dokonce se mi podařilo využít vlastní funkce z knihovnou z lekce 14 a 15.
Ale trochu jsem zmatený z funkce header, která mi v tuto chvíli nechodí.
Původní zápis byl :
header('Location: mailform.php?us­pech=ano');

No jo,ale co do Location napíšu nyní, když stránka s formulářem má tvar
index.php?stran­ka=kontakt

Odpovědět 5.11.2014 21:45
Nikdy není tak zle, aby nemohlo být ještě hůře.
Avatar
Odpovídá na danhill
Martin Konečný (pavelco1998):5.11.2014 22:31
// ... kód na odeslání mailu

header("location:index.php?stranka=kontakt&uspech=ano");
exit;

Pokud předpokládám správně, že se po odeslání formuláře přesměruje na tu samou stránku, tak ten parametr stranka necháš a přidáš tam další parametr uspech=ano.
Pokud máš v URL více parametrů, můžeš použít proměnnou $_SERVER["REQU­EST_URI"], která obsahuje URL včetně parametrů. Vypadalo by to pak asi takhle:

$url = $_SERVER["REQUEST_URI"] . "&uspech=ano";
header("location:" . $url);
exit;
Odpovědět  +1 5.11.2014 22:31
Aktuálně připravuji browser RPG, FB stránka - https://www.facebook.com/AlteiraCZ
Avatar
mkores.mk
Člen
Avatar
mkores.mk:5.3.2015 18:37

Ahoj,mám možná pěkně debilní dotaz, ale nemůžu si ho odpustit. Jak převedu .html dokument na .php? Dělal jsem si HTML stránky podle návodu zde na webu a teď tedy do nich chci přidat php. Stačí jenom přepsat příponu?

Díky za odpověď :)

Editováno 5.3.2015 18:39
 
Odpovědět 5.3.2015 18:37
Avatar
debeneesse
Člen
Avatar
Odpovídá na mkores.mk
debeneesse:5.3.2015 18:52

Ano, stačí. Nic jiného není třeba. Samozřejmě musíš rozlišit kód od HTML direktivou <?php, ale to určitě víš. Vše je tu přece popsané.

Editováno 5.3.2015 18:54
 
Odpovědět 5.3.2015 18:52
Avatar
mkores.mk
Člen
Avatar
Odpovídá na debeneesse
mkores.mk:5.3.2015 18:55

Jasný, to už vím...díky moc :)

 
Odpovědět 5.3.2015 18:55
Avatar
mkores.mk
Člen
Avatar
mkores.mk:12.3.2015 17:07

Ahoj, ještě mám jednu otázečku - když si stáhnu a spustím ten web, co je tu ke stažení tak layout mám v pořádku, ale ten obsah stránky chybí, tzn. nebere vůbec obsahy z těch podstránek. Nevíte někdo, čím by to mohlo být?

 
Odpovědět 12.3.2015 17:07
Avatar
Fredep
Redaktor
Avatar
Odpovídá na mkores.mk
Fredep:12.3.2015 17:21

Ahoj, aby ti to fungovalo, musíš stránku umístit na nějaký server, nebo ji spustit přes EasyPHP (nebo něco na ten způsob). Pokud totiž otevřeš normálně ten soubor, tak se ti nespustí PHP kód a tím ani nedojde k načtení podstránek. Můžeš si to ověřit tak, že dáš zobrazit zdrojový kód (Ctrl+U) a pokud zde uvidíš to samé, co v editoru, i ten PHP kód uprostřed, tak se určitě nespustil.

Pozn: PHP funguje na serverech a JS funguje ve tvém prohlížeči, neplést! ;)

Odpovědět 12.3.2015 17:21
Týmová práce je důležitá proto, aby bylo možno obvinit z neúspěchu někoho jiného.
Avatar
mkores.mk
Člen
Avatar
Odpovídá na Fredep
mkores.mk:12.3.2015 20:31

Díky za rychlou odpověď, mám tam nainstalován a spuštěn XAMPP, tedy PHP mi asi funguje (do teď mi šly spustit předchozí cvičení), problém byl v IDE - začal jsem používat Aptana studio 3 a svojí práci si musím ukládat do xampp\htdocs (kdyby měl někdo stejný problém jako já). Nicméně vyhazuje mi to chybu:

Warning: require(podstranky/test.php): failed to open stream: No such file or directory in C:\xampp\htdocs\web novy\index.php on line 51

Fatal error: require(): Failed opening required 'podstranky/test.php' (include_path='.;C:\xampp\php\PEAR') in C:\xampp\htdocs\web novy\index.php on line 51
 
Odpovědět 12.3.2015 20:31
Avatar
mkores.mk
Člen
Avatar
mkores.mk:12.3.2015 20:41

Už jsem na to přišel (bohužel nelze již upravovat příspěvek) - Aptana nebyla "spárovaná" s XAMPPem

 
Odpovědět 12.3.2015 20:41
Avatar
Martin
Člen
Avatar
Martin:13.5.2015 22:11

Ahoj, chtěl bys se zeptat proč když tam do té podstránky <ul> nemám u těch odrážek mezery ? viz. obrázek

Toto mám v té podstránce:

<h3>test</h3>
                                        <ul><li type="square">test:</li>
                                                <ul>
                                                <li type="disc">test</li>
                                                <li type="disc">test</li>
                                                <li type="disc">test</li>
                                                <li type="disc">test</li>
                                                </ul>
                                        </ul>
 
Odpovědět 13.5.2015 22:11
Avatar
Odpovídá na Martin
Michal Šmahel:13.5.2015 22:19

Nemáš to nějak ostylované?? Mně to funguje.

Editováno 13.5.2015 22:19
Odpovědět  +1 13.5.2015 22:19
Nejdůležitější je motivace, ovšem musí být doprovázena činy.
Avatar
Martin
Člen
Avatar
Odpovídá na Michal Šmahel
Martin:15.5.2015 13:57

Opravdu jsem ta něco měl špatně ostylované díky :)

 
Odpovědět 15.5.2015 13:57
Avatar
apotekil
Člen
Avatar
apotekil:8.7.2015 9:53

Do tých podstránok omne a pod.. musím dávať kompletný web s html definíciou takto niak ?

<html>
        <head>
                <meta charset="UTF-8"/>
                <link rel="stylesheet"  href="main.css"/>
        <head>
        <body>
                **obsah webu**
        </body>
</html>
Odpovědět 8.7.2015 9:53
Nerozmýšľaj ako sa to nedá, proste tvor. A čo tvoriť ? To je úplne jedno, nápady prídu postupne.
Avatar
Neaktivní uživatel:29.7.2015 19:52

Jen mam dotaz jak to udělat, aby se mi zpracoval formulář, který mám v souboru např. form.php a který vkládám do layoutu. Pokaždé to mi to totiž vypíše chybu. Díky za pomoc

Odpovědět 29.7.2015 19:52
Neaktivní uživatelský účet
Avatar
Tonda Kozák
Člen
Avatar
Odpovídá na Neaktivní uživatel
Tonda Kozák:30.7.2015 17:57

Oprav si tu chybu v kódu.
Pokud chceš poradit přesněji, tak dodej tu chybovou hlášku a kód.

 
Odpovědět 30.7.2015 17:57
Avatar
pavlikt
Člen
Avatar
pavlikt:14.8.2015 20:16

Ahoj lidi,
prosím o malé vysvětlení někoho php zasvěceného. Skript funguje perfektně, ale je mi záhadou, jaktože se zobrazí obsah variable $vlozeno? Myslel jsem, že do $vlozeno se uloží jen výsledek volání funkce include - tj. true nebo číslo 1 a pak je nutné obsah variable $vlozeno vypsat např. pomocí echo.. Nebo se include provede a do variable $vlozeno se jen uloží výsledek - tj. 1 v případě vložení a 0 či false v případě neúspěšného vložení?

Snad je to k pochopení, trochu v tom plavu...

Za vysvětlení předem díky!
T.

 
Odpovědět 14.8.2015 20:16
Avatar
IT Man
Redaktor
Avatar
Odpovídá na pavlikt
IT Man:14.8.2015 20:23

Pomocí include načteš obsah souboru. Proto se to ukládá do proměnné, čímž při prázdné proměnné soubor neexistuje. :)

Odpovědět 14.8.2015 20:23
Cokoliv a kdokoliv může jednou uspět.
Avatar
pavlikt
Člen
Avatar
pavlikt:14.8.2015 20:39

IT Man
Díky za rychlou reakci a vysvětlení:-)

 
Odpovědět 14.8.2015 20:39
Avatar
Kejmou
Člen
Avatar
Odpovídá na IT Man
Kejmou:16.8.2015 10:46

Nebyl by lepší require?

 
Odpovědět 16.8.2015 10:46
Avatar
Odpovídá na Kejmou
Uživatel sítě :16.8.2015 10:58

Když víš jistě, že ten soubor, který voláš existuje, tak to není potřeba.. ;)

http://php.net/…e-exists.php :-`

Odpovědět 16.8.2015 10:58
Chybami se člověk učí, běžte se učit jinam!
Avatar
Jan Swiatkowski:21.1.2016 15:53

Dobré vysvětlení !! ;)
Urychlí to psaní a "neucvakám" tlačítka Ctrl+C a Ctrl+V !! :D

Odpovědět  +1 21.1.2016 15:53
V jednoduchosti je krása...
Avatar
Jan Řehák
Člen
Avatar
Jan Řehák:21.2.2016 16:59

Chtěl bych se zeptat jestli nejde nějak lehce upravit ten nehezký odkaz při stránkách. (" stranka.com/in­dex.php?stran­ka=domu ") Tak aby odkaz vypadal takhle ("stranka.com/do­mu")

Díky za odpověd

 
Odpovědět 21.2.2016 16:59
Avatar
mkub
Redaktor
Avatar
Odpovídá na Jan Řehák
mkub:21.2.2016 21:48

napr. pomocou mod_rewrite sa to da

 
Odpovědět 21.2.2016 21:48
Avatar
Lukáš Hypša:19.5.2016 18:49

Měl bych 2 dotazy :)
1, Jde nějak do souboru vložit víc funkcí

require();

s odkazem na stejný soubor, ale aby mi na každým zavolání vygeneroval něco jiného? Např. když chci vygenerovat titulek, nadpis a text. 3 různé části ale všechny v 1 souboru.
2, Jak to, že na příkald na Devbooku se v adrese nezobrazuje v URL řetěc pro GET při generování stránek?

Odpovědět 19.5.2016 18:49
Jsem lama co se roky snaží naučit napsat aspoň pár řádků a furt mu to nejde...
Avatar
Jan Zamecnik
Člen
Avatar
Jan Zamecnik:2.9.2016 20:10

Ahoj,
Vylepšil jsem si kód, ať funguje aktivně část menu,když se najede myší.
Funguje mi to,ale mám dotaz, zda by to tak napsal i profík, díky.
<li <?php echo (!isset($_GET['s­tranka']) || $_GET['stranka'] == 'domu' ? 'class="aktivni"' : '');?>>
Domů</li>
<li <?php echo (isset($_GET['s­tranka']) && $_GET['stranka'] == 'omne'? 'class="aktiv­ni"':'');?>>
O mně</li>
<li <?php echo (isset($_GET['s­tranka']) && $_GET['stranka'] == 'dovednosti'?'clas­s="aktivni"':'');?>>
Dovednosti</li>
atd....

 
Odpovědět 2.9.2016 20:10
Avatar
Jan Zamecnik
Člen
Avatar
Jan Zamecnik:7.9.2016 8:48

Podle mně by se měl vkládat kód mezi centrovač a čistič, ne jen mezi section (tak je to i na staženým zdrojáku). Do vkládané podstránky pak dát header a section. Jinak je header stále stejný a to "O mně"
Asi takto
<div id="centrovac">
<?php

?>
<div class="cistic"></div>

Podstránky by měli obsahovat pouze to co chceme vložit (tak jak je to ve zdrojáku), ne jen přepsat html na php, tak jak je to v diskuzi, jinak to bude html v html když to dojde ze serveru.

 
Odpovědět  +1 7.9.2016 8:48
Avatar
Jan Hamerník:3.3.2017 13:56

Ahoj mám jeden takový problém. Mám adresu neco.cz/index­.php?stranka=ne­co
jenže když vypíšu chybou stránku například špatným zadáním adresy tak mi tam automaticky vyskočí stránka nenalezena a k tomu warning

Warning: include(include/blablabla.php): failed to open stream: No such file or directory in /data/www/neco.cz/www.neco.cz/index.php on line 11

kde dělám chybu? Díky

 
Odpovědět 3.3.2017 13:56
Avatar
Odpovídá na Jan Hamerník
Michal Pácal [Mysak0CZ]:3.3.2017 16:46

Ahoj, mohl by jsi poslat i část kódu, kde podstránku načítáš?

 
Odpovědět 3.3.2017 16:46
Avatar
Odpovídá na Michal Pácal [Mysak0CZ]
Jan Hamerník:14.3.2017 7:15

Díky za ochotu již jsem problém vyřešil

 
Odpovědět 14.3.2017 7:15
Avatar
Jiří Lenský:21.3.2017 20:21

Zdravím měl bych jeden dotaz pokud skladám web pomocí php a v jedné podstránce mám 21 záložek u kterých se mění obsah textu a nějaký ten obrázek je lepsí pouzit pro kazdou založku odkaz na samostatně vytvořenou stranku s obsahem který patří k záložce nebo je lepsi použít scrip za pomoci kterého pouze zobrazuju obsah záložky na kterou jsem kliknul.

 
Odpovědět 21.3.2017 20:21
Avatar
Filip (animátor/programator):10.4.2017 7:01

Mám problém všetko síce funguje ale píše mi tam do stránky nejakú chybu viz. Obrázok:
Mám 4 podstránky samostatne a ne podstránke obsah mám "link" na daný článok .
Keď sa otvorí podstránka obsah vipíše mi to tu chybu ale keď kliknem na ten link tak chyba zmizne a článok sa načíta...

Editováno 10.4.2017 7:04
Odpovědět 10.4.2017 7:01
Nikdy sa nevzdávaj a choď si za svojim snom.......
Avatar
Odpovídá na Filip (animátor/programator)
Michal Štěpánek:10.4.2017 12:19

Nemůže to být tím, že soubor, který chceš otevřít je jinde, než jsi mu nalinkoval?

Odpovědět 10.4.2017 12:19
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Odpovídá na Michal Štěpánek
Filip (animátor/programator):10.4.2017 20:18

Ďakujem ti za odpoveď mal si pravdu už som to opravil prepáč že som položil takú hlúpu otázku ale bolo 7 ráno a ja som bol už unavený z kódovania ......
Proste som si to nevšimol :D
MOJA CHYBA!

Odpovědět 10.4.2017 20:18
Nikdy sa nevzdávaj a choď si za svojim snom.......
Avatar
Martin Bubník:24.6.2017 12:00

Potřeboval bych poradit.. Kód mám uplně stejný jako vy, ale hází mi to chybu..
<section>
<?php
if (isset($_GET["s­tranka"]))
$stranka = $_GET["stranka"];
else
$stranka = 'domu';
if (preg_match("/^[a-z0-9]+$/", $stranka))
{
$vlozeno = include("podstran­ky/" .$stranka . ".php");
if (!$vlozeno)
echo("Podstránka nenalezena");
}
else
echo("Neplatný parametr.");
?>
</section>

V té sekci, kde $vlozeno = include("podstran­ky/" .$stranka . ".php"); tak mi háže chybu:

Warning: include(podstran­ky/domu.php) [function.include]: failed to open stream: No such file or directory in /var/www/html­/bubnima16/We­by/Cviceni/skl_stra­nek/index.php on line 42

Warning: include() [function.include]: Failed opening 'podstranky/do­mu.php' for inclusion (include_path='­.:/usr/share/pe­ar:/usr/share/php') in /var/www/html­/bubnima16/We­by/Cviceni/skl_stra­nek/index.php on line 42

Editováno 24.6.2017 12:02
 
Odpovědět 24.6.2017 12:00
Avatar
Martin Bubník:24.6.2017 12:00

Poradí prosím někdo??

 
Odpovědět 24.6.2017 12:00
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Martin Bubník
David Čápka:24.6.2017 12:02

A s čím chceš poradit? Máš tam jasně napsané, že nemůže najít soubor "podstranky/do­mu.php", takže ho tam asi nemáš.

Odpovědět  +1 24.6.2017 12:02
Jsem moc rád, že jsi na síti, a přeji ti top IT kariéru, ať jako zaměstnanec nebo podnikatel. Máš na to! :)
Avatar
Odpovídá na David Čápka
Martin Bubník:24.6.2017 12:07

Klasika.. Trocha nepozornosti a člověk neví.. A při tom je to hloupost.. to bude tím vedrem %P
Moc děkuji za radu.. A mimochodem, vaše tutoriály a celkově učení script. jazyka php od začátku je super, zatím zvládám všechno, tady jsem samozřejmě zatím skončil, snažím se si to svými nápady trochu zlepšit atd a celkově,.. Moc mi to pomáhá

 
Odpovědět  +1 24.6.2017 12:07
Avatar
maxijoey
Člen
Avatar
maxijoey:23.11.2017 18:32

Ahoj, tak nějak si s tím PHP hraju a jedne věci nerozumím. Nějak mi to nejde na mozek. Jde mi o tvorbu nové stránky.
Modelvě. Budu tvořit kategorie eshopu dynamicky,to je mám rozhraní v php na to. Umím si do databáze přes něj nebo někam nahrát parametry nové stránky, název, url, popis atd... Umím je i přečíst. Ale kde se ta nová stránka vezme? jak ji vytvořím?

 
Odpovědět 23.11.2017 18:32
Avatar
Odpovídá na maxijoey
Matyáš Máslík:23.11.2017 23:38

Doufám, že to co zde napíšu nebude úplná kravina, ale alespoň takhle jsem to z nastudovaných materiálů pochopil já :D

Ty novou stránku vlastně netvoříš, ale vkládáš obsah do té původní. Ta "původní" je tvoje hlavní stránka s vytvořeným layoutem (který tedy bude pro všechny stejný), do kterého vkládáš předpřipravený obsah. Ten obsah, který má být vložený si uživatel logicky vyžádá podle nějakého naskriptovaného menu :)

Jinak nevím, jestli je zrovna moudré pouštět se rovnou do e-shopu, pokud jsi narazil na problém již zde. Mohla by se tam vyskytnout nějaká vážná chyba, která by tě mohla stát hodně peněz :D Není to myšleno nijak zle, samozřejmě ani neznám tvoje skutečné schopnosti. Ale prostě pozor na to :) A pro příště by nebylo od věci založit na to vlákno na fóru, takhle ti málokdo odpoví a potrvá to většinou dost dlouho.

 
Odpovědět 23.11.2017 23:38
Avatar
Tomáš Pour
Člen
Avatar
Tomáš Pour:26.11.2017 10:35

Ahoj, mám takový problém...do podstránek se mi v pohodě vloží layout, ale ikdyž mám v podstránce nějaký obsah, tak se mi zobrazí pouze ten layout. PHP kód mám stejný jako je zde na konci a v podstránce pro jistotu pouze zkopírovaný kontaktní formulář odsud...Nevíte, co s tím prosím?

 
Odpovědět 26.11.2017 10:35
Avatar
Tomáš Pour
Člen
Avatar
Tomáš Pour:26.11.2017 10:48

Jak tak zkoumám, tak si myslím, že se mi pouze změní v adrese text a nic se nestane...
index.php:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Test</title>
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
<header>
<div id="logo"></div>
<nav>
<ul>
<li>Domů</li>
<li>Kontakt</li>
<li>O mně</li>
<li>Galerie</li>
</ul>
</nav>
</header>
<article>

<section>
<?php
if (isset($_GET['s­tranka']))
$stranka = $_GET['stranka'];
else
$stranka = 'index';
if (preg_match('/^[a-z0-9]+$/', $stranka))
{
$vlozeno = include('podstran­ky/' . $stranka . '.php');
if (!$vlozeno)
echo('Podstránka nenalezena');
}
else
echo('Neplatný parametr.');
?>
</section>
</article>
<footer>
Vytvořil ©Tomáš Pour dle návodu na IT Network.
</footer>
</body>
</html>

 
Odpovědět 26.11.2017 10:48
Avatar
Tomáš Pour
Člen
Avatar
Tomáš Pour:26.11.2017 19:14

Už je to ok, blbne mi localhost a po nahrání na webhosting už funguje :-)

 
Odpovědět 26.11.2017 19:14
Avatar
Bite Rook
Člen
Avatar
Bite Rook:3.3.2018 13:23

Čím může být způsobeno, že mi na php soubor nefungují styly z css souboru? Na ten samý kod, ale v HTML souboru, mi ten stylovací CSS soubor funguje správně, ale na PHP soubor mi nefunguje vůbec.

 
Odpovědět  +1 3.3.2018 13:23
Avatar
IT Man
Redaktor
Avatar
Odpovídá na Bite Rook
IT Man:3.3.2018 14:28

Ahoj, bez nějakého přiloženého kódu či ukázky online ti nejsme schopni pomoci.
Každopádně to bude nejspíše tím, že to CSS nikde nelinkuješ. A pokud jo, nejspíš bude cesta k tomu CSS špatně.

Odpovědět  +1 3.3.2018 14:28
Cokoliv a kdokoliv může jednou uspět.
Avatar
Bite Rook
Člen
Avatar
Odpovídá na IT Man
Bite Rook:3.3.2018 16:59

tak mám zřejmě něco špatně nastaveno. kód mám zřejmě napsaný správně, jelikož když jej spustím přes C:///... tak funguje správně. Ale když jej spustím v PHPstormu přes to tlačítko chromu vpravo nahoře, tedy přes localhost, tak mi to ignoruje připojený CSS soubor. pro jistotu přikládám tedy i soubor index.php

 
Odpovědět 3.3.2018 16:59
Avatar
IT Man
Redaktor
Avatar
Odpovídá na Bite Rook
IT Man:3.3.2018 17:08

Zřejmě na localhostu nemáš stylovací soubor styles.css.
A určitě nedávej linky jako C:/, ale používej relativní odkazy. ;)

Editováno 3.3.2018 17:09
Odpovědět 3.3.2018 17:08
Cokoliv a kdokoliv může jednou uspět.
Avatar
Bite Rook
Člen
Avatar
Bite Rook:5.3.2018 14:41

netuším, proč mi localhost tohle dělá, ale nakonec jsem zjistil, že mi localhost nepodporuje css ani v html souboru, ani v PHP souboru. pomohlo až to, že jsem dal před uvedení cesty k souboru css tečku. ./relativní cesta. tedy např. v mém případě <link rel="stylesheet" href="./css/os­tylovani.css" type="text/css" />

 
Odpovědět 5.3.2018 14:41
Avatar
torhanmichal
Člen
Avatar
torhanmichal:12.3.2018 20:25

Zdravím Vás, rád bych se zeptal, když mám web postavený přesně na tomto principu, kde mám vložit měřící kód návštěvnosti? Stačí pouze do indexu, nebo i do dalších podstránek? Protože na Google Analytics jsem se dočetl, že jej mám vložit před tág Body, ale ten je i podle tohoto tutoriálu jen v Indexu. Děkuji za každou radu.

 
Odpovědět 12.3.2018 20:25
Avatar
thibo58
Člen
Avatar
thibo58:11.4.2018 8:03

Ahoj, nechápu následující řádek ze skriptu "zabezpečení":

$vlozeno = include('podstran­ky/' . $stranka . '.php');

Chápal bych, že bude do proměnné $vlozeno pouze vložena hodnota, ale provede se i načtení stránky funkcí include. Proč? Co jsem kde přehlédl? Vysvětlete prosím někdo.

 
Odpovědět 11.4.2018 8:03
Avatar
petericek
Člen
Avatar
petericek:17.4.2018 21:08

Zdravím, ako zabezpečím cez tento kód PHP, aby mi stránky v adresári HTML rozdelené do ADRESÁR1, ADRESÁR2 , ADRESÁR3, ..., ADRESÁR8, ktorý je delený na ADRESÁR8.1, ADRESÁR8.2, ... načítalo ? Viem, že v kóde by som vymenil 'podstranky/' za názov svojho adresára HTML, ale ďalej už neviem ako ...

 
Odpovědět 17.4.2018 21:08
Avatar
Tomáš Pour
Člen
Avatar
Odpovídá na thibo58
Tomáš Pour:23.4.2018 16:02

Myslím, že celá funkce je v proměnné $vlozeno hlavně kvůli následující podmínce, kdy php vypíše, že stránka nebyla nalezena.

 
Odpovědět  +1 23.4.2018 16:02
Avatar
Petr Fiedler
Člen
Avatar
Petr Fiedler:28.5.2018 20:54

Ahoj, jak by šlo co nejjednodušším způsobem změnit title pro každou stránku?

 
Odpovědět 28.5.2018 20:54
Avatar
Libor Šimo (libcosenior):13. ledna 18:29

Ahoj.
Možno mi niekto pomôže.

<div>
          <header>

          </header>
        <section>
            <?php
                if (isset($_GET['stranka']))
                    $stranka = $_GET['stranka'];
                else
                    $stranka = 'sms';
                if (preg_match('/^[a-z0-9]+$/', $stranka))
                {
                    $vlozeno = include('podstranky/' . $stranka . '.php');
                if (!$vlozeno)
                    echo('Podstránka nenalezena');
                }
                else
                    echo('Neplatný parametr.');
            ?>
        </section>
        <div class="cistic"></div>
        </div>

Tento kód zavolá do hlavnej stránky do časti section kód, ktorý vypíše potrebné. Ja ale potrebujem, aby mi to vypísalo v časti header text, ktorý s tým súvisí.
Ak som to nenapísal dosť zrozumiteľne, prosím píšte do pm.
Díky

Odpovědět 13. ledna 18:29
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Alma Mater
Člen
Avatar
Alma Mater:24. ledna 22:14

<!DOCTYPE html>
<html lang="cs-cz">

<head>
<meta charset="utf-8" />
<meta name="description" content="Osobní portfolio programátora HoBiho." />
<meta name="keywords" content="portfolio, programátor, HoBi" />
<meta name="author" content="HoBi" />
<link rel="shortcut icon" href="obrazky/i­kona.ico" />
<link rel="stylesheet" href="styl.css" type="text/css" />
<title><?php echo($_GET['s­tranka']); ?></title>
</head>

<body>
<!DOCTYPE html>
<html lang="cs-cz">

<head>
<meta charset="utf-8" />
<meta name="description" content="Osobní portfolio programátora HoBiho." />
<meta name="keywords" content="portfolio, programátor, HoBi" />
<meta name="author" content="HoBi" />
<link rel="shortcut icon" href="obrazky/i­kona.ico" />
<link rel="stylesheet" href="styl.css" type="text/css" />
<title>HoBiho portfolio</title>
</head>

<body>
<header>
<div id="logo"><h1>Ho­Bi</h1></div>
<nav>
<ul>
<li>Domů</li>
<li>O mně</li>
<li>Dovednosti</li>
<li>Reference</li>
<li>Kontakt</li>
</ul>
</nav>
</header>

<article>
<div id="centrovac">
<header>
<h1><?php echo($_GET['s­tranka']); ?></h1>
</header>

<section>
<?php
if (isset($_GET['s­tranka']))
$stranka = $_GET['stranka'];
else
$stranka = 'domu';
if (preg_match('/^[a-z0-9]+$/', $stranka))
{
$vlozeno = include('podstran­ky/' . $stranka . '.php');
if (!$vlozeno)
echo('Podstránka nenalezena');
}
else
echo('Neplatný parametr.');
?>
</section>
<div class="cistic"></div>
</div>
</article>

<footer>
Vytvořil ©HoBi 2013 pro DEVBOOK.CZ
</footer>
</body>
</html>

 
Odpovědět 24. ledna 22:14
Avatar
Alma Mater
Člen
Avatar
Alma Mater:24. ledna 22:41

Zaujíma ma, ako môže byť premenná $vlozeno = include('podstran­ky/' . $stranka . '.php');

vkladať podstránky, keď premenná nie je priamo volaná ako by to bolo napr. pri: include('podstran­ky/' . $stranka . '.php');. Je to niekde vysvetlené, stačí keď ju volá samotná negacia if (!$vlozeno)??

 
Odpovědět 24. ledna 22:41
Avatar
Odpovídá na Alma Mater
Michal Šmahel:25. ledna 17:45

Ahoj, je dobře, že nad tím přemýšlíš. Jen příště prosím vkládej zdrojové kódy přes ikonku </> (vedle smajlíka).

Obsah souboru 'podstranky/' . $stranka . '.php' se do proměnné nevkládá. Funkce include() a její podobné (include_once(), require() a require_once()) vrací hodnoty true nebo false. True při úspěchu a false při neúspěchu. Stránka je tedy vložena (pokud je soubor nalezen) funkcí include() a do proměnné $vlozeno je uloženo, jak operace proběhla.

Více informací je v dokumentaci.

Odpovědět  +1 25. ledna 17:45
Nejdůležitější je motivace, ovšem musí být doprovázena činy.
Avatar
Odpovídá na Alma Mater
Pavel Lachnit:28. ledna 11:38

Zobrazovat jako Titulek stránky hodnotu předávanou parametrem GET mi přijde trochu nehezké, nečitelné...

<!DOCTYPE html>
<html lang="cs-cz">

<head>
        <meta charset="utf-8" />
        <title>
                <?php
                        if (isset($_GET['stranka']))
                                $stranka = $_GET['stranka'];
                        else
                                $stranka = 'domu';
                        if (preg_match('/^[a-z0-9]+$/', $stranka))
                        {
                                $titulky = array(
                                                  'domu'       => '',
                                                  'omne'       => '- O mně',
                                                  'dovednosti' => '- Dovednosti',
                                                  'reference'  => '- Reference',
                                                  'kontakt'    => '- Kontakt',
                                                  'poslatmail' => '- Můj e-mailový formulář',
                                                );

                                echo("Pavlova stránka $titulky[$stranka]");
                        }
                        else
                                echo('Chyba!');
                ?>
        </title>
        <link rel="stylesheet" href="styl.css" type="text/css" />
</head>

        <body>
                <header>
                        <div id="logo"><h1>Lachnit Pavel</h1></div>
                        <nav>
                                <ul>
                                        <li><a href="index.php?stranka=domu">Domů</a></li>
                                        <li><a href="index.php?stranka=omne">O mně</a></li>
                                        <li><a href="index.php?stranka=dovednosti">Dovednosti</a></li>
                                        <li><a href="index.php?stranka=reference">Reference</a></li>
                                        <li><a href="index.php?stranka=kontakt">Kontakt</a></li>
                                </ul>
                        </nav>
                </header>

                <article>
                        <div id="centrovac">
                                <header>
                                        <?php
                                                if (isset($_GET['stranka']))
                                                        $stranka = $_GET['stranka'];
                                                else
                                                        $stranka = 'domu';
                                                if (preg_match('/^[a-z0-9]+$/', $stranka))
                                                {
                                                        $nadpisy = array(
                                                                         'domu'       => '<h1>Pavel</h1>',
                                                                         'omne'       => '<h1>O mně</h1>',
                                                                         'dovednosti' => '<h1>Dovednosti</h1>',
                                                                         'reference'  => '<h1>Reference</h1>',
                                                                         'kontakt'    => '<h1>Kontakt</h1>',
                                                                         'poslatmail' => '<h1>Odeslání e-mailu</h1>',
                                                                        );

                                                        echo("$nadpisy[$stranka]");
                                                }
                                                else
                                                        echo('<h1>Chyba!</h1>');
                                        ?>
                                </header>

                                <section>
                                        <?php
                                                if (isset($_GET['stranka']))
                                                        $stranka = $_GET['stranka'];
                                                else
                                                        $stranka = 'domu';
                                                if (preg_match('/^[a-z0-9]+$/', $stranka))
                                                {
                                                        $vlozeno = include('podstranky/' . $stranka . '.php');
                                                        if (!$vlozeno)
                                                                echo('Podstránka je ve vývoji, zkuste to později.');
                                                }
                                                else
                                                        echo('Neplatný parametr.');
                                        ?>
                                </section>
                                <div class="cistic"></div>
                        </div>
                </article>


                <footer>
                        Vytvořil &copy;LaP 2018 podle <a href="http://itnetwork.cz">ITNETWORK.CZ</a>
                </footer>
        </body>

</html>

Takže dělám v tagu <title> po kontrole vstupu "překlad" hodnot z $_GET['stranka'] na čitelnější text.

Odpovědět  +2 28. ledna 11:38
Nikdy Ničemu Nevěř!
Avatar
Odpovídá na Libor Šimo (libcosenior)
Pavel Lachnit:28. ledna 11:52

Myslíš něco takového?

<div>
          <header>
            <?php
                if (isset($_GET['stranka']))
                    $stranka = $_GET['stranka'];
                else
                    $stranka = 'sms';
                if (preg_match('/^[a-z0-9]+$/', $stranka))
                {
                    $heads = array(
                        'domu'       => 'Úvodní stránka',
                        'omne'       => 'O mně',
                        'sms'         => 'SMSky',
                        );
                    echo("$heads[$stranka]");
                        }
          </header>
        <section>
            <?php
                if (isset($_GET['stranka']))
                    $stranka = $_GET['stranka'];
                else
                    $stranka = 'sms';
                if (preg_match('/^[a-z0-9]+$/', $stranka))
                {
                    $vlozeno = include('podstranky/' . $stranka . '.php');
                if (!$vlozeno)
                    echo('Podstránka nenalezena');
                }
                else
                    echo('Neplatný parametr.');
            ?>
        </section>
        <div class="cistic"></div>
  </div>
Odpovědět 28. ledna 11:52
Nikdy Ničemu Nevěř!
Avatar
Alma Mater
Člen
Avatar
 
Odpovědět 31. ledna 1:59
Avatar
Adam Bouček
Člen
Avatar
Adam Bouček:8. února 11:37

Dobrý den, vše mi jde až na jednu věc a to je když se mi PHP soubor otevře v <section> tam ten text, třeba z domu.php mi nechce zobrazit speciální znaky. Jinak v menu znaky fungují.

 
Odpovědět 8. února 11:37
Avatar
Walter
Člen
Avatar
Odpovídá na Adam Bouček
Walter:10. února 7:20

Měl jsem stejný problém. Netbeans totiž pracuje ve WINDOWS-1250. Já nepřišel na to jak se to přendavá. Buď zkus jiný program (PHPstorm je super až na to, že je zdarma jen na 30 dní a má složitější instalaci XAMPP) nebo se pokus přijít na to jak Netbeans přepnpit do UTF-8.

 
Odpovědět 10. února 7:20
Avatar
Walter
Člen
Avatar
Walter:10. února 7:34

Dobrý den,
chtěl bych se zeptat, jak zařídit,a by se v index.php defaultně zobrazovala stránka domu.php a nasledně se pak měnila. Jde mi o to, že když otevřu web tak se mi zobrazí pouze header a foote, ale section je prázdná

 
Odpovědět 10. února 7:34
Avatar
Jan Poláček
Redaktor
Avatar
Odpovídá na Walter
Jan Poláček:10. února 14:34

Ahoj, na konci článku to tam je napsané

if (isset($_GET['stranka']))
        $stranka = $_GET['stranka'];
else
        $stranka = 'domu';

v tomto úryvku je defaultní stránka domu viz 4 řádek (jinak to je podmínka > je nastavená proměnná $_GET["stranka"]?, pokud ano, ulož do proměnné $stranka, jinak do proměnné $stranka ulož domu) - celá cesta by měla být tedy "podstranky/do­mu.php", pokud nemáš ve složce podstranky soubor domu.php, nebude to fungovat, ale mělo by to něco vypsat.

Odpovědět 10. února 14:34
Instrukce na adrese 0x77104f29 odkazovala na adresu paměti 0x00000014. S pamětí nelze provést operaci: written.
Avatar
Walter
Člen
Avatar
Odpovídá na Adam Bouček
Walter:11. února 7:07

Našel jsem toto řešení:
Navigate to <Netbeans installation directory>/etc and open the netbeans.con­f file.

Add -J-Dfile.encoding=UTF-8 at the end of the line that starts with netbeans_de­fault_options (ma­ke sure to include the leading space).

Restart Netbeans and it should be in UTF-8

To verify go to help -> about and check System: Windows Vista version 6.0 running on x86; UTF-8; nl_NL (nb)

 
Odpovědět 11. února 7:07
Avatar
Walter
Člen
Avatar
Odpovídá na Jan Poláček
Walter:11. února 7:07

Díky, vyřešeno

 
Odpovědět 11. února 7:07
Avatar
Petr Oliva
Člen
Avatar
Petr Oliva:20. dubna 10:40

Ahoj, možná hloupá otázka, ale nerozumím proč se vypisuje rovnou obsah načítaného souboru, když jej vkládám do proměnné $vlozeno? Nikde nevidím echo $vlozeno, nebo něco takového.

$vlozeno = include('podstranky/' . $stranka . '.php');

Jde mi o to, že by mělo jít tento obsah načítat na začátku souboru, vložit do proměnné a pak vypsat na příslušném místě. Podobně jako to navrhuješ u výpisu <title> nebo nadpisu. Nebo je toto nebezpečné? Nevím, prosím o vysvětlení. Děkuji

 
Odpovědět 20. dubna 10:40
Avatar
Petr Oliva
Člen
Avatar
Odpovídá na Petr Oliva
Petr Oliva:21. dubna 11:50

špatně jsem to formuloval. Jak čtu v dalších lekcích, jistě by šlo tu část s načtením $stranka

if (isset($_GET['stranka']))
        $stranka = $_GET['stranka'];
else
        $stranka = 'domu';
if (preg_match('/^[a-z0-9]+$/', $stranka))
{

jako funkci. Ale to úplně zatím nevím jak, protože nerozumím tomu co jsem psal předtím.

 
Odpovědět 21. dubna 11:50
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Petr Oliva
David Čápka:21. dubna 12:09

Občas je dobré si projít článek znovu. Cituji jeho část:

Funkce bere jako parametr opět cestu k souboru a obsah hned vypíše. Pokud je v souboru nějaká PHP sekvence, tak ji spustí.

require() obsah souboru nevrací, ale vypisuje. include() dělá to samé, myslím, že vrací zda se to povedlo nebo ne. Proto se ti do proměnné článek neuloží. Vložit kód do funkce ti nic nebrání, jen jsou probírány až dále v kurzu.

Editováno 21. dubna 12:13
Odpovědět 21. dubna 12:09
Jsem moc rád, že jsi na síti, a přeji ti top IT kariéru, ať jako zaměstnanec nebo podnikatel. Máš na to! :)
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 135 zpráv z 135.