Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Pytanie odn. kodu.
Forum PHP.pl > Forum > Przedszkole
Salur
Witam, chciałbym poprosić kogoś doświadczonego o pomoc w optymalizacji i zabezpieczeniu kodu wczytywania strony.

  1. <?PHP
  2. $includeDir = ".".DIRECTORY_SEPARATOR."pages".DIRECTORY_SEPARATOR;
  3. $includeDefault = $includeDir."home.php";
  4.  
  5. if(isset($_GET['s']) && !empty($_GET['s']))
  6. {
  7.  
  8. $_GET['s'] = str_replace("\0", '', $_GET['s']);
  9. $includeFile = basename(realpath($includeDir.$_GET['s'].".php"));
  10. $includePath = $includeDir.$includeFile;
  11.  
  12. if(!empty($includeFile) && file_exists($includePath))
  13. {
  14. include($includePath);
  15. }
  16. else
  17. {
  18. include($includeDefault);
  19. }
  20.  
  21. }
  22. else
  23. {
  24. include($includeDefault);
  25. }
  26. ?>
KsaR
Cytat(Salur @ 23.08.2015, 17:57:02 ) *
Witam, chciałbym poprosić kogoś doświadczonego o pomoc w optymalizacji i zabezpieczeniu kodu wczytywania strony.

  1. <?PHP
  2. $includeDir = ".".DIRECTORY_SEPARATOR."pages".DIRECTORY_SEPARATOR;
  3. $includeDefault = $includeDir."home.php";
  4.  
  5. if(isset($_GET['s']) && !empty($_GET['s']))
  6. {
  7.  
  8. $_GET['s'] = str_replace("\0", '', $_GET['s']);
  9. $includeFile = basename(realpath($includeDir.$_GET['s'].".php"));
  10. $includePath = $includeDir.$includeFile;
  11.  
  12. if(!empty($includeFile) && file_exists($includePath))
  13. {
  14. include($includePath);
  15. }
  16. else
  17. {
  18. include($includeDefault);
  19. }
  20.  
  21. }
  22. else
  23. {
  24. include($includeDefault);
  25. }
  26. ?>


Hm.

  1. <?php
  2. $inc='.'.DIRECTORY_SEPARATOR.'pages'.DIRECTORY_SEPARATOR;
  3. $page=isset($_GET['s'][0])?$_GET['s']:'';
  4. switch ($page) // sprawdzenie czy masz taka strone..
  5. {
  6. case 'strona1': $inc.='strona1'; break;
  7. case 'strona2': $inc.='strona2'; break;
  8. default: $inc.='home';
  9. }
  10. include basename(realpath($inc)).'.php';

Mini poprawka:

  1. <?php
  2. $page=isset($_GET['s'][0])?$_GET['s']:'';
  3. switch ($page) // sprawdzenie czy masz taka strone..
  4. {
  5. case 'strona1': $inc='strona1'; break;
  6. case 'strona2': $inc='strona2'; break;
  7. default: $inc='home';
  8. }
  9. include (basename(realpath('.'.DIRECTORY_SEPARATOR.'pages'.DIRECTORY_SEPARATOR.$inc.'.php'))); # dodałem dodatkowy nawias.

Poprawka co do nizego postu, bo cos nie tak hmm.
Nie testowalem ani pierwszego kodu ani drugiego, bo nie mam jak - jest to przerobiona wersja twojego.
Sprobuj czy tak dziala, dodalem nawias do poprawienia kolejnosci dzialan przy includowaniu. Bo moze cos zmienilo kolejnosc.

A co do pierwszego pytania,
Ten sposob polega na uniknieciu file_exists itd, tylko musisz z gory obstawic ze plik istnieje.
Np. strona1.php, strona2.php, contact.php, home.php czy co tam chcesz.. I dzieki temu masz tez zysk. Chyba ze masz cos jakos inaczej gdzie nie mozesz tak to wtedy doslownie bys musial tak jak miales niemal tongue.gif

Ps. Byc moze basename, realpath cos ci zmieniaja to wrazie czego sprobuj bez tych funkcji.
Salur
// rozwiązanie.

Funkcja basename była winowajcom.
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.