Zabierzmy się teraz za coś, co może się nam do czegoś przydać. Chcemy sprawdzić
w jakiej przeglądarce internetowej użytkownik ogląda naszą stronę.
W tym celu odczytamy nagłówek User-Agent, który został
przesłany w żądaniu HTTP przez przeglądarkę użytkownika. Informacja ta
znajduje się w zmiennej.
Nazwy zmiennych są w PHP poprzedzone znakiem dolara "$". Zmienna, która nas interesuje,
to $_SERVER["HTTP_USER_AGENT"].
Zmienne superglobalne:
$_SERVER jest
specjalną zmienną PHP, która zawiera informacje związane z serwerem
i środowiskiem uruchomieniowym danego skryptu. Zmienna ta jest nazywana
superglobalną (bądź autoglobalną). Co to oznacza, dowiesz się na stronie
poświęconej zmiennym predefiniowanym.
Zmienne superglobalne wprowadzono w PHP w wersji
4.1.0.
Przedtem wykorzystywane były tablice $HTTP_*_VARS,
takie jak $HTTP_SERVER_VARS. Chociaż używanie ich nie jest
zalecane, są one w dalszym ciągu dostępne w PHP (przeczytaj także notatkę dotyczącą
używania starej składni).
Możemy w łatwy sposób wyświetlić wartość tej zmiennej:
Przykład 2-2. Wyświetlanie wartości zmiennej (elementu tablicy) |
<?php echo $_SERVER["HTTP_USER_AGENT"]; ?>
|
Przykładowym wynikiem działania tego skryptu może być:
Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0) |
|
W PHP istnieje wiele typów zmiennych.
W powyższym przykładzie wyświetliliśmy wartość elementu
tablicy.
Tablice mogą mieć wiele zastosowań.
$_SERVER jest tylko jedną ze zmiennych, które
zawsze są dostępne dla skryptów PHP. Lista wszystkich takich zmiennych znajduje się
w sekcji Predefiniowane zmienne, możesz także
wygenerować ją przy pomocy prostego skryptu:
Przykład 2-3. Pokaż wszystkie zmienne predefiniowane |
Po wywołaniu skryptu, ujrzysz w swojej przeglądarce stronę zawierającą wiele
informacji o PHP łącznie z kompletną listą zmiennych predefiniowanych.
Pomiędzy znacznikami skryptu PHP możesz umieścić wiele różnych instrukcji,
nie tylko echo(). Przykładowo, jeśli chcesz sprawdzić
czy przeglądarka użytkownika to Internet Explorer, możesz napisać taki skrypt:
Przykład 2-4. Przykład wykorzystania struktur
kontrolnych i funkcji |
<?php
if (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== false) {
echo 'Używasz Internet Explorera<br />';
}
?>
|
Jak nietrudno się domyślić, skrypt może wyświetlić:
Używasz Internet Explorera<br /> |
|
W powyższym przykładzie wprowadziliśmy kilka nowych rozwiązań.
Przede wszystkim mamy tutaj instrukcję if.
Dla osób znających podstawową składnię języka C powinna ona wyglądać znajomo.
Jeśli nie rozumiesz do czego ta instrukcja służy, nie obejdzie się
bez lektury rozdziału Opis języka.
W początkowej fazie nauki języka pomocne mogą być także książki opisujące PHP
od podstaw. Spis publikacji poświęconych PHP znajduje się pod adresem
/books.php.
Następnym nowym rozwiązaniem jest wywołanie funkcji strpos().
strpos() jest funkcją wbudowaną w PHP, służy do wyszukiwania
jednego łańcucha znaków w drugim. W naszym przykładzie próbowaliśmy odnaleźć
"MSIE" w zmiennej $_SERVER["HTTP_USER_AGENT"].
Jeżeli ciąg ten został odnaleziony, funkcja zwróciła jego pozycję w łańcuchu
$_SERVER["HTTP_USER_AGENT"]. Jeśli funkcja nie zwróciła wartości
FALSE, wykonywany był kod umieszczony wewnątrz nawiasów klamrowych
instrukcji if. W przeciwnym wypadku,
gdy strpos() zwróciła wartość FALSE, kod był pomijany.
Spróbuj napisać kilka podobnych przykładów z wykorzystaniem instrukcji
if,
else oraz funkcji takich jak
strtoupper() lub strlen().
Każda ze stron opisujących te metody zawiera także przykłady, które pomogą ci
zrozumieć ich działanie. Jeżeli nie jesteś pewny jak używać funkcji, zajrzyj na
stronę wyjaśniającą jak czytać opisy funkcji
i do rozdziału Funkcje.
Przejdźmy teraz krok dalej i zobaczmy w jaki sposób możemy przeplatać kod HTML
instrukcjami języka PHP:
Przykład 2-5. Mieszanie HTML z PHP |
<?php
if (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== false) {
?>
<h3>Funkcja strpos zwróciła wartość inną niż &false;</h3>
<center><b>Używasz Internet Explorera</b></center>
<?php
} else {
?>
<h3>Funkcja strpos zwróciła wartość false</h3>
<center><b>Nie używasz Internet Explorera</b></center>
<?php
}
?>
|
Wynikiem działania tego skryptu może być:
<h3>Funkcja strpos zwróciła wartość true</h3>
<center><b>Używasz Internet Explorera</b></center> |
|
Tym razem zamiast instrukcji echo() skorzystaliśmy z innej możliwości
- wymieszaliśmy ze sobą kod HTML i PHP. W tym miejscu warto zaznaczyć, że
skrypt mimo dużych zmian w zastosowanej składni, nadal działa tak samo.
W zależności od tego, co zwróci funkcja strpos(),
wyświetlony zostanie tylko jeden blok kodu HTML. Innymi słowy, wszystko
zależy od tego, czy ciąg MSIE zostanie odnaleziony
w łańcuchu $_SERVER["HTTP_USER_AGENT"].