Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Problem ze skryptem odpowiedzialnym za "pracę" linków
Forum PHP.pl > Forum > Przedszkole
Forti
Czesc!

Mam taki skrypt:

  1. $pages = array(
  2. 'folder1'=>'log/{folder1}.php',
  3. 'folder2'=>'inc/{folder2}.php',
  4. 'folder3'=>'fora/{folder3}.php',
  5. );
  6.  
  7. $errorPage = 'inc/error.php';
  8. $page = 'inc/news.php';
  9.  
  10. foreach($pages as $k=>$v){
  11. if(isset($_GET[$k])){
  12. $page = realpath(str_replace('{'.$k.'}',$_GET[$k],$v));
  13. if(!file_exists($page)){
  14. $page = $errorPage;
  15. }
  16. break;
  17. }
  18. }
  19. include($page);



Problem mam taki, że mam zdefiniowany plik error.php i gdy wpisze:
- www.mojastrona.pl/folder1/error
lub
- www.mojastrona/folder1/gdfgfsdfsdsd

to faktycznie pojawia się plik error, jednak gdy wpisze:
- www.mojastrona.pl/fdsfsdfsdf

to ładuje mi się domyślnie $page = 'inc/news.php';
Mogę to zmienić aby ładowało się error.php domyslnie jednak przy wejsciu na www.mojastrona.pl załaduje mi to error.php, czego nie chcemy. Macie jakiś pomysł jak to przerobić?
fate
wklej ten kod do pliku ./index.php a nie do ./folder1/index.php pilnujac sciezek
Forti
Skąd przepuszczenie niby że index.php jest w jakieś innej lokalizacji niż okreslona przez domene www.mojastrona.pl?
fate
Wybacz strzelam thumbsdownsmileyanim.gif
Skrypt by działał jak chcesz przypuszczam gdybys przeniosl wszystkie podstrony z folder1 do folderu glownego ale rozumiem ze to nie jest rozwiazanie?
Forti
nie, ponieważ plików jest sporo - moje autorskie forum, panele uzytkowników, moderatorów, artykuły, newsy itp.. i troche odpada ze względu na estetykę.
fate
Sprawdź tak

  1. $folder = './folder1/';
  2.  
  3. $pages = array(
  4. 'folder1'=>'log/{folder1}.php',
  5. 'folder2'=>'inc/{folder2}.php',
  6. 'folder3'=>'fora/{folder3}.php',
  7. );
  8.  
  9. $errorPage = 'inc/error.php';
  10. $page = 'inc/news.php';
  11.  
  12. foreach($pages as $k=>$v){
  13. if(isset($_GET[$k])){
  14. $page = realpath(str_replace('{'.$k.'}',$_GET[$k],$v));
  15. if(!file_exists($folder.$page)){
  16. $page = $errorPage;
  17. }
  18. break;
  19. }
  20. }
  21. include($page);
nospor
Najpierw wypadaloby by nam podac jak wygląda $_GET dla roznych sytuacji, np:
www.mojastrona.pl/fdsfsdfsdf
www.mojastrona.pl/folder1/gdfgfsdfsdsd
www.mojastrona.pl

Aby to zrobic wystarczy dac:
print_r($_GET);
Forti
np. " www.mojastrona.pl/gege "daje:
Array ( [gege] => ) ?

"www.mojastrona.pl/gege/fefew " daje:
Array ( [gege] => fefew ) ?

a sam adres daje:
Array ( [index.php] => ) ?


Zaraz przetestuje skrypt fate.

edit:

nie stety on jest bezsensu ze względu na zmienną stałą $folder, chyba że źle kombinuje.. ;] bo faktycznie folder1 działa ok, ale jak dam folder2 to errorpage wyskakuje.
nospor
No i problem z glowy. Skarzyles sie, ze dla glownej masz error.
Wystarczy wiec ze sprawdzisz czy jest index '[index.php]' w $_GET i nie wywalaj wtedy error bo to glowna. Finito
Forti
hm.. w sumie teraz wydaje się proste.. a więc: znam logikę wykonania tego, teraz praktyka ;] idę sie bawic, dziękować!

edit:

w sumie po chwili zastanowienia to i tak nie wiem jak się za to zabrać.. no nic, będę próbować.


edit.2:
ok, rozwiązałem problem:


  1. $pages = array(
  2. 'index.php'=>'inc/news.php',
  3. 'log'=>'log/{log}.php',
  4. 'klan'=>'inc/{klan}.php',
  5. 'forum'=>'fora/{forum}.php',
  6. );
  7.  
  8. $errorPage = 'inc/error.php';
  9.  
  10.  
  11. $page = 'inc/news.php';
  12.  
  13.  
  14. foreach($pages as $k=>$v){
  15. if(isset($_GET[$k])){
  16. $page = realpath(str_replace('{'.$k.'}',$_GET[$k],$v));
  17. print_r($k);
  18. if(!file_exists($page)){
  19. $page = $errorPage;
  20. }
  21. break;
  22. }
  23. else{
  24. $page = $errorPage;
  25. }
  26. }
  27.  
  28. include($page);


;] podziękować

teraz będę walczyć aby wpisać: www.mojastrona/klan/plik-który-istnieje/fdfs również wywalało błąd ;] co na razie nie robi tak.
nospor
Cytat
teraz będę walczyć aby wpisać: www.mojastrona/klan/plik-który-istnieje/fdfs również wywalało błąd ;] co na razie nie robi tak.
Po raz kolejny: zobacz co masz w $_GET
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.