PHP’de İleri Konular

Bu ünitede fonksiyonlar, formlar ve PHP'deki global değişkenler olan $_GET, $_POST, $_REQUEST, $_SERVER, $_COOKIE ve $_SESSION konuları anlatılmıştır.

Dış Dosyaların Dahil Edilmesi

Farklı sayfalarda tekrar kullanılması gereken bir çok komut ayrı bir PHP sayfası halinde kaydedilip, istenilen PHP sayfasına include veya require komutları ile dahil edilebilir. Require komutu dosyayı bulamazsa hata vererek çalışmanın durmasına neden olur.

Fonksiyonlar

Belirli komutların bir isim altında toplanmasıyla oluşan yapılara fonksiyon denir. Fonksiyonlar parametreli ya da parametresiz olabilir. Ayrıca geriye değer döndürebilir ya da döndürmeyebilir. Fonksiyon tanımında istenilen parametreler varsayılan değer atanabilir. Fonksiyon isimlendirme kuralları değişken isimlenrdirme kuralları ile aynıdır.

Fonksiyon tanımlama satırında değişkenlerin önüne & sembolü eklenirse, değer yerien adres gönderilmiş olur, bu sayede parametreler değişince çağrıdaki değişken de değişmiş olur.

Fonksiyonlara diziler parametre olarak gönderilebilir.

HTML Formları ile Çalışma

Formlar kullanıcıların veri girdikleri arayüz elemanlarıdır. Bir forma girilen bilgiler paket olarak sunucuya gönderildiğinde, formun metot özelliğine göre sunucudaki $_GET ya da $_POST global değişkeni içerisinde saklanır. Ayrıca metottan bağımsız olarak aynı bilgileri $_REQUEST global değişkeni içinde de saklanır. HTML'deki formun içindeki etilektlerin name ve value değerleri, sunucudaki global değişkende anahtar ve değer olarak bir dizi oluşturur. Sonrasında, örneğin formun metoto özelliği get ise, sunucuda echo $_GET["kullaniciAdi"]; şeklinde kullanılabilir, değeri değiştirilebilir.

Form Verilerinin Kontrolü

HTML sayfasından gelen bilgilerdeki eksiklik ya da biçim farkı, sonraki işlemlerde hatalara neden olabilir. Ayrıca art niyetli kişiler veri olarak JavaScript veya SQL betikleri girmiş olabilir. Bu nedenler gelen verilerin 3 açıdan kontrolü önerilir:

1) Zorunlu verilerin girilip girilmediği;

2) Girilen verilerin biçiminin uygun olup olmadığı,

3) Girilen verilerde riskli içerik ya da karakter olup olmadığı.

Isset() ve empty() fonksiyonları, parametre olarak aldıkları değişkenin var olup olmadığını ve değerinin, türüne uygun biçimde, boş olup olmadığını kontrol eder.

Biçim kontrolü için filter_var(), is_numeric(), is_string vb. komutlar, girdinin eposta, URL, tam sayı ve diğer bazı veri türü biçimlerine uygun olup olmadığını kontrol eder.

Düzenli ifadeler yoluyla preg_match() fonksiyonu çok farklı karakter dizilimlerini kontrol edebilir.

Girdideki riskli karakterleri trim(), stripslashes() ve htmlspecialchars() fonksiyonları yok edebilir ve ya dönüştürebilir.

$_SERVER Değişkenleri ve Yönlendirme

PHP komutları içerisinde, web sunucusu ya da o sayfa hakkında detaylı bilgi almak gerektiğinde $_SERVER global değişkeninin içindeki bir çok bilgi kullanılabilir. Örneğin web sayfasının adresi, sayfanın adı, sayfanın disk üzerindeki fiziksel adresi gibi.

Bir sayfaya gelen istek, farklı nedenler ile bir başka sayfaya yönlendirilmek istenirse header() komutu ile bu işlem yapılabilir

PHP'nin durdurulması gerektiğinde exit() veya die() komutlarındna biri ile çalışma durdurulur. Bu komutlardan sonra sayfanan devamındaki kodlar gönderilmez.

$_SESSION Değişkeni ve Oturum Yönetimi

Web sunucusunu ziyaret eden her kullanıcı için, sunucu üzerinde bir oturum başlatılır. Bu oturum içine, istenirse PHP aracılığı ile bilgi eklenebilir. Bu bilgiler oturum sonlanmadığı sürece farklı sayfalardan erişilebilir. Oturum ancak tarayıcı kapatıldığında ya da PHP içerisinde oturum kapatma komutu (session_destroy) verildiğinde sonlanır.

Oturum bilgileri $_SESSION global değişkeni içerisine anahtar - değer biçiminde bir dizi olarak eklenebilir, değiştirilebilir ya da silinebilir.

Oturum süresi, sunucu üzerindeki farklı sayfalara gidildiğinde sıfırlanır. Bu süre sınıra ulaşırsa (bu süre sınırı php.ini dosyasında belirlenir) oturum sonlandırılır.

$_COOKIE ve Çerez Yönetimi

Çerezler, kullanıcının tarayıcısı üzerinde web siteleri tarafından saklanan verilerdir. Kullanıcılar isterse bu verilerin saklanmasına engel olabilir.

PHP ile çerezlere $_COOKIE global değişkeni üzerinden erişim sağlanabilir. Yeni çerez eklenebilir, değiştirilebilir veya silinebilir.

Çerezler, tanımlandıkları anda belirlenen süre sonunda otomatik silinirler.