Passing variables in addresses

Z tego artykułu dowiesz się jakie możliwości posiada system przekazywania zmiennych w adresach zastosowany w skrypcie.

^ Wprowadzenie

eStats ma wbudowane wsparcie dla trzech typów przekazywania danych w adresie, z użyciem metody GET (domyślnie, dla kompatybilności z różnymi serwerami), PATH INFO oraz mod_rewrite. Aby wybrać metodę należy ustawić odpowiednio wartość opcji Tryb przekazywania danych w adresie w Konfiguracji.

Dodatkowo można samodzielnie zdefiniować dostępne parametry, dostępne w ustawieniach Zaawansowanych w grupie GUI/Path.

^ Metoda GET

Jest to najprostsza i zawsze dostępna metoda, z tego powodu ustawiona jako domyślna. W jej wypadku adresy (domyślnie) będą mieć formę: index.php?vars=[zmienne]. Zmienne normalnie przekazywane metodą GET będą dołączane po znaku &.

^ PATH INFO

Kolejna metoda, dość szeroko dostępna, używa zmiennej $_SERVER['PATH_INFO'] (błędnie lub wcale nie definiowanej na niektórych serwerach, czasem po inną nazwą klucza w tablicy $_SERVER). W tym przypadku adresy przybierają formę: index.php/[zmienne], z zmienne typowo przekazywane metodą GET są wtedy dołączane po znaku ?.

^ Użycie mod_rewrite

Trzecia metoda, dająca największe możliwości, ale także najrzadziej dostępna oraz najtrudniejsza w obsłudze, to wykorzystanie mod_rewrite.

Do skryptu dołączony jest przykładowy plik .htaccess (w głównym folderze, pod nazwą htaccess.txt) zawierający przykładową definicję (druga linia):

1
2
3
RewriteEngine On
RewriteRule ^(.*)/((&.*))*$ index.php?vars=$1$2
RewriteRule ^.*.(sqlite|sql|bak|dat|log|ini|estats)$ /

Reguła ta przepisuje wszystkie adresy zakończone znakiem / na adres index.php?vars=[zmienne] (czyli pośrednio używa metody GET). Przykładowy adres: http://twoja.strona.pl/katalog/estats/jakieś/zmienne/ będzie widoczna dla serwera jako http://twoja.strona.pl/katalog/estats/index.php?vars=jakieś/zmienne.

Dodatkowa reguła (trzecia linia) odcina dostęp z zewnątrz do plików o wybranych rozszerzeniach.

Ostatnia modyfikacja: 2008-07-28 21:25:43 CET

I do not know with what weapons World War III will be fought, but World War IV will be fought with sticks and stones.

Albert Einstein