Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Pytanie odn. kodu.
Salur
post
Post #1





Grupa: Zarejestrowani
Postów: 179
Pomógł: 0
Dołączył: 28.12.2014

Ostrzeżenie: (20%)
X----


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





Grupa: Zarejestrowani
Postów: 520
Pomógł: 102
Dołączył: 15.07.2014
Skąd: NULL

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


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 (IMG:style_emoticons/default/tongue.gif)

Ps. Byc moze basename, realpath cos ci zmieniaja to wrazie czego sprobuj bez tych funkcji.

Ten post edytował KsaR 23.08.2015, 18:24:38
Go to the top of the page
+Quote Post
Salur
post
Post #3





Grupa: Zarejestrowani
Postów: 179
Pomógł: 0
Dołączył: 28.12.2014

Ostrzeżenie: (20%)
X----


// rozwiązanie.

Funkcja basename była winowajcom.

Ten post edytował Salur 23.08.2015, 19:21:48
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: 23.08.2025 - 11:07