Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Pomoc w optymalizacji fragmentu kodu
Forum PHP.pl > Forum > PHP
Forti
Witam


Tworzę obecnie strone klanową, wraz z systemem logowania, własnym forum itp. jednocześnie ucząc się samemu PHP, MySQL itd.
Na stronie index.php mam kod, który wyświetla/ładuje (include) linki z menu lub z tych właśnie podstron.

Obecnie załadowany link wygląda tak:

www.strona.pl/index.php?inc=podstrona

To ładuje mi plik podstrona z folderu inc. Jeżeli chce zrobić odwołanie do innego folderu, a często chce aby nie robić sobie kilkanastu+ plików w jednym miejscu (odzielnie pliki logowania, odzielnie forum, odzielnie działy) muszę robić nową funkcje if(isset){}.


Kod który mam na stronie index.php wygląda tak:

  1. <?PHP
  2.  
  3. if (isset($_GET['dia'])) {
  4. if (file_exists('dia/diablo.php'))
  5. include('dia/diablo.php');
  6.  
  7. }
  8.  
  9. else {
  10.  
  11. if (isset($_GET['log'])) {
  12. $strona=$_GET['log'];
  13. if (file_exists('log/'.$strona.'.php'))
  14. include('log/'.$strona.'.php');
  15. else
  16. include('inc/error.php');
  17. }
  18. else {
  19.  
  20.  
  21. if (isset($_GET['inc'])) {
  22. $strona=$_GET['inc'];
  23. if (file_exists('inc/'.$strona.'.php'))
  24. include('inc/'.$strona.'.php');
  25. else
  26. include('inc/error.php');
  27. }
  28.  
  29. else {
  30. //załaduj stronę główną
  31. $strona="news";
  32. include('inc/'.$strona.'.php');
  33. }}}
  34.  
  35.  
  36. ?>



Wydaje mi się, że stworzony powyżej kod można skrócić i zoptymalizować.
ghost1511
Można skrócić zapis, ale z optymalizacją nie ma to wiele wspólnego. Wielkich różnic nie zauważysz.
Riggs
Użyj switch, a w opcji default dołącz stronę która będzie wyświetlana w przypadku nie podania podstrony w inc
Forti
Tyle że switch będzie działać podobnie, prawda? Chodzi mi o to, że gdy klikne link index.php?nowy_folder=jakiś_plik abym nie musiał dodawać kolejnej instrukcji dla nowy_folder.
maniana
Czy zrobisz to na IF czy SWITCH, nie ma różnicy, ważna jest logika skryptu. Przeanalizuj poniższy kod:
  1. <?php
  2. $pages = array(
  3. 'dia'=>'dia/diablo.php',
  4. 'log'=>'log/{log}.php',
  5. 'inc'=>'inc/{inc}.php',
  6. );
  7.  
  8. $errorPage = 'inc/error.php';
  9. $page = 'inc/news.php';
  10.  
  11. foreach($pages as $k=>$v){
  12. if(isset($_GET[$k])){
  13. $page = realpath(str_replace('{'.$k.'}',$_GET[$k],$v));
  14. if(!file_exists($page)){
  15. $page = $errorPage;
  16. }
  17. break;
  18. }
  19. }
  20. include($page);
Pyton_000
Zrób sobie tablicę kluczy (folderów) które są dozwolone (potem tylko dodasz do tej tablicy kolejny klucz)i uogólnij całość do sprawdzenia czy podany parametr znajduje się w tablicy. Jeżeli jest to sprawdzaj czy taki folder istnieje i czy istnieje plik w tym folderze i w końcu dołączaj go.
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.