Şimdi daha işe yarar bir şey yapalım. Ziyaretçilerinizin hangi tarayıcıyı kullandığını tespit edelim. Bunun için, ziyaretçinizin tarayıcısı tarafından HTTP isteği ile birlikte gönderilen kullanıcı aracısı dizgesine bakacağız. Bu bilgi bir değişkende saklanır. Değişkenler PHP'de her zaman dolar işareti ile başlar. Bizim şu an için ilgilendiğimiz değişken $_SERVER['HTTP_USER_AGENT']'tir.
Bilginize:
$_SERVER PHP kullanımına ayrılmış özel bir değişken olup HTTP sunucusunun tüm bilgilerini içerir. Bu tür değişkenlere süper küreseller denir. Bu konuda daha ayrıntılı bilgiyi Süper küreseller bölümünde bulabilirsiniz. Bu özel değişkenler PHP » 4.1.0 sürümünden itibaren kullanılmaya başlanmıştır. Daha öncesinde, $HTTP_SERVER_VARS gibi eski $HTTP_*_VARS dizileri kullanılmaktaydı. Ömrünü doldurmuş olsa da, bu eski tarz değişkenler hala kullanılabilmektedir. (Eski kod bölümüne de bakınız.)
Bu değişkenin değerini görüntülemek için yapmanız gereken:
Örnek 1 - Bir değişkeni (dizi öğesini) yazdırmak
<?php echo $_SERVER['HTTP_USER_AGENT']; ?>
Bu betiğin çıktısı şöyle bir dizge olabilirdi:
PHP'de birçok farklı değişken türü mevcuttur. Yukardaki örnekte bir diziye ait bir öğeyi yazdırdık. Diziler çok kullanışlı olabilirler.
$_SERVER PHP tarafından kullanımınıza özdevinimli olarak sunulan bir değişkendir. Kullanım kılavuzunun Öntanımlı Değişkenler bölümünden tümünün listesine ulaşabilirsiniz ya da önceki örnekte kullandığımız phpinfo() işlevi ile üretilen çıktıya bakarak bütün listeye ulaşabilirsiniz.
PHP etiketinin içine birden çok PHP komutu koyabilir ve tek bir echo komutundan daha fazlasını yapan küçük kod blokları oluşturabilirsiniz. Örneğin, ziyaretçinizin Internet Explorer kullanıp kullanmadığını şöyle öğrenebilirsiniz:
Örnek 2 - Denetim yapılarının ve işlevlerin kullanım örneği
<?php
if (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== FALSE) {
echo 'Internet Explorer kullanmaktasınız.<br />';
}
?>
Bu betiğin çıktısı şöyle olabilirdi:
Internet Explorer kullanmaktasınız.<br />
Burada birkaç yeni kavramı devreye soktuk. Bir if deyimimiz var. Eğer C dilinde kullanılan temel sözdizimine aşinalığınız varsa, bu kullanım size tanıdık gelecektir. Aksi takdirde, giriş düzeyinde bir PHP kitabı almanız ve ilk birkaç bölümünü okumanız ya da kılavuzun Dil Başvuru Kılavuzu bölümünü okumanız faydalı olacaktır.
Devreye soktuğumuz ikinci kavram, strpos() işlevi ile
yaptığımız çağrı oldu. strpos(), bir dizgeyi başka bir
dizgenin içinde arayan yerleşik bir PHP işlevidir. Burada
'MSIE' dizgesini (iğne)
$_SERVER['HTTP_USER_AGENT'] içinde (samanlık)
arıyoruz. Eğer iğne samanlıkta bulunursa işlev iğnenin konumunu
samanlığın başlangıcına göreli olarak döndürür. Aksi takdirde FALSE
döner. if ifadesinin sonucu
TRUE
olduğu takdirde FALSE
dönmez ve kaşlı ayraçlar arasındaki kod
çalıştırılır. Aksi takdirde kod çalıştırılmaz. If, else gibi denetim yapıları ile
strtoupper() ve strlen() gibi
işlevleri kullanarak siz de benzer örnekler yazabilirsiniz. İlgili her
kılavuz sayfası aynı zamanda örnekler de içermektedir. Bu işlevleri nasıl
kullanmanız gerektiğinden emin değilseniz, kılavuzdaki bir işlev tanımı nasıl okunur ve PHP işlevleri bölümlerini
okuyabilirsiniz.
Bunu bir adım öteye taşıyabilir ve bir PHP bloğunun tam ortasındayken bile PHP kipine nasıl girip çıkabileceğimize bakabiliriz:
Örnek 3 - HTML ve PHP kiplerini karıştırmak
<?php
if (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== FALSE) {
?>
<h3>strpos() false olmayan bir değer döndürmelidir</h3>
<p>Internet Explorer kullanmaktasınız</p>
<?php
} else {
?>
<h3>strpos() false döndürmelidir</h3>
<p>Internet Explorer kullanmıyorsunuz</p>
<?php
}
?>
Bu betikten elde edilebilecek sonuçlardan biri:
<h3>strpos() false olmayan bir değer döndürmelidir</h3> <p>Internet Explorer kullanmaktasınız</p>
Bir çıktı üretmek için PHP echo komutunu kullanmak yerine, PHP kipinden çıktık ve sadece düz HTML gönderdik. Burada dikkat edilmesi gereken önemli nokta, betiğin mantıksal akışının değişmiyor olmasıdır. strpos() işlevinden edinilen sonuca göre HTML bloklarından yalnızca biri görüntüleyiciye gönderilmektedir. Başka bir deyişle, bu işleyiş MSIE değişkeninin bulunup bulunmamasına bağlıdır.