Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Problem ze skryptem odpowiedzialnym za "pracę" linków
Forti
post
Post #1





Grupa: Zarejestrowani
Postów: 655
Pomógł: 73
Dołączył: 2.05.2014

Ostrzeżenie: (0%)
-----


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ć?
Go to the top of the page
+Quote Post
fate
post
Post #2





Grupa: Zarejestrowani
Postów: 824
Pomógł: 106
Dołączył: 14.03.2012
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


wklej ten kod do pliku ./index.php a nie do ./folder1/index.php pilnujac sciezek
Go to the top of the page
+Quote Post
Forti
post
Post #3





Grupa: Zarejestrowani
Postów: 655
Pomógł: 73
Dołączył: 2.05.2014

Ostrzeżenie: (0%)
-----


Skąd przepuszczenie niby że index.php jest w jakieś innej lokalizacji niż okreslona przez domene www.mojastrona.pl?
Go to the top of the page
+Quote Post
fate
post
Post #4





Grupa: Zarejestrowani
Postów: 824
Pomógł: 106
Dołączył: 14.03.2012
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Wybacz strzelam (IMG:style_emoticons/default/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?
Go to the top of the page
+Quote Post
Forti
post
Post #5





Grupa: Zarejestrowani
Postów: 655
Pomógł: 73
Dołączył: 2.05.2014

Ostrzeżenie: (0%)
-----


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ę.
Go to the top of the page
+Quote Post
fate
post
Post #6





Grupa: Zarejestrowani
Postów: 824
Pomógł: 106
Dołączył: 14.03.2012
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


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


Ten post edytował fate 23.07.2014, 07:14:21
Go to the top of the page
+Quote Post
nospor
post
Post #7





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




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);
Go to the top of the page
+Quote Post
Forti
post
Post #8





Grupa: Zarejestrowani
Postów: 655
Pomógł: 73
Dołączył: 2.05.2014

Ostrzeżenie: (0%)
-----


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.

Ten post edytował Forti 23.07.2014, 18:08:45
Go to the top of the page
+Quote Post
nospor
post
Post #9





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




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
Go to the top of the page
+Quote Post
Forti
post
Post #10





Grupa: Zarejestrowani
Postów: 655
Pomógł: 73
Dołączył: 2.05.2014

Ostrzeżenie: (0%)
-----


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.

Ten post edytował Forti 23.07.2014, 19:01:27
Go to the top of the page
+Quote Post
nospor
post
Post #11





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




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
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 4.10.2025 - 10:28