Ahojte,
som v PHP zaciatocnik. Mam napisane nejake jednoduche skripty, ktore primaju z adresy premenne a podla toho zobrazuju obsah. Chcel by som tieto skripty dat dokopy a hodit to do pekneho HTML. Chcem vsak aby bol PHP oddeleny od HTML co najviac.
Neviem si vsak poradit ako to mam urobit, ak sa na 1 stranke budu vykonavat 2 a viac skriptov. Mam ich prepisat do funkcii a volat ich z index.php? Neviem si vobec predstavit, ako by sa to dalo realizovat co najviac "profesionalne", aby som sa mohol ku kodu hocikedy vratit a upravovat elegantne.
Dakujem.
Fórum › PHP
Ako oddelit HTML a PHP
Tak tady ti asi každý poradí něco jiného, každému totiž vyhovuje něco jiného.
Na místě, kde budeš z URL GETovat proměnné a podle toho se rozhodovat, co vypsat na stránku, si proměnnou otestuj v konstrukci switch, třeba takto:
$sekce = $_GET['sekce'];
switch($sekce){
case "novinky": include "novinky.php"; break;
case "profil": include "profil.php"; break;
default: include "default.php";
}
a tak dále. Co se týče tvých dvou skriptů - záleží, co budou dělat. Pokud to jsou jednoduché věci, nemá smysl to dávat do funkce a pak volat, v kódu to uzavři do značek php - <?php ?> - čímž to oddělíš od HTML. Pokud je toho víc a nechceš, aby se to míchalo s HTML, tak buď includuj jednotilvé funkce, popřípadě funkce napiš do jednoho souboru, který includuješ na začátku souboru, a funkce poté volej.
To Kobi :
Takze konecne URL by mohlo vyzerat nejako takto?
http://host.bla/index.php?sekce=clanky&zobraz=2&premenna=1 ?
Pokusim sa to viac rozvrhnut a uvidim, ci sa niekam s tym dopracujem. Chcem, aby to bolo co najviac prehladne.
V buducnosti budem urcite chciet urobit pekne URL pomocou .htaccess. Bude sa to potom dat urobit?
Dik.
EDIT:
Ak budem predavat skriptu novinky (napr) premennu z $_GET bude stacit includovat napr:
include "./novinky.php&" .$_GET["zobraz"]
?
DIK
To devilevil :
Moderewite nato určitě půjde udělat ale z osobní zkušenosti se mi to zdá nevhodný protože url ve tvaru http://host.bla/clanky/hawdware/koupil-sem-si-novy-pc.html a podobně mi přijdou, jako že je vyhledavače nechtějí tolik indexovat (aspoň dokud má stránka malý rank) řekl bych, že jim vadí délka adresy, takže jsem clanky/hawdware odstranil. Je jen jedina změna url kterou vyhledavače mohou vidět: ?stranka=x ostatní parametry jsou vkládány přes formuláře a tam vyhledavače nesahají. Prostě jde o to aby klíčové slovo (sousloví) pro danou stránku bylo v url a ostatní tam nepřekážely
Tímto jsem ale ztratil ty další informace, takže jsem je přesunul do dtb. A aplikaci sem rozdělil tak, že v první fázi si připraví všechno co potřebbuje (zjistí jakou má použít "šablonu" (veřejně přstupná část, chráněná heslem, administrátorská, běh programu s přesměrováním (zpracování formuláře atd,...)), zjistí jazyk, do proměnných uloží texty, formuláře, JS kontrolu,...). Nakonec zavolá tu "šablonu" ve které se to vykreslí takže html kód mam jen v té šabloně a pak v dtb (v textových polí tzn obsah článku a podobně).
EDIT:
Ak budem predavat skriptu novinky (napr) premennu z $_GET bude stacit includovat napr:
include "./novinky.php&" .$_GET["zobraz"][
To zrovna né :-) spíš budeš mít pouze
include("./novinky.php");
a v novinky.php normálně přistupuješ ke $_GET["zobraz"] (proměnná $_GET se chová globálně)
BTW jestli chces použít htaccess tak bych to udělal hned nazačátku aby s tím aplikace počítala, můžeš s tím pak mít problém :-)
devilevil
Chcem vsak aby bol PHP oddeleny od HTML co najviac.
Spíš než oddělovat PHP od HTML je dobré nad tím pomýšlet jako nad oddělením výkonné a prezenční části aplikace. Výkonná část je pak ta, která různé vybírá/transformuje/ukládá data, a prezenční je vykresluje a ukazuje uživateli.
V té prezenční části by se pak člověk měl omezit na to data vypisovat, iterovat nad nimi apod. Buď si můžeš zvolit nějaký template engine – Nette\Templates (hlavě tedy kvůli CurlyBrackets filtru [1]), PHPTAL[2], Smarty[3] –, čisté PHP, nebo třebas nějaký metajazyk[4]
S kódem té výkonné části ti může pomoci nějaký framework – Haefko[5], Nette[6], Zend[7], nebo nějaký malinkatý – třebas Limonade[8]. Ale taky nemusíš použít žádný.
Kobi
GETovat proměnné a podle toho se rozhodovat, co vypsat na stránku, si proměnnou otestuj v konstrukci switch
switch né! Takového psaní navíc!
$sekce = array('novinky' => 'novinky.php', profil' => 'profil.php');
if (isset($sekce[$_GET['sekce']])) include $sekce[$_GET['sekce']];
else include 'default.php';
Pro dvě, tři sekce se to moc neprojeví, ale jak jich je víc, při použití pole se objem kódu značně zredukuje.
Navíc se pole může vytvářet automaticky. Řekněme, že kódy pro jednotlivé sekce jsou v podadresáři sekce/ a mají koncovku .php:
foreach (glob('sekce/*.php') as $_) $sekce[substr($_, 6, strlen($_) - 10)] = $_;
[1] http://nettephp.com/cs/template-filters
[2] http://phptal.org/
[3] http://www.smarty.net/
[4] http://bukaj.netuje.cz/blog/at-text-processing-metalanguage
[5] http://haefko.skrasek.com/
[6] http://nettephp.com/
[7] http://framework.zend.com/
[8] http://limonade.sofa-design.net/
To Kobi : bukajovo řešení je naprosto přehledné a jak navíc napsal, mnohem kratší, chtělo by to jen trochu whitespaces.
Háefko přidává v nové verzi - 0.9 také podporu pro šablonovací systém - ala Nette, ala Smarty, něco lepší :)
Uz som poriesil oddelenie PHP od HTML. Mam uz dost popisane. Uz by som sa chcel len spytat, ci mam administraciu dost osetrenu proti hacknutiu.
Mam skript /administracia/index.php, kde sa kontroluje, ci dany uzivatel ma zalozenu session. Ak nie, chce po nom prihlasenie, ak ano definuje tajnu_konstantu ako TRUE. skripty v /administracia/* potom "require-uju" /administracia/index.php. Ak je tajna_konstanta definovana, povoli administraciu.
Je to podla vas dostatocne bezpezne?
Dik
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Ako vypísať echo do HTML — založil Martin
PHP pre velke projekty, alebo ako na PHP profesionalne ? — založil greppi
Nette ako najlepší PHP framework? Alebo čisté PHP? — založil stif
PHP pre velke projekty, alebo ako na PHP profesionalne ? #2 — založil Smokie
Využitie html v php ? — založil Ennergy
Moderátoři diskuze