Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]GET i include. Jak powinno być porządnie
Forum PHP.pl > Forum > Przedszkole
szyn33k
Witam!
Mam pewien skrypt i w nim kawałek kodu:

  1. <?php
  2. if(empty($_GET['page']) or $_GET['page']=='newsy') { include('newsy.php'); }
  3. elseif($_GET['page']=="rejestracja") { include("rejestracja.php"); }
  4. elseif($_GET['page']=="logowanie") { include("panel-uzytkownika.php"); }
  5. elseif($_GET['page']=="admin") { include("panel-admina.php"); }
  6. elseif($_GET['page']=="wyloguj") { include("wyloguj.php"); }
  7. elseif($_GET['page']=="login") { include("newsy.php"); }
  8. elseif($_GET['page']=="komentarz") { include("komentarz.php"); }
  9. elseif($_GET['page']=="lista") { include("lista.php"); }
  10. elseif($_GET['page']=="profil") { include("profil.php"); }
  11. elseif($_GET['page']=="mecze") { include("mecze.php"); }
  12. elseif($_GET['page']=="galeria") { include("galeria.php");; }
  13. elseif($_GET['page']=="druzyny") { include("druzyny.php"); }
  14. elseif($_GET['page']=="kadra") { include("kadra.php"); }
  15. elseif($_GET['page']=="kontakt") { include("kontakt.php"); }
  16. elseif($_GET['page']=="moj-profil") { include("moj-profil.php"); }
  17. elseif($_GET['page']=="newmail") { include("newmail.php"); }
  18. elseif($_GET['page']=="mymail") { include("mymail.php"); }
  19. elseif($_GET['page']=="sentmail") { include("sentmail.php"); }
  20. elseif($_GET['page']=="przypomnij") { include("przypomnij-haslo.php"); }
  21. ?>


według mnie nie wygląda to zbyt ładnie. Jest jakiś sposób aby to uprościć i aby to wyglądało w miarę profesjonalnie?
Pozdrawiam smile.gif
aras785
może switch lub dynacznie ale wtedy musisz troche zabezpieczyć skrypt
mieszkos
edit: @down : racja napisałem głupotę, nie pomyślałem.
peter13135
@up. Sprawdź sam jak to zadziała wink.gif


  1. $list = array('rejestracja.php' => 'rejestracja', 'logowanie.php' => 'logowanie');//uzupełnij sobie sam ;)
  2. $get = $_GET['page'];
  3. if( ($filename = array_search($get, $list)) != false )
  4. {
  5. include $filename;
  6. }
  7. else
  8. {
  9. //error 404, chyba masz bana
  10. }
mieszkos
Walnąłem głupotę więc się poprawiam


  1. <?php
  2.  
  3. $list = array('rejestracja' => 'rejestracja.php', 'logowanie' => 'panel-uzytkownika.php');
  4. $get = $_GET['page'];
  5.  
  6. switch($get) {
  7. case array_key_exists($get, $list):
  8. include($list[$get]);
  9. break;
  10. default:
  11. include('error-page.php');
  12. break;
  13. }
  14. ?>
mokry
Bardzo dużo elementów tablicy posiada taki sam klucz i nazwę pliku (tyle, że z rozszerzeniem .php).
Możesz zrobić tablicę, w której przechowywać będzies tylko te strony, które posiadają różne pliki w stosunku do nazwy w adrsie URL.
I teraz tak: sprawdzać, czy istnieje w tablicy wyjątek ('logowanie' => 'panel-uzytkownika.php') i jeśli tak, ładować te pliki, a jeśli nie ma w tablicy, to ma załadować plik o tej samej nazwie co request , tylko dodać .php na końcu.
Oczywiście ze względów bezpieczeństwa proponuję sprawdzić, czy nie ma nigdzie w przekazanej wartości żadnych niebezpiecznych ciągów, oraz czy plik istnieje (np. w określonej na sztywno lokalizacji).
Jeżeli nie będzie pliku na serwerze, wtedy include jakiejś strony z błędem.
peter13135
@mieszkos
Cytat
Walnąłem głupotę więc się poprawiam

tzn. walisz większą głupotę ? biggrin.gif
mieszkos
@up

czemu ?
CuteOne
  1. $modules = array(
  2. 'default' => 'default.php',
  3. 'reg' => 'rejestracja.php',
  4. 'graph' => 'graph/graph.php'
  5. );
  6.  
  7. $id = !empty($_GET['id']) ? $_GET['id'] : 'default';
  8.  
  9.  
  10. if(isset($modules[$id])) {
  11.  
  12. require_once $modules[$id];
  13. }
  14. else {
  15.  
  16. require_once $modules['default'];
  17. }
szyn33k
Dziękuję bardzo za pomoc smile.gif o to mi chodziło smile.gif
Można zamknąć smile.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.