
Darmowy System Statystyk WWW GoodStat zyskuje na popularności dzięki swojej prostocie, szybkości działania i – co najważniejsze – pełnej suwerenności danych. Instalacja systemu sprowadza się do wygenerowania w panelu administracyjnym unikalnego kodu i wklejenia go na stronę, którą chcemy monitorować.
Dla wielu użytkowników ten kod to "czarna skrzynka". Ale jako programiści i świadomi webmasterzy, lubimy wiedzieć, co dokładnie dzieje się pod maską naszej strony. Dzisiaj uchylimy rąbka tajemnicy i przeanalizujemy technicznie, w jaki sposób System GoodStat generuje kod instalacyjny oraz co ten kod robi po stronie klienta (w przeglądarce).
Część 1: Magia po stronie serwera (PHP)
Kod, który widzicie w panelu GoodStat, nie jest stałym tekstem. Jest on dynamicznie generowany przez język PHP w momencie, gdy wchodzicie na podstronę "Kod Java-Script". Dzięki temu jest on idealnie dopasowany do Waszej konkretnej instalacji. Przyjrzyjmy się kluczowym operacjom w dostarczonym fragmencie kodu PHP:
1. Wykrywanie protokołu (HTTP vs HTTPS)
Niezwykle ważnym elementem jest funkcja site_protocol():
function site_protocol() {
if(isset($_SERVER['HTTPS']) && ($_SERVER['HTTPS'] == 'on' || $_SERVER['HTTPS'] == 1) || isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https')
{ return $protocol = 'https://'; }else{ return $protocol = 'http://'; }
}
Ta funkcja automatycznie sprawdza, czy Wasz panel administracyjny działa na bezpiecznym połączeniu SSL (HTTPS). Dlaczego to kluczowe? Ponieważ jeśli Wasza monitorowana strona działa na HTTPS, a skrypt statystyk próbowałby załadować się przez zwykłe HTTP, przeglądarka zablokowałaby go jako tzw. "Mixed Content" (treść mieszaną), a statystyki by nie działały. GoodStat dba o to, by protokoły się zgadzały.
2. Dynamiczne budowanie ścieżki
Kluczowa zmienna $do_kodu_java powstaje w ten sposób:
$do_kodu_java = $_SERVER['SERVER_NAME'].''.str_replace("kod_javascript.php","zapis",$_SERVER['SCRIPT_NAME']);
$do_kodu_java = $protocol.''.$do_kodu_java;
PHP bierze nazwę Waszej domeny (np. statystyki.twojastrona.pl), automatycznie podmienia nazwę pliku panelu na katalog zapis i dodaje wykryty wcześniej protokół. W efekcie, w kodzie do wklejenia pojawia się precyzyjny adres URL, pod którym Wasz serwer GoodStat oczekuje na dane.
Część 2: Co dzieje się w przeglądarce? (JavaScript)
Po stronie serwera PHP wygenerował textarea z gotowym kodem HTML/JavaScript. To jest właśnie ten fragment, który wklejacie na swoją stronę. Wygląda on mniej więcej tak:
<!-- start System GoodStat -->
<script language='javascript'>
<!--
var ipath='https://statystyki.twojastrona.pl/zapis'
document.write('<SCR' + 'IPT LANGUAGE="JavaScript" SRC="'+ ipath +'/stat.js\"><\/SCR' + 'IPT>');
//-->
</script>
<!-- stop System GoodStat -->
Przeanalizujmy jego działanie krok po kroku:
- Zmienna
ipath: Skrypt definiuje lokalną zmiennąipath, która przechowuje adres URL do katalogu z głównym skryptem zapisującym dane na Waszym serwerze GoodStat. To właśnie ta wartość została wygenerowana dynamicznie przez PHP. document.writei wstrzykiwanie skryptu: To serce operacji. Skrypt używa metodydocument.write(), aby w locie wstawić do kodu HTML Waszej strony nowy tag<script>.
Celowe rozbicie słowa'<SCR' + 'IPT...'zapobiega błędnemu zinterpretowaniu tego fragmentu przez starsze przeglądarki jako zamknięcia głównego skryptu.- Ładowanie
stat.js: Wstrzyknięty tag wskazuje na plikstat.jsznajdujący się pod adresemipath. To właśnie ten plikstat.jsjest "mózgiem" operacji po stronie klienta. - Zapis danych: To
stat.jszbiera informacje o rozdzielczości ekranu, czasie spędzonym na stronie, czy odsyłaczu, a następnie wysyła te dane z powrotem do Waszego serwera GoodStat.
Podsumowanie
Jak widzicie, kod instalacyjny Systemu GoodStat to przemyślana konstrukcja. PHP dba o to, by automatycznie dostosować skrypt do Waszej domeny i protokołu bezpieczeństwa, a lekki JavaScript wstrzykuje główny silnik statystyk na monitorowaną stronę. Dzięki tej analizie macie pewność, że wklejając kod GoodStat, korzystacie z bezpiecznego, autorskiego i w pełni transparentnego rozwiązania.
Gdzie najlepiej wkleić ten kod? Zalecamy umieszczenie go tuż za tagiem otwierającym <head> w kodzie HTML Waszej strony, aby ładowanie statystyk nie opóźniało wyświetlania głównej treści strony użytkownikowi.
