eStats project
Free web statistics
Passing variables in addresses
Z tego artykułu dowiesz się jakie możliwości posiada system przekazywania zmiennych w adresach zastosowany w skrypcie.
Spis treści
^ 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
Albert EinsteinI do not know with what weapons World War III will be fought, but World War IV will be fought with sticks and stones.