PHP ile Doğrulama (Authentication)

(Yazan: Mustafa Hadi Dilek)

HTTP-1.1 protokolü iki tür doğrulamayı desteklemektedir:

Normalde Web sunucularının doğrulama istediği alanlarda '.htaccess' türü dosyalar kullanılmakta, şifreler ise karşılaştırma için metin dosyalarından veya veri tabanından alınmakta idi. PHP, bize aynı işlevleri çok daha esnek bir şekilde gerçekleştirme imkanı sağlıyor.

PHP ile HTTP doğrulaması yapabilmek için PHP'nin modül olarak Apache'ye kurulu olması gerekmektedir. Statik veya DSO modülü olması farketmez. PHP, CGI olarak kurulu ise Apache, PHP'ye doğrulama bilgilerini ($PHP_AUTH_USER, $PHP_AUTH_PW) geçirmeyeceği için kullanmanın bir anlamı olmayacaktır.

Bu aşamadan sonra browerden gelen kullanıcı adı ve şifresi bilgisi Web sunucusu tarafından PHP scriptine global değişkenler ($PHP_AUTH_USER ve $PHP_AUTH_PW) olarak aktarılır. İşte bu noktada PHP scripti bunları istediği gibi değerlendirip gerekli işlemleri yapabilir veya doğrulama sağlanmamışsa tekrar yukarıdaki header bilgisini göndererek kullanıcı adı ve şifresini tekrar isteyebilir.

Doğrulama sağlayınca artık PHP scriptimiz 401 headeri göndermez. $PHP_AUTH_USER ve $PHP_AUTH_PW globalleri sunucu tarafından set edilmiş olarak hafızada kalır ve aynı tarayıcı kapatılmadığı müddetce gelen diğer requestler için doğrulama penceresi açtırılmaz.

Tarayıcıyı kapatmadan logout olmayı sağlamak için 401 mesajını tekrar göndermek yeterlidir. Kullanıcının logout olması için açılan authentication penceresinden kullanıcı adı ve şifreyi boş geçerek bir kere daha requesti yapması gereklidir.

Doğrulama için gerekli kullanıcı adı ve şifre bilgisi text türü bir dosyadan alınabilir.