Ako oddelit HTML a PHP – PHP – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Ako oddelit HTML a PHP – PHP – Fórum – Programujte.comAko oddelit HTML a PHP – PHP – Fórum – Programujte.com

 

29. 7. 2009   #1
-
0
-

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.

Nahlásit jako SPAM
IP: 78.99.97.–
Kobi
~ Moderátor
+1
Věrný člen
29. 7. 2009   #2
-
0
-

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.

Nahlásit jako SPAM
IP: 90.178.69.–
29. 7. 2009   #3
-
0
-

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

Nahlásit jako SPAM
IP: 78.99.97.–
ETNyx0
Newbie
29. 7. 2009   #4
-
0
-

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 :-)

Nahlásit jako SPAM
IP: 89.102.145.–
bukaj_0010
Věrný člen
30. 7. 2009   #5
-
0
-

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/

Nahlásit jako SPAM
IP: 88.101.128.–
Jak se správně ptát? -> http://www.hash.cz/inferno/otazky.html[br][br] Po programování je člověk hladovej.
Kobi
~ Moderátor
+1
Věrný člen
30. 7. 2009   #6
-
0
-

To bukaj_001 : Jak jsem psal, každému vyhovuje něco jiného. Upřednostňuju přehlednost před zkrácením kódu.

Nahlásit jako SPAM
IP: 90.178.69.–
hrach
~ Redaktor
+1
Boss
30. 7. 2009   #7
-
0
-

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ší :)

Nahlásit jako SPAM
IP: 90.176.181.–
http://jan.skrasek.com@hrachcz – webdeveloper
2. 8. 2009   #8
-
0
-

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

Nahlásit jako SPAM
IP: 78.99.97.–
z_moravec
~ Redaktor
+3
Posthunter
2. 8. 2009   #9
-
0
-

To devilevil : Bez kódu to asi těžko někdo posoudí.

Nahlásit jako SPAM
IP: 83.240.110.–
Spát lze čtyři hodiny denně, spát déle je nemístný přepych.
Thomas Alva Edison
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 23 hostů

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý