Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Rodzaje sterowania stosowane w projektach
Forum PHP.pl > Forum > PHP
primo
Witam,

chciałbym zgłębić temat stosowanych przez Was rozwiązań dotyczących sterowania na stronie. U siebie stosuję model:

  1. <?php
  2. switch ($_GET['op'])
  3. {
  4. case 2:
  5.  include('ksiega/ksiega_form.php');
  6. break;
  7. case 3:
  8.  include('hasla/opis.php');
  9. break;
  10.  
  11. case 1:
  12. default:
  13. include('news.php');
  14. }
  15. ?>


Jestem ciekawy, jaką metodę Wy stosujecie i jaka jest wyższość stosowania takiej a nie innej.
skowron-line
  1. <?php
  2. if(isset($_GET['page'])) {
  3. $name = "$_GET[page].php";
  4. if(file_exists($name)){
  5. include($name);
  6. }else{
  7. echo'strona o podanym adresie nie istnieje';
  8. }
  9. }else{
  10. include("news.php");
  11. }
  12. ?>
primo
Jeśli dobrze rozumiem, to Ty w swoim rozwiązaniu odnosisz się bezpośrednio do nazw plików questionmark.gif Czyli jeśli chciałbym zastosować takie rozwiązanie to zamiast odwołania w menu typu:
  1. <a href="index.php?op=10">cytaty</a>
musiałbym odwołać się do
  1. <a href="index.php?page=cytaty">cytaty</a>


Dobrze to kapuję questionmark.gif
skowron-line
tak ale to tylko nazwa zmiennej wiec moze ona byc dowolna
primo
Cytat(skowron-line @ 25.02.2007, 16:37:56 ) *
tak ale to tylko nazwa zmiennej wiec moze ona byc dowolna


A co jeśli pliki, które mają być includowane porozrzucane są po różnych folderach questionmark.gif
skowron-line
ja robie to tak

ja wrzucam do folderow z nazwami takimi samymi jak zmienna
wiec jezeli ma tak

Kod
index.php?page=katalog


to wtedy mam plik katalog.php w folderze katalog

no ale jezeli ma sie za przeproszeniem pierdolnik to troche sprawa sie komplikuje
SongoQ
@skowron-line A jesli podam nazwe pliku w ktorym sa hasla, lub wazne dane ktore nie moga byc zaczytywane?
skowron-line
Cytat(SongoQ @ 25.02.2007, 18:04:33 ) *
@skowron-line A jesli podam nazwe pliku w ktorym sa hasla, lub wazne dane ktore nie moga byc zaczytywane?


tzn?? bo nie rozumiem?

jezeli podasz nazwe pliku z haslami w linku??
Thaal
no sytuacja czysto teoretyczna - ktoś ma konto na tym samym serwerze co ty, pisze sobie jakiś skrypt (wyświetlające wszystkie dane wykorzystywane w aktualnie wykonywanej aplikacji, kasujący coś albo bóg sam wie co jeszcze), wrzuca go na swoje konto, bawi się ze ścieżkami dostępu do pliku podawanymi w TWOICH zmiennych i wtedy ma dostęp do tego co chciałeś ukryć (np. hasła do bazy danych) albo kasuje wszystko...
Mary$
Zabezpieczenie przed wczytaniem pliku z obcego serwera:
  1. <?php
  2. $fname='strony/'.$_GET['page'].'.php';
  3. if (file_exists($name)){
  4. include($name);
  5. }
  6. else
  7. {
  8. Echo 'Strona nie istnieje';
  9. }
  10. ?>

albo można zastosowac case, tak jak wyżej

natomiast jeżeli plik z hasłami jest *.php i wszystko jest jako zmienne w tym pliku wtedy nawet jeżeli się go dołączy za pomocą include(), to nic sie nie wyswietli, a zawartosc mozna zczytywac za pomocą substr()
Thaal
a co z czymś takim:

Kod
index.php?page=../../inne_konto/delete_all


questionmark.gif
primo
Cytat(Thaal @ 26.02.2007, 12:59:42 ) *
a co z czymś takim:

Kod
index.php?page=../../inne_konto/delete_all


questionmark.gif


Thaal wskazałeś sporo dziur takiego rozwiązania. W takim razie czy to moje jest bezpieczniejsze questionmark.gif Czy również można go rozażyć z punktu widzenia włamań i dziurawości questionmark.gif
Jakie w takim bądź razie będzie idealne rozwiązanie questionmark.gif
Turgon
To nie jest wcale bezpieczny sposób. Można wtedy włamać się na cały serwer. Dlatego serwis musi wiedzieć kiedy wolno mu ładować akcję a kiedy nie. Switch i If Else są w takich małych projektach najlepsze.
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.