Örnekle PHP Oturumu ve PHP Çerezleri
⚡ Akıllı Özet
PHP'de çerezler ve oturumlar, durumsuz HTTP protokolü boyunca durumu korur, ancak verileri farklı şekillerde depolarlar. Bu kılavuz, çerezlerin istemcide küçük dosyaları nasıl kaydettiğini, oturumların sunucuda verileri nasıl sakladığını ve her birinin çalışan kodla nasıl oluşturulacağını, okunacağını ve yok edileceğini açıklamaktadır.
Çerez Nedir?
Çerez, web sunucusunun istemci bilgisayarında sakladığı, en fazla 4 KB boyutunda küçük bir dosyadır.
Bir çerez ayarlandıktan sonra, takip eden tüm sayfa istekleri çerez adını ve değerini döndürür.
Çerezler yalnızca oluşturuldukları alan adından okunabilir. Örneğin, www.guru99.com alan adı kullanılarak oluşturulan bir çerez, oluşturulduğu alan adından okunamaz. kariyer.guru99.com.
İnternet'teki web sitelerinin çoğu, reklamcılık gibi diğer alanlardan öğeler görüntüler. Bu unsurları sunan alan adları da kendi çerezlerini ayarlayabilir. Bunlar üçüncü taraf çerezleri olarak bilinir.
Bir kullanıcı tarafından oluşturulan çerez yalnızca kendisi tarafından görülebilir. Diğer kullanıcılar değerini göremez.
Çoğu web tarayıcısında çerezleri, üçüncü taraf çerezlerini veya her ikisini de devre dışı bırakma seçenekleri bulunur.
Eğer durum böyleyse, PHP çerez belirtecini ileterek yanıt verir. URL.
Aşağıda gösterilen şema çerezlerin nasıl çalıştığını göstermektedir.
Burada,
1) Kullanıcı, çerezleri saklayan bir sayfa talep eder.
2) Sunucu, çerezi kullanıcının bilgisayarına yerleştirir
3) Kullanıcıdan gelen diğer sayfa istekleri çerez adını ve değerini döndürecektir
Çerezleri neden ve ne zaman kullanmalı?
- HTTP durumsuz bir protokoldür; çerezler bize şunları sağlar: tracUygulamanın durumunu, kullanıcının bilgisayarında depolanan küçük dosyalar kullanarak takip eder. Çerezlerin saklandığı yol, tarayıcıya bağlıdır. Internet Explorer genellikle bunları Geçici İnternet Dosyaları klasöründe saklar.
- Kullanıcı deneyimini kişiselleştirmek – bu, kullanıcıların tercihlerini seçmelerine olanak tanıyarak sağlanır. Ardından gelen sayfa istekleri, çerezlerde belirlenen tercihlere göre kişiselleştirilir.
- Tracking bir kullanıcının ziyaret ettiği sayfalar
Çerez Oluşturma
Şimdi de çerez oluşturmak için kullanılan temel söz dizimine bakalım.
<?php setcookie(cookie_name, cookie_value, [expiry_time], [cookie_path], [domain], [secure], [httponly]); ?>
İŞTE,
- “setcookie” şudur: PHP işlevi çerezi oluşturmak için kullanılır.
- “cookie_name”, sunucunun $_COOKIE dizi değişkeninden değerini alırken kullanacağı çerezin adıdır. Bu zorunludur.
- “cookie_value”, çerezin değeridir ve zorunludur.
- “[expiry_time]” isteğe bağlıdır; çerezin geçerlilik süresini ayarlamak için kullanılabilir, örneğin 1 saat. Süre, PHP time() fonksiyonu artı veya eksi 0'dan büyük bir saniye sayısı kullanılarak ayarlanır, yani 1 saat için time() + 3600.
- “[çerez_yolu]” isteğe bağlıdır; sunucudaki çerez yolunu ayarlamak için kullanılabilir. Eğik çizgi "/", çerezin alan adının tamamında kullanıma sunulacağı anlamına gelir. Alt dizinler, alt alan adına çerez erişimini sınırlar.
- “[domain]” isteğe bağlıdır; çerez erişim hiyerarşisini tanımlamak için kullanılabilir, yani
www.cookiedomain.comtüm etki alanını ifade ederkenwww.sub.cookiedomain.comçerez erişimini sınırlarwww.sub.cookiedomain.comve alt alan adları. - “[secure]” isteğe bağlıdır; varsayılan değer false'tur. Bu değer true olarak ayarlanırsa çerezin HTTPS üzerinden mi, false olarak ayarlanırsa HTTP üzerinden mi gönderileceğini belirlemek için kullanılır.
- “[httponly]” isteğe bağlıdır. Eğer true olarak ayarlanırsa, istemci tarafı betik dilleri gibi diller kullanılabilir. JavaSenaryo Çereze erişilemiyor.
Not: PHP'deki `setcookie` fonksiyonu, HTML açılış etiketinden önce çalıştırılmalıdır.
Şimdi de çerez kullanan bir örneğe bakalım.
Kullanıcı adını altmış saniye sonra süresi dolacak bir çerezde saklamamızı sağlayacak basit bir program oluşturacağız.
Aşağıdaki kod yukarıdaki “cookies.php” örneğinin uygulanmasını göstermektedir.
<?php setcookie("user_name", "Guru99", time()+ 60,'/'); // expires after 60 seconds echo 'the cookie has been set for 60 seconds'; ?>
Çıktı:
the cookie has been set for 60 seconds
Çerez değerini alma
Aşağıdaki kodla “cookies_read.php” adında başka bir dosya oluşturun.
<?php
print_r($_COOKIE); // output the contents of the cookie array variable
?>
Çıktı:
Array ( [PHPSESSID] => h5onbf7pctbr0t68adugdp2611 [user_name] => Guru99 )
Not: $_COOKIE, PHP'nin yerleşik bir süper küresel değişkenidir. Ayarlanmış tüm çerezlerin adlarını ve değerlerini içerir.
Çerezlerin sayısı ve boyutu tarayıcı tarafından sınırlandırılmıştır; genellikle alan adı başına yaklaşık 50 çerez ve çerez başına 4 KB'dir.
Uygulamamızı test ediyoruz. PHP dosyalarınızı bir phptuts klasörüne kaydettiğinizi varsayalım.
- Adım 1 – Web tarayıcınızı açın ve şunu girin: URL http://localhost/phptuts/cookies_read.php
Not: Yalnızca boş bir dizi görüntülendi
- Adım 2 – şuraya göz atın: URL http://localhost/phptuts/cookies.php
- 3. Adım – İlk sekmeye geri dönün, ardından yenile düğmesine tıklayın.
Bir dakika bekleyin, ardından yenileme düğmesine tekrar tıklayın. Ne sonuçlar aldınız?
Çerezleri sil
- Bir çerezi son kullanma tarihinden önce yok etmek istiyorsanız, son kullanma süresini zaten geçmiş bir süreye ayarlarsınız.
- cookie_destroy.php adında yeni bir dosya oluşturun ve içine aşağıdaki kodu ekleyin.
<?php setcookie("user_name", "Guru99", time() - 360,'/'); ?>
- Çerez değerlerini alma bölümündeki 1 ila 3 arasındaki adımları tekrarlayın.
- Açın URL http://localhost/phptuts/cookie_destroy.php
- Şuna geçin URL http://localhost/phptuts/cookies_read.phpHangi sonuçları gösteriyor?
Oturum nedir?
- Oturum, sunucuda depolanan genel bir değişkendir.
- Her oturuma, saklanan değerleri almak için kullanılan benzersiz bir kimlik atanır.
- Her oturum oluşturulduğunda, benzersiz oturum kimliğini içeren bir çerez kullanıcının bilgisayarında saklanır ve sunucuya yapılan her istekte geri gönderilir. İstemci tarayıcısı çerezleri desteklemiyorsa, benzersiz PHP oturum kimliği görüntülenir. URL.
- Oturumlar, çerezlere kıyasla nispeten büyük verileri saklama kapasitesine sahiptir.
- Tarayıcı kapatıldığında oturum değerleri otomatik olarak silinir. Değerleri kalıcı olarak saklamak istiyorsanız bunları veritabanında saklamalısınız.
- Tıpkı $_COOKIE dizi değişkeni gibi, oturum değişkenleri de $_SESSION dizi değişkeninde saklanır. Çerezlerde olduğu gibi oturumun herhangi bir HTML etiketinden önce başlatılması gerekir.
Sessions neden ve ne zaman kullanılmalı?
- Önemli bilgileri, örneğin kullanıcı kimliğini, kötü niyetli kullanıcıların müdahale edemeyeceği bir sunucuda daha güvenli bir şekilde saklamak istiyorsunuz.
- Değerleri bir sayfadan diğerine aktarmak istiyorsunuz.
- Çerezleri desteklemeyen tarayıcılarda çerezlere alternatif bir yöntem arıyorsunuz.
- Genel değişkenleri, bunları parametre olarak geçirmeye kıyasla daha verimli ve güvenli bir şekilde saklamak istiyorsunuz. URL.
- Siz geliştiriyorsunuz.ping bir mağaza gibi bir uygulamaping 4 KB'den daha büyük kapasitede bilgiyi geçici olarak depolaması gereken bir sepet.
Oturum Oluşturma
Bir oturum oluşturmak için öncelikle PHP'nin `session_start` fonksiyonunu çağırmanız ve ardından değerlerinizi `$_SESSION` dizi değişkenine kaydetmeniz gerekir.
Diyelim ki bir sayfanın kaç kez yüklendiğini öğrenmek istiyoruz. Bunu yapmak için oturum verilerini kullanabiliriz.
Aşağıdaki kod, oturumlardan değer oluşturmayı ve almayı göstermektedir.
<?php session_start(); // start the session if(isset($_SESSION['page_count'])) { $_SESSION['page_count'] += 1; } else { $_SESSION['page_count'] = 1; } echo 'You are visitor number ' . $_SESSION['page_count']; ?>
Çıktı:
You are visitor number 1
Oturum Değişkenlerini Yok Etme
`session_destroy()` fonksiyonu, tüm PHP oturumunu sonlandırmak için kullanılır.
Yalnızca tek bir oturum öğesini silmek istiyorsanız, unset() fonksiyonunu kullanırsınız.
Aşağıdaki kod her iki yöntemin de nasıl kullanılacağını göstermektedir.
<?php
session_destroy(); // destroy entire session
?>
<?php unset($_SESSION['product']); // destroy product session item ?>
`session_destroy` komutu, oturumla ilişkili çerezler de dahil olmak üzere tüm oturum verilerini siler.
`unset` komutu yalnızca bireysel oturum değişkenlerini serbest bırakır. Diğer veriler olduğu gibi kalır.





