Rozdział 15. ♦ Generowanie statystyk 401
Napiszmy zatem funkcję, która pozwoli zidentyfikować poszczególne typy przeglądarek. Została ona przedstawiona na listingu 15.1.
Listing 15.1. Funkcja identyfikująca poszczególne typy przeglądarek
function getBrowserTypeO
Sbrowser_info - strtolower($_SERVER[1HTTP_USER_AGENT1]):
if(strpos($browser_info. “opera") !== false){ return BROWSERJDPERA;
else if(strpos($browser_info, "rasie'') ! return BROWSER MSIE:
}
false){ false){
else if(strpos($browser_info. "konqueror") return BROWSER KONQUEROR:
}
else if(strpos($browser_info, "firefox") !== false){ return BROWSER FIREFOX:
else 1f(strpos($browser info, “mozilla") !== false){ return BROWSER MOZILLA;
}
else{
return BROWSERJJNKNOWN:
A zatem ciąg zawarty pod indeksem HTTP_USER_AGENT w tabeli $_SERVER jest konwertowany, tak aby zawierał jedynie małe litery (funkcja strtol ower), a następnie przypisywany zmiennej browser_info. Następnie złożona instrukcja warunkowa if.. .else .. .if bada, czy zmienna ta zawiera jeden z ciągów: opera, netscape, msie, konąueror, firefox, mozilla. Wykorzystywana jest w tym celu funkcja strpos, która zwraca indeks wystąpienia poszukiwanego ciągu, lub wartość false, jeśli dany ciąg nie zostanie znaleziony. Jeżeli zatem jeden z wymienionych ciągów zostanie znaleziony, jest zwracana jedna ze stałych określająca rozpoznaną przeglądarkę. Jeśli natomiast żaden z ciągów nie zostanie znaleziony, jest zwracana stała BROWSERJJNKNOWN.
W podobny sposób będzie działała funkcja określająca rodzaj wykorzystywanego przez użytkownika systemu operacyjnego. Została ona przedstawiona na listingu 15.2. Identyfikacja odbywa się na podstawie analizy ciągu zapisanego w tablicy $_SERVER pod indeksem HTTP_USER_AGENT. Ciąg ten jest odczytywany, a znajdujące się w nim znaki są zamieniane na małe litery. Następnie jest on zapisywany w zmiennej system_info. Złożona instrukcja warunkowa i f... el se... i f wraz funkcją strpos pozwalają na określenie systemu operacyjnego. Stała określająca typ systemu jest zwracana za pomocą instrukcji return.