Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Path info vs inne rozwiązania do routingu
Inscure
post
Post #1





Grupa: Zarejestrowani
Postów: 61
Pomógł: 4
Dołączył: 18.09.2010

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


Witam,

Do tej pory stosowałem $_SERVER['PATH_INFO'], ale jak się okazuje, nie na każdym serwerze jest ono dostępne.
Przykładowo, na jednym z serwów, z których korzystam, zamiast PATH_INFO jest ORIG_PATH_INFO, zaś na nginx nie ma obu tych indeksów.

Ciekaw jestem czego wy używacie w swoich projektach.
Myślałem na URL_REQUEST. Są jakieś przeciwwskazania?

Wymagania co do działania:
- PHP 5.2.17 lub nowsze
- serwer Apache, IIS oraz nginx
- przyzwoity wygląd linków bez korzystania z htc

Proszę o propozycję (IMG:style_emoticons/default/smile.gif)

Ten post edytował Inscure 21.06.2012, 20:13:31
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
by_ikar
post
Post #2





Grupa: Zarejestrowani
Postów: 1 798
Pomógł: 307
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

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


A to w takim wypadku wystarczy dodać do dirname index.php i wtedy skrypt wyglądać może tak:

  1. $pathInfo = str_replace(array(dirname($_SERVER['SCRIPT_NAME']), '/index.php'), '', $_SERVER['REQUEST_URI']);


Jedynie musisz uwzględnić w routerze że w momencie kiedy $pathInfo jest puste, znaczy że jesteś na głównej stronie. Nie musisz tego w routerze robić, możesz w tym skrypcie, w taki sposób:

  1. $pathInfo = str_replace(array(dirname($_SERVER['SCRIPT_NAME']), '/index.php'), '', $_SERVER['REQUEST_URI']);
  2. $pathInfo = empty($pathInfo) ? '/' : $pathInfo;


I wtedy czy będziesz miał przekierowanie ruchu na jeden plik, czy go mieć nie będziesz, powyższy skrypt będzie każdorazowo wyświetlać to samo co path_info. Cały problem możesz mieć później. Problemem tym będą linki do przeróżnych podstron. O ile na apache wykryjesz jeszcze w jakiś sposób czy jest włączony mod_rewrite. O tyle nie wykryjesz w nginx i nie wiem czy w iis tak samo, nie wiem czy wykryjesz że cały ruch jest przekierowany na jeden plik. Dlatego też musisz raczej podjąć decyzję czy chcesz żeby działało to wszędzie, więc wówczas wszystkie twoje linki najlepiej jak będą wyglądać tak:

Kod
localhost/index.php/jakas-podstrona


Możesz to jeszcze zrobić inaczej. Podczas instalacji systemu, sprawdzić czy jakaś przykładowa strona zadziała, poprzez ajax i przesłanie wyniku do instalatora, który ustawi że tak, a nie inaczej mają być ustawione linki. Oczywiście z zmianą gdzieś w panelu administratora (IMG:style_emoticons/default/wink.gif)

BTW po co ci jakaś zmienna _index_file? Nie lepiej sobie odpuścić, i niech to zawsze będzie index.php ?

Ten post edytował by_ikar 25.06.2012, 11:50:18
Go to the top of the page
+Quote Post

Posty w temacie


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: 26.12.2025 - 02:40