Ö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.

  • 🍪 Çerezler Nedir: Çerez, sunucunun istemcide sakladığı ve her sonraki istekte geri gönderdiği, en fazla 4 KB boyutunda küçük bir dosyadır.
  • 🗄️ Oturumlar Nelerdir: Bir oturum, sunucuda benzersiz bir kimlik altında veri depolar; bu kimlik $_SESSION dizisinde saklanır ve bir oturum çerezi tarafından referans alınır.
  • 🆚 Anahtar Fark: Çerezler istemci tarafında bulunur ve küçük, hassas olmayan veriler için uygundur; oturumlar sunucu tarafında bulunur ve daha büyük veya özel verileri saklar.
  • ️ Çerez Oluşturma: setcookie() işlevi, herhangi bir HTML çıktısı verilmeden önce bir ad, değer ve isteğe bağlı olarak süre sonu, yol, etki alanı, güvenli ve yalnızca http ile ilgili bayrakları ayarlar.
  • 📝 Oturum Oluşturma: `session_start()` fonksiyonu bir oturum başlatır; bundan sonra `$_SESSION` süper küresel dizisi aracılığıyla değerleri okuyabilir ve yazabilirsiniz.
  • 🗑️ Temizlemek: Çerezlerin süresini geçmiş bir zaman belirleyerek sonlandırın; oturumu session_destroy() ile sonlandırın veya unset() ile bir değeri temizleyin.
  • 🤖 Yapay Zeka Yardımı: Yapay zeka araçları, güvenli oturum yönetimini uygulayabilir ve mevcut PHP kodundaki çerez veya oturum zafiyetlerini tespit edebilir.

PHP Çerezleri ve Oturumları

Ç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.

Çerez Nedir?

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.com tüm etki alanını ifade ederken www.sub.cookiedomain.com çerez erişimini sınırlar www.sub.cookiedomain.com ve 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

Çerez değerini alma

Not: Yalnızca boş bir dizi görüntülendi

  • Adım 2 – şuraya göz atın: URL http://localhost/phptuts/cookies.php

Çerez değerini alma

  • 3. Adım – İlk sekmeye geri dönün, ardından yenile düğmesine tıklayın.

Çerez değerini alma

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.

SSS

Çerezler, kullanıcının tarayıcısında küçük bir dosyada veri depolar ve her istekle birlikte gönderilir. Oturumlar ise verileri sunucuda depolar ve yalnızca oturum kimliği çerezini gönderir. Oturumlar, hassas veya büyük veriler için daha güvenlidir.

Varsayılan olarak, PHP oturum verilerini php.ini dosyasındaki session.save_path ile belirlenen yolda, genellikle sistemin geçici dizininde dosyalar olarak kaydeder. Yüksek trafikli siteler bunu genellikle bir veritabanına, Redis'e veya Memcached işleyicisine geçirir.

HttpOnly bayrağını şu şekilde ayarlayın: JavaKomut dosyası çerezi okuyamaz, Secure bayrağı yalnızca HTTPS üzerinden iletilmesini sağlar ve SameSite özniteliği siteler arası gönderimi sınırlandırır. Oturumlar için, giriş yaptıktan sonra kimliği yeniden oluşturun.

Evet. Yapay zeka, oturum kimliğini yeniden oluşturan, güvenli çerez işaretlerini ayarlayan, sunucu tarafında minimum veri depolayan ve zaman aşımı sürelerini uygulayan bir giriş akışı oluşturabilir. RevÇıktıyı güvenlik gereksinimlerinize göre inceleyin.

Evet. Yapay zeka, eksik HttpOnly veya Secure işaretlerini, oturum sabitleme risklerini, hassas verilerin çerezlerde saklanmasını ve oturum açtıktan sonra kimlik yenilemesinin olmamasını tarayabilir ve ardından düzeltilmiş kodu önerebilir.

Bu yazıyı şu şekilde özetleyin: