Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Czy to dobre rozwiązanie
Forum PHP.pl > Forum > Przedszkole
baszar
Siemka, czy ten kod jest ok? Zrobiłem go sam i nie jestem pewien ;d

  1. include('top.php');
  2.  
  3. $site = $_GET['site'];
  4. if(!file_exists($site.".php")) $site = "news";
  5. if(!isset($site)) $site="news";
  6.  
  7.  
  8. @include(''.$site.'.php');
  9.  
  10. include('stopka.php');



Chodzi mi o linki np index.php?site=register itd

i jeśli nie ma pliku o nazwie podanej w site to wyświetla news.

Ok jest? Może jest jakieś lepsze rozwiązanie?
!*!
Nie.

- wywal @ z kodu.
- nie wczytuj plików bezpośrednio z GET, użyj switch + ich nazw
- jak już coś wczytujesz z GET, to poza sprawdzeniem czy plik istnieje, użyj basename, aby nie możnabyło wpisać dowolnej ścieżki i pliku
- użyj wyszukiwarki bo już nie jeden taki skrypt tu był.
markonix
  1. @include(''.$site.'.php');

Niepotrzebne cudzysłowy.
  1. include($site .'.php');
baszar
A jeśli tego nie zrobie to coś grozi stronie?

Możesz mi pokazać jak to zrobić w switch bo ja dopiero się ucze i nie wiem za bardzo jak to zrobic?
!*!
Cytat
A jeśli tego nie zrobie to coś grozi stronie?

Poza wczytaniem każdego pliku jaki jest na serwerze? To nie.

  1. switch($_GET)
  2. {
  3. case 'stronaA':
  4. include 'a.php';
  5. break
  6. case 'stronaB':
  7. include 'b.php';
  8. break
  9. }
baszar
Ok

Mój kod teraz wygląda tak:

  1. switch($_GET['site'])
  2. {
  3. case 'register':
  4. include 'rejestracja.php';
  5. break;
  6. case 'test':
  7. include 'test.php';
  8. break;
  9. case 'news':
  10. include 'test.php';
  11. break;
  12. }


Ale jak zrobić, że jeżeli nie ma pliku podanego w site to przerzuca na plik news?
!*!
A przeczytałeś manual? switch ma deklaracje default.
baszar
Sorka tylko przejrzałem ;/

A teraz powiedź mi jak użyć tego basename bo nie wiem, próbowałem i nic mi nie wychodzi
!*!
Tak jak opisali w manualu. Pokaż jak to zastosowałeś.
baszar
TAK

  1. $site = $_GET['site'];
  2. $site1 = basename($site);
  3.  
  4.  
  5. switch($site1)
  6. {
  7. case 'register':
  8. include 'rejestracja.php';
  9. break;
  10. case 'test':
  11. include 'test.php';
  12. break;
  13. case 'news':
  14. include 'news.php';
  15. break;
  16. default;
  17. case 'news':
  18. include 'news.php';
  19. break;
  20. }
fiszol
Nie tak.
  1. $site = $_GET['site'];
  2. switch($site1) {
  3. case 'register':
  4. $strona = basename('rejestracja.php');
  5. include $strona;
  6. break;
  7. //itd, w basename wskazujesz na plik wiec jesli strony masz w folderze strony
  8. //to bedzie basename('strony/strona.php');
  9. //defaulta tez miales zle, tak powinno byc
  10. default;
  11. include 'news.php';
  12. break;
  13. }
baszar
Ok wielkie dzięki jeszcze nie mam takiego pojęcia o tym dopiero zaczynam ;d!
!*!
fiszol - po co mu basename do pliku który sam sobie zdeklarował? Tego się używa do odczytywania np. ścieżki z GET, gdy odbieramy coś od użytkownika.
fiszol
Urwana nocka zbiera swoje żniwo.
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.