Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]includowanie stron
Forum PHP.pl > Forum > Przedszkole
shreker
Mam problem następującego typu:
w tablicy $dozwolone mam wpisane strony które są "includowane" do okna głównego przeglądarki. Jest tych stron oczywiście sporo, dlatego mam pytanie czy można ten fragment kodu przerobić tak aby nazwy stron były includowane z zewnętrznego pliku, a nie wypisane jak poniżej. Jeżeli można tak zrobić to w jaki sposób i jak miałby wyglądać plik zewnętrzny (tzn. jakim separatorem , i czy w ogóle miały by być oddzielone te nazwy stron.
Kod
                $dozwolone=array('sites/glowna',
                                         'sites/strona1',
                                         'sites/strona2';
                                );
                
                if (isset($_GET['pokaz'])) $pokaz=$_GET['pokaz']; else $pokaz=$dozwolone[0];
                
                if (in_array($pokaz,$dozwolone)) include($pokaz.'.php');
                else include($dozwolone[0].'.php');
loganek
można tak: w pliku wpisy.txt zrób tak:
Kod
sites/strona1 sites/strona2 strona3

czyli oddzielane spacjami. a w pliku gdzie indludujesz strony:
Kod
$separator=" ";
                $dozwolone=explode($separator, file_get_contents($wpisy.txt))
                
                if (isset($_GET['pokaz'])) $pokaz=$_GET['pokaz']; else $pokaz=$dozwolone[0];
                
                if (in_array($pokaz,$dozwolone)) include($pokaz.'.php');
                else include($dozwolone[0].'.php');

oczywiście to jakiego separatora użyjesz, to zalezy od ciebie, ja zaproponowałem spację, ale może to być np. przecinek itp.
shreker
Zmieniłem kod na taki:
Kod
$wpisy="strony.php";
$separator=",";
                 $dozwolone=explode($separator, file_get_contents($wpisy));
                
                 if (isset($_GET['pokaz'])) $pokaz=$_GET['pokaz']; else $pokaz=$dozwolone[0];
                
                 if (in_array($pokaz,$dozwolone)) include($pokaz.'.php');
                 else include($dozwolone[0].'.php');

plik strony.php :
Kod
sites/glowna,
sites/strona1,
sites/strona2,


i jest problem :-(

strona glowna otwiera się bez problemu, ale inne w ogóle (po nasiśnięciu w menu, obojętnie którą stronę by się nie wybrało zawsze ładuje stronę glowna - tak jakby inne "były niedozwolone".
Probowalem też z cudzyslowami, ale dalej ta sama sytuacja. Wyglada to tak jakby iine strony poza glowną nie były wczytywane.
W czym problem.

wydaje mi się że coś jest nie tak z tą linijka, ale sam już nie wiem :
Kod
$dozwolone=explode($separator, file_get_contents($wpisy));
nexis
A nie łatwiej utworzyć katalog z dozwolonymi podstronami - powiedzmy podstrony/, a następnie w nim trzymać odpowiednie pliki i przy includowaniu sprawdzać czy plik istnieje?

  1. <?php
  2. $dir = './podstrony/';
  3.  
  4. if (isset($_GET['pokaz']) && file_exists($dir.$_GET['pokaz'])) {
  5.  include $dir.$_GET['pokaz'] . '.php';
  6. }
  7. ?>
shreker
Nie bardzo mogę tak zrobić, bo strony są rozmieszczone w różnych katalogach, więc ta koncepcja odpada. Zostaje tylko ta poprzednia, tylko dlaczego inne pliki nie są wczytywane, próbowałem je też zapisać jeden, za drugim w tablicy, ale dalej jest ta sama sytuacja, wczytywana jest tylko strona glowna.
Dopiero raczkuję w PHP ale wydaje mi się że coś jest nie tak z tą linijką:
Kod
$dozwolone=explode($separator, file_get_contents($wpisy));
loganek
Kod
sites/glowna,
sites/strona1,
sites/strona2,

zauważ że separator to nie tylko przecinek, ale też znak nowej linii, więc separator powinien wyglądać:
Kod
$separator=",\n";
Kristof
Mysle że połaczenie tego:
http://pl2.php.net/manual/en/function.file-get-contents.php
i tego:
http://pl2.php.net/manual/en/function.explode.php
powinno rozwiązać sprawe. Ocztwiście przed wczytaniem zawartości pliku powinno się go otworzyć ale myśle, że to sobie już znajdziesz biggrin.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.