Kategoriler
Geliştirici Günlükleri

PHPCookies 2.0 – Geliştirici Günlüğü #2

Geçtiğimiz haftalarda ilk sürümünü yayınladığım PHPCookies isimli kütüphane temelde ihtiyaçlara cevap verecek potansiyeli olmasına rağmen her şey için tek şeritli bir yol gibi ilerleyen yapıya sahipti. Bu tek katmanlı bir uygulama geliştirirken yeterli olsa da işin içine birden fazla katman/aplikasyon girdiğinde işler karmaşıklaşmaya başlıyordu.

Session Segment

Bu güncellemeyi gerekli kılan birinci başlık oturum verilerini bölümlere ayırarak birbirinden bağımsız olarak çalışabilmesini sağlamaktı.

Eskiden aynı sınıf içerisinde yer alan Cookie ve Session kütüphanesi ayrılarak farklı kütüphaneler haline geldi. Böylece sadece kullanacağınız kütüphaneyi kullanabilirsiniz.

Bir Factory Kütüphanesi Oluşturuldu.

Hem Cookie hem de Session sınıfından kolayca bir nesne oluşturmanızı sağlayacak bir sınıf eklendi.

Klasik Session Sisteminin Kullanılabilirliği

Eski sürümde oturum bilgilerinin çerezler aracılığı ile kullanıcının tarayıcısında tutulması zorunluydu. Yani PHP’nin bildiğimiz Session sistemini kütüphane ile kullanmak mümkün değildi. Bu hala kütüphanenin varsayılan davranışıdır ancak bu davranış değiştirilebilir.

Yenilenen Oturum (Session) Sınıfının Kullanımı

Yeni bir segment ile yeni bir oturum sınıfı oluşturmak için;

$session = \PHPCookies\Factory::staticSession([
	'segment' => 'Auth'
]);

Bu varsayılan olarak kullanıcının tarayıcısını (Cookies) kullanarak belirtilen segment adı altında şifrelenmiş olarak verileri tutmaya başlar.

Bu durumda verilerin şifrelenmesi için gizli bir anahtar belirlenmeniz gerekir.

$session = \PHPCookies\Factory::staticSession([
	'segment'	=> 'Auth',
	'key'		=> 'I_APP_SECRET_KEY',
]);

Anahtar belirleme işleminin veri ve uygulama güvenliği için önemli olduğunu bir kez daha belirtmek isterim.

Eğer sunucunuzun geçici dizinini yani klasik Session kullanarak verileri tutmak için;

session_start();
$session = \PHPCookies\Factory::staticSession([
	'segment'	=> 'Auth',
	'driver'	=> 'session',
]);

Driver olarak “session” belirtilirse veriler sunucuda tutulacağından şifrelenmeden tutulacaktır.

Session Sınıfının Yöntemleri

Session sınıfının kullanabileceğiniz set(), get(), has(), remove(), destroy() yöntemlerine sahiptir.

destroy() yöntemi kendi (sadece) segmentindeki tüm verileri siler.

Cookie sınıfının kullanabileceğiniz set(), get(), has(), remove(), destroy() yöntemlerine sahiptir.

Not : destroy() yöntemi tüm çerezleri kaldırmaya çalışacaktır. Bu uygulamanız ile tarayıcınız arasındaki tüm çerezleri yok edecektir. Oturum verilerini, Tokenları ya da farklı verileri depolamak için çerezleri kullanıyorsanız bunlarında yok edileceğini unutmayın.

CSRF Token Saklanacağı Yer Seçilebilir

CSRF Token için dilerseniz kullanıcının tarayıcısını (Cookie) kullanabilir ya da sunucu geçici dosyaları (Session) kullanılabilir.

session_start();

\PHPCookies\Token::driver('session')

Token bir Session olarak oluşturulup saklanacaksa Token::driver() metoduna “session” olarak bildirmelisiniz. Cookie kullanılacaksa bu metodu kullanmanıza gerek yoktur.

Oluşturulan token’ı öğrenmek için Token::get() metodunu kullanın.

<form method="POST">
	...
	<input type="hidden" name="_token" value="<?php echo \PHPCookies\Token::get(); ?>" />
	<input type="submit" value="Gönder" />
</form>

Token doğrulama işlemi için Token::verify() metodunu kullanın.


if(\PHPCookies\Token::verify($_POST['_token'])){
	// success token doğru
}else{
	// error token doğrulanamadı.
}

One reply on “PHPCookies 2.0 – Geliştirici Günlüğü #2”

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Google fotoğrafı

Google hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Connecting to %s