Jestem poczatkujacy w PHP, ale co nieco juz pisalem. Moja wypowiedz bedzie troche przydluga. Wybaczcie...Chcialbym stworzyc strone, ktora wygladalaby nastepujaco:Na stronie glownej jest menu glowne z pozycjami [Glowna], [Aktualnosci], [Zainteresowania], [Linki], itp. Po kliknieciu na np. zainteresowania wyswietliloby sie menu np. takie: [sport], [programowanie], [ksiazki],... Po kliknieciu na np. programowanie wyswietliloby sie kolejne menu: [PHP], [MySQL],... Za kazdym razem, gdy wybiera sie cos z menu, wszystkie "uruchomione" menu oraz aktualne powinny byc widoczne, w szczegolnosci menu glowne powinno byc zawsze widoczne.Struktura menu powinna byc odzwierciedlona w strukturze katalogow, aby by porzadek.Oczywiscie nie chce w kazdym pliku, np: zainteresowania/programowanie/php/index.php powtarzac kodu wyswietlajacego menu glowne, menu zainteresowan i menu jezykow programowan. To powinny robic odpowiednie skrypty wyzej w hierarchii katalogu.
Acha, jeszcze jedno, powyzsze przyklady menu sa troche wyssane z palca, wazne jest dla mnie, ze bede uzywal sesji, aby zarejestrowac osobe uprawniona do korzystania ze strony (np. nauczyciela wpisujacego oceny uczniom do bazy danych)
Mam dwa pomysly na zrobienie tego, jednak oba maja swoje wady.
1) W katalogu glownym mam plik index.php, ktory jest odpowiedzialny za zalogowanie, a jesli jest czlowiek zalogowany, to wyswietla menu glowne. Potem w zaleznosci od parametru $s podanego metoda GET(np. index.php?s=zainteresowania) includuje plik np. zainteresowania/index.php. Ten skrypt wyswietla podmenu. Jesli ponadto skrypt index.php (ten glo
ny) byl uruchomiony z parametrem s2 (np. index.php?s=zainteresowania&s2=programowanie), to $_GET['s2'] bedzie tez widoczny przez zaiteresowania/index.php, ktory obsluzy go includujac plik programowanie/index.php (czyli globalnie bedzie to zainteresowania/programowanie/index.php). I tak dalej. W ostatnim katalogu poza index.php beda np. pliki z konkretnymi artykulami/skryptami, czy jakims formularzem, czy czyms. Problem tej metody jest taki, ze url staje sie bardzo brzydki (ladniej wyglada zainteresowania/programowanie/php niz index.php?s=zainteresowania&s2=programowanie&s3=php). Ponadto w kazdym pliku index.php w podkatalogach musze na poczatku dodac jakas komende, ktora uniemozliwilaby obejscie logowania i uruchomienie danego pod-skryptu (np.@session_start(); if($_SESION['zalogowany']!=1) die(nie jestes zalogowany);Moze to nie sa takie wielkie problemy i nie trzeba sie nimi przejmowac. Poniewaz jestem poczatkujacy, nie wiem ,czy jest to eleganckie rozwiazanie.
2) Drugi pomysl polega na tym, ze skrypt glowny index.php nie zajmuj
sie odpaleiem skryptow nizej w hierarchii (jak wyzej), tylko odwrotnie. Jesli jestem na stronie glownej i nacisne na odnosnik [zainteresowania], to przeniesie mnie nie do glownego skryptu z parametrem s, tylko do skryptu zainteresowania/index.php, ktory najpierw uruchomi skrypt o 1 wyzej w hierarchii (sprawdzajac przy tym, czy gosc jest zalogowany, wyswietlajac rekurencyjnie wszystkie wyzsze w hierarchii menu), a potem wyswietl
strone wlasciwa dla podkategorii. Jest to - uwazam - bardziej eleganckie (nie trzeba sprawdzac, czy gosc jest zalogowany w kazdym skrypcie, mozna zmienic sposob wyswietlania ktoregos nadmenu (albo go wylaczyc) przez zdefiniowanie jakiejs wewnetrzej zmiennej: $menu2='off'; (oczywiscie skrypt odpowiedzialny za wyswietlanie menu drugiego powinno miec klauzule: if(isset($menu2)&($menu2!='off')) wyswietl menu). Jest jednak jeden problem ze sciezkami wzglednymi.Jesli w pliku glownym index.php mam <a href="zainteresowania/index.php">, to klikajac go przejde dobrze do zainteresowania/index.php, ale jesli wtedy jeszcze raz nacisne na widoczne przeciez menu glowne:
ainteresowania], to skrypt bedzie chcial odpalic zainteresowania/zainteresowania/index.php, bo przeciez teraz katalogiem wyjsciowym jest zainteresowania/. Chyba w takim przypadku musze wszedzie uzywac sciezek bezwzglednych, a to jest uciazliwe.Jak wy to rozwiazaliscie. Moze jest jakis jeszcze inny sposob? A moze nie warto robic takich glebokich drzew z menu? Prosze o pomoc.
Acha, jeszcze jedno. W pierwszym sposobie problem nie tylko lezy w brzydkim url-u, ale podczas pisania odnosnikow np. w pliku zainteresowania/programowanie/php/index.php jesli chce zrobic kilka odnosnikow do konkretnych artykulow, musze pisac <a href="index.php?s=zaint&s2=prog&s3=php&article=3">. W drugiej metodzie wystarczy mi (gdyby dzialalo tak jak chce) adres wzgledny index.php?article=3 (pisze wzgledny, bo lista parametrow s1,s2,s3 robi de facto za sciezke dostepu).