Konuyu Açan
#0
Web uygulamaları geliştirirken, kullanıcı deneyimini kişiselleştirmek ve HTTP'nin durum bilgisiz (stateless) yapısını aşmak için en temel araçlardan biri kuşkusuz cookie'lerdir. Sunucu tarafında oturumları yönetmek, kullanıcı tercihlerini hatırlamak veya basit takip işlemleri yapmak istediğimizde, bu küçük metin dosyacıkları adeta elimiz ayağımız oluyor. Peki, PHP'de cookie'leri nasıl etkin bir şekilde oluşturur, okur, günceller ve sileriz? Gelin, bu konuyu enine boyuna inceleyelim.
Cookie'ler, aslında web sunucusunun kullanıcının web tarayıcısına gönderdiği ve tarayıcının da kullanıcının bilgisayarında sakladığı küçük veri parçacıklarıdır. Tarayıcı, aynı sunucuya bir sonraki istekte bulunduğunda, bu cookie'leri otomatik olarak sunucuya geri gönderir. Bu sayede sunucu, aynı kullanıcının daha önceki etkileşimlerini hatırlayabilir, yani bir nevi kullanıcının kimliğini ve geçmişini tanır. Düşünsenize, bir e-ticaret sitesinde sepete ürün ekliyorsunuz; sayfayı yenilediğinizde sepetiniz boşalsa ne kadar kötü olurdu değil mi? İşte bu tür durumların önüne geçmek için cookie'ler devreye girer.
PHP'de bir cookie oluşturmak için setcookie() fonksiyonunu kullanırız. Bu fonksiyon, HTTP başlıkları aracılığıyla tarayıcıya bir cookie gönderme talimatı verir. Unutmamak gerekir ki, HTTP başlıkları, herhangi bir çıktı gönderilmeden önce ayarlanmalıdır. Yani sayfanın en başında, HTML kodundan veya boşluklardan bile önce setcookie() çağrısı yapmanız gerekiyor. Aksi takdirde "Headers already sent" hatasıyla karşılaşmanız kaçınılmaz olur.
setcookie() fonksiyonunun kullanımı oldukça esnektir ve birçok parametre alır:
Şimdi bu parametrelerin her birine detaylıca bakalım:
Basit bir cookie oluşturma örneği şöyle olabilir:
[CODE]
Cookie'ler, aslında web sunucusunun kullanıcının web tarayıcısına gönderdiği ve tarayıcının da kullanıcının bilgisayarında sakladığı küçük veri parçacıklarıdır. Tarayıcı, aynı sunucuya bir sonraki istekte bulunduğunda, bu cookie'leri otomatik olarak sunucuya geri gönderir. Bu sayede sunucu, aynı kullanıcının daha önceki etkileşimlerini hatırlayabilir, yani bir nevi kullanıcının kimliğini ve geçmişini tanır. Düşünsenize, bir e-ticaret sitesinde sepete ürün ekliyorsunuz; sayfayı yenilediğinizde sepetiniz boşalsa ne kadar kötü olurdu değil mi? İşte bu tür durumların önüne geçmek için cookie'ler devreye girer.
PHP'de bir cookie oluşturmak için setcookie() fonksiyonunu kullanırız. Bu fonksiyon, HTTP başlıkları aracılığıyla tarayıcıya bir cookie gönderme talimatı verir. Unutmamak gerekir ki, HTTP başlıkları, herhangi bir çıktı gönderilmeden önce ayarlanmalıdır. Yani sayfanın en başında, HTML kodundan veya boşluklardan bile önce setcookie() çağrısı yapmanız gerekiyor. Aksi takdirde "Headers already sent" hatasıyla karşılaşmanız kaçınılmaz olur.
setcookie() fonksiyonunun kullanımı oldukça esnektir ve birçok parametre alır:
CODE
1setcookie(name, value, expire, path, domain, secure, httponly);Şimdi bu parametrelerin her birine detaylıca bakalım:
- name (isim): Cookie'nin adı. Bu zorunlu bir parametredir ve cookie'ye daha sonra erişmek için bu ismi kullanacağız. Örneğin, "kullanici_adi" gibi.
- value (değer): Cookie'nin içinde saklanacak veri. Bu da zorunlu bir parametredir. Genellikle string bir değer olur, ancak PHP otomatik olarak diğer veri tiplerini de string'e dönüştürür.
- expire (süre): Cookie'nin ne zaman sona ereceğini belirten bir Unix zaman damgası (timestamp). Eğer bu parametreyi belirtmezseniz veya 0 olarak ayarlarsanız, cookie tarayıcı kapatıldığında silinir (oturum cookie'si). Kalıcı bir cookie istiyorsanız, genellikle şeklinde bir değer veririz. Mesela,CODE
1
time() + saniye_cinsinden_surebir ay sonrasına ayarlar.CODE1
time() + (86400 * 30)
- path (yol): Cookie'nin sunucudaki hangi dizinler için geçerli olacağını belirtir. Eğer "/" olarak ayarlanırsa, cookie tüm site için geçerli olur. "/admin" olarak ayarlanırsa sadece admin dizini ve altındaki sayfalar için geçerlidir. Varsayılan olarak, cookie'nin ayarlandığı dizin geçerli olur.
- domain (alan): Cookie'nin hangi alan adı (domain) için geçerli olacağını belirtir. Örneğin, "example.com" veya ".example.com". Başına nokta koymak, alt alan adları (subdomain'ler) için de geçerli olmasını sağlar. Eğer belirtilmezse, cookie'nin ayarlandığı alan adı kullanılır.
- secure (güvenli): Bu boolean bir parametredir. Eğer true olarak ayarlanırsa, cookie sadece HTTPS (güvenli) bağlantılar üzerinden gönderilir. Hassas veriler içeren cookie'ler için kesinlikle true yapılmalıdır.
- httponly: Bu da boolean bir parametredir. Eğer true olarak ayarlanırsa, cookie sadece HTTP protokolü üzerinden gönderilir ve JavaScript gibi istemci tarafı betikleri tarafından erişilemez. Bu, Cross-Site Scripting (XSS) saldırılarına karşı önemli bir güvenlik katmanı sağlar.
Basit bir cookie oluşturma örneği şöyle olabilir:
[CODE]