Jak to všechno propojit pomocí include?

Nazdar lidi,
v php jsem zatím jen mírně pokročilý, ale hned jsem se pustil do většího projektu:-) Vytvářím web pro naši třídu, který je celý založen na autorizaci. Obsahuje několik základních stránek, na které se nabalují další. Chci tam zamontovat i různé "stupně opravnění", takže jednotlivé stránky mají několik "podob". Trochu jsem se zadrhl na tom, jak to všechno includovat dohromady (hlavička, tělo, ...). Je mi jasné, že mám asi několik možností:
- všechno includovat do indexu.php (ale to by bylo asi moc složité)
- použít rámy, ale do toho se mi nechce
- mít základní stránky provázané odkazy a ty další includovat do nich
Možná mě nikdo nepochopil :), ale chtěl bych se zeptat jak se to dělává nebo co vám přijde nejlepší.

Díky. PAVEL
>> - všechno includovat do indexu.php (ale to by bylo asi moc složité)
Dle mně je to nej řešení...
>> - použít rámy, ale do toho se mi nechce
To je dle mně nedobrý řešení obzvlášt při auorizaci, ale přinejhorśím ano
>> - mít základní stránky provázané odkazy a ty další includovat do nich
Neopchopeno
Ruzna reseni maji ruzne vyhody a ruzne nevyhody :) ... zalezi na konkretni aplikaci a jak moc se stranky meni podle urovne prav ...

Ja osobne to vetsinu resim tak, ze udelam strukturu stranek tak, jako by zadny prava nebyli ... do kazdy stranky includuju hlavicku (s menu,...) a paticku nebo mam funkce, ktery to generujou.

Budes muset asi nejakym zpusobem realizovat Session (projdi tohle forum, na tohle tema je tu uz par zajimavejch ;-) threadu)

Session => User
User => Prava

Prava se daji taky realizovat nejruznejsim zpusobem, vetsinou by sis ale mohl vystacit s jednim cislem
0 ... guest
1 ... normalni uzivatel
2 ... mocnejsi uzivatel
3 ... nejmocnejsi uzivatel
4 ... obycejny admin
5 ... neobycejny admin
6 ... nejmocnejsi admin
7 ... ty :o)

Tohle vsechno muze bejt v ramci skriptu hlavicky ... a ten ti naplni nejakou promenou treba $gn_UserRights ... Pak ve strance zobrazujes/skryvas veci podle prav.

Radek
>> - všechno includovat do indexu.php (ale to by bylo asi moc složité)
> Dle mně je to nej řešení...

Ja bych rek, ze jen pro jednoduchy stranky ... obvzlast pokud mas rozlisovat prava ... zkus si predstavit www.webzdarma.cz pres jeden soubor :)

Radek
Ja to bezne delam dvema zpusoby:
Prvni:

index.php?mode=xxx

include "... potrebne includy..."
... setup stranky...
... hlavicka stranky

include "$mode.php";

.. pata stranky....

Druhy:
include "... potrebne includy..."
include "... setup stranky..."
include "... hlavicka stranky..."

... stranka

include ".. pata stranky..."

Ten prvni zpusob ma vyhodu v moznosti na zaklade $mode tvorit interaktivni menu, a zvyraznovat v menu aktualni stranku. Samozrejme, ze to jde i v tom druhem ale trosku slozitejs. Prvni zpusob ale zanasi do systemu dalsi zmatek, a je narocny udrzet celou strukturu stranky...

K urovnim opravneni - mam jich celkem 100 :o). 1-100, a pravidla jsou takova, ze uzivatel na urovni n muze jinemu uzivateli venovat opravneni n-1 a pridelit mu nanejvis ty prava, ktere ma on sam. Totez plati pro sesazovani.
Já to většinou dělám index.php?page=2 atd...
Dle mě to stačí;).
Jinak ty tvá práva se mi líbí;)).
Díky všem za odpovědi...

Tak jsem si to taky představoval (Radek, Ondřej), s indexem by to bylo přecejenom moc složité, na to co tam všechno hodlám zakomponovat.
Nejspíš si na papír načrtnu strukturu celých stránek a zapojím trochu své chytrosti (snad mi bude stačit :), abych to vymyslel. Největší problém bude asi s fórem (to bych taky chtěl :). Zamontovat ho do systému includování si určitě vyžádá použít další mozkové kapacity.
Jinak, jestli se mi to někdy povede, tak vám to dám zhodnotit. Tipuju to tak na 3 měsíce, ale raději nic neslibuju.

Ještě jednou díky.

PAVEL
Ještě jsem si vzpomněl,
chtěl bych taky odesílat SMSky, ale jak na to?
- odesílat maily na +420xxxxxxxxx@sms.xxxxx.cz - toto má ale myslím velké nedostatky. Nevím to jistě, ale prý že to ne všichni operátoři plně podporují a navíc je tady to omezení mail().
- odeslat formulář na skript operátora - to je asi ta správná možnost, ale docela rád bych se zbavil výsledného operátorova "zpráva byla doručena". První co mě napadlo, je strčit tu jeho stránku do nějakého IFRAMEu.

Vím, že už se tu o otm možná psalo, ale přesto neznáte někdo něco lepšího?

PAVEL
> Nejspíš si na papír načrtnu strukturu celých stránek a zapojím trochu své chytrosti

... z teto vety by si asi melo par lidi vzit priklad ;~) ...

> Největší problém bude asi s fórem

... ja mam treba forum jako jedinou stranku phorum.php a parametrem rozlisuju, kde zrovna uzivatele je ... vypis kategorii, temat, prispevku ... v podstate se asi jedna o vhodnou kombinaci obou metod ... a ani nemusis pouzivat include (imho je prehlednejsi a pohodlnejsi to mit v jednom skryptu)

if (submit vkladajiciho formulare) {
...
}

if (nastaveno id vlakna) {
...
}

if (nastaveno id sekce) {
...
}

if (neni zadny parametr) {
// vypis sekci
}

Radek
Radek (---.dialup.vol.cz)

Clovece to nevim, ja mam taky forum v jednom souboru, a je to pekne neprehledne. Bezne to delam podle pravidla - jiny druh stranky - jiny soubor. Tedy na vypis sekci bych mel jiny soubor, na vypis vlaken taky, na vypis diskuze taky, a na submit myvam taky vlastni soubor s tim ze na konci byva uvedeno include, kde stranka pokracuje treba vypisem diskuze. Tady se hodne vyplati pouzivat include_once/requiered_once
> mam taky forum v jednom souboru, a je to pekne neprehledne

... zalezi na tom, jak to pises ...

/* Vklada prispevek */

if (isSet($ps_Submit)) {
$ls_errors = "";
if (!isSet($ps_www)) $ps_www = "";
$lb_ret = gf_phorum_insert_reac($pn_t41pk___,$pn_t40pk___,$pn_t40pk___,$ps_title,$ps_text,$ps_nick,$ps_email,$ps_www,$ls_errors);
if ($lb_ret) gf_page_redirect($gs_this_page,"pn_t41pk___=$pn_t41pk___&ps_redir=OK");
}

/* Zobrazi konkretni sekci - guestbook, forum */

if (isSet($pn_t41pk___)&&(!isSet($pn_t40pk___))) {
gf_phorum_show_section($la_SectionInfo, $gs_this_page);
}

... cely telo stranky i s textama se vejde asi tak na 2 az 3 obrazovky ... pak se tam includuje phorum.engine.php, kde je veskera logika ve funkcich.

Radek
heh, moje forum ma uz asi 7 souborů... Celkem jich bude asi 10
jj to je imho prehlednejsi nez to cpat do jednoho
> odesílat maily na +420xxxxxxxxx@sms.xxxxx.cz - toto má ale myslím velké nedostatky...

...nejmensi priorita, v pripade t-mobil nekolik ruznych podob emailu, ne kazdy uzivatel ma email alias zaregistrovany (nutne v pripade t-mobil a oskar) atd... proste skrz email je to blbost.

> odeslat formulář na skript operátora - to je asi ta správná možnost, ale docela rád bych se zbavil výsledného operátorova "zpráva byla doručena". První co mě napadlo, je strčit tu jeho stránku do nějakého IFRAMEu.

...no bud to budes delat, ze ve frame otevres cely jeho formular (jednodussi verze), nebo otevres socketu a budes tam pumpovat data, ktera jsou potreba. pak nebudes mit problem ani s nejakyma hlaskama, protoze odpoved si prijmes a podle ni si udelas vlastni chybove hlaseni... (toto je ale ta slozitejsi cesta a budes muset hlidat, jestli se nezmenily pozadavky na formular atd...). pokud to chces resit, ze adresu skriptu zadas jen do ACTION v tagu FRAME, tak to je hloupost - uz to bylo probirane nekolikrat...

m.s.
Martine, jak asi můžu zjištovat co mi on vrátí?
opust povrchnost svych znalosti a ponor se do hlubin HTTP protokolu ;-)

m.s.
...
Konkrétněji by to nešlo?
Díky Martine za stručné zhodnocení.
Byl bych rád, kdybys nám méně zkušeným mohl prozradit jak si získat odpověď pomocí HTTP. Něco jsem sice četl o chybách, které se hlavičkou posílají, ale jsem v tom dosti ztracen.
Netuším ani jak si "otevřít socketu" a "napumpovat tam data" :-( Takhle bych to rád udělal a občasné změny ve formulářích by mi nevadily.

PAVEL
Jak otevřít socket a napumpovat data vím, ale jak získat odpověď už ne:-(.
Lukasik:

fsockopen(...)
fputs(... hlavicka pozadavku...)
while (not konec)
{
$line= fgets(...); //cti vysledek po radcich;
}

ucite by to slo napsat i lip a hezcejc.
>Byl bych rád, kdybys nám méně zkušeným mohl prozradit jak si získat odpověď pomocí HTTP.

...to se neda popsat v jednom prispevku, ani se mi to nechce :-) (ne ze bych byl tak moooc liny, ale nerad bych se dopustil nepresnosti, kdyz na internetu jsou tuny materialu). nastuduj si http protokol (nejake informace muzes zacit hledat treba na adrese http://badame.vse.cz/izi228/prednasky/http.html)

navazes spojeni se serverem, posles svuj pozadavek a server ti posle odpoved... (budes se proste chovat stejne jako browser, coz je nutne, aby jsi zmatl skript)

nacrt zdrojaku napsal Ondrej nahore.

> Něco jsem sice četl o chybách, které se hlavičkou posílají, ale jsem v tom dosti ztracen.

...tebe spise bude zajimat obsah html stranky, kterou ti server posle a z te si vyparsujes, zda doslo k upsesnemu odeslani nebo ne a vypises vlastni hlasku.

btw: ja jen nechapu, proc se vsem chce s tim takhle patlat jen kvuli odesilani esemesek, co na tech smskach je??? jedine co pochopim, jsou studijni duvody :-) jinak podle me staci (kdyz uz to musi byt) <A HREF="smsbrana"> ;-)

m.s.
Nevím, tak je to vcelku zaímavá otázka, jinak jsem se asi špatně vyjádřil (určitě) odpověd umím získat, ale neumím tam cpát ty data...:o).
ja s tebe lukasiku nejak uz nemuzu... schvalne polozim tvoje dva prispevky pod sebe (snad to moc nedomotam):

>Jak otevřít socket a napumpovat data vím, ale jak získat odpověď už ne:-(.

> jinak jsem se asi špatně vyjádřil (určitě) odpověd umím získat, ale neumím tam cpát ty data...:o).

co te teda zajima????

m.s.
No jo dobře...:O).
Nevím už...:o).
Tak ty data bych přečetl, ale jak tam něco naházet přes PHP to nevím...:o).
On chce asi rict, ze nevi, jak vypada HTTP hlavicka, a jak se tam do toho vlozi cookies a POST data.