Webboard

Pełna wersja: Router php
Aktualnie przeglądasz uproszczoną wersję forum. Kliknij tutaj, by zobaczyć wersję z pełnym formatowaniem.
Siemka,
Czy ktokolwiek z was robił kiedyś router adresów w phpie lub ktoś wie jak to się robi?
Jeżeli tak to proszę wyjaśnijcie mi jak to działa.

Dzięki!
Przekierowanie wszystkich adresów (htaccess) do głównego pliku w którym będziesz miał opisany routing.
Sprawdzanie wybranego adresu pod kątem pasującego wzorca i wybranie określonej akcji.
Co do samego skryptu to jest wiele gotowych pakietów, np. https://github.com/silexphp/Silex http://symfony.com/doc/current/component...ction.html
Gdybym zrobił tak:
  • pobieram wzorzec np "position/lang"
  • pobieram parametry z url i po przetworzeniu mam "home/pl"
  • tworzę tablicę asocjacyjną
    • $parametr['position']='home';
    • $parametr['lang']='pl';
  • później kontroler przekierowań na podstawie $parametr['position'] dobrałby odpowiednie informacje do wyświetlenia
Czy to już można nazwać routerem?
Jeżeli spełnia założone zadanie to pewnie tak.
To teraz pytanie jak go rozwinąć
//Obsługa większej ilości kontrolerów?
Są jakieś zagrożenia bezpieczeństwa? Czy powinienem zabezpieczyć wartości z urla?
Jeżeli potrzebujesz czegoś do projektu co będzie na pewno działało, to proponowałbym użyć gotowego komponentu. Będzie bezpieczniej i pewniej.

Jeżeli chcesz to zrobić w celach nauki to nie ma problemu.

Tworzysz tablicę z Twoim routingiem - zbiór opisanych akcji. Można to opakować jako funkcje, tablice, plik konfiguracyjny itp.
Podajesz w nim metodę, określony adres (wzorzec), wykonywaną akcję. Tutaj także można to różnie zrobić (wykonywanie akcji w tym samym pliku, odniesienie do funkcji, całej klasy itp.)
Pobierasz adres i metodę
Kod PHP:
$_SERVER['REQUEST_URI'
$_SERVER['REQUEST_METHOD'
Porównujesz pobrany adres ze swoją tablicą routingu i wykonujesz akcję.

Co do bezpieczeństwa to nie includować plików prosto z adresu
Hmm.. a po co mi metoda?
Czy to ma związek z formularzami?
(25.03.2016, 15:20)NiespecjalnieUzdolniony napisał(a): [ -> ]Czy to ma związek z formularzami?
Tak. W sumie to mógłbyś to rozpoznawać nawet gdzieś dalej w aplikacji, jaką metodą zostało wysłane żądanie. Jednak jak już piszesz routing to można to tutaj umieścić.