CakeFest 2024: The Official CakePHP Conference

Temel Kullanım

Oturumlar, bireysel kullanıcılar için verileri benzersiz bir oturum kimliğine göre depolamanın basit bir yoludur. Bu, sayfa istekleri arasında durum bilgisini sürdürmek için kullanılabilir. Oturum kimlikleri normalde tarayıcıya oturum çerezleri aracılığıyla gönderilir ve kimlik, mevcut oturum verilerini almak için kullanılır. Oturum kimliği veya çerezlerinin olmaması, PHP'nin yeni bir oturum oluşturmasını ve yeni bir oturum kimliği üretmesini sağlar.

Oturumlar basit bir iş akışını takip eder. Bir oturum başlatıldığında, PHP ya aktarılan kimliği (genellikle bir oturum çerezinden) kullanarak var olan bir oturumu geri alır ya da hiçbir oturum aktarılmamışsa yeni bir oturum oluşturur. PHP, $_SESSION süper küreselini, oturum başladıktan sonra oturum verileriyle doldurur. PHP kapandığında, $_SESSION süperküresel içeriğini otomatik olarak alacak, dizileştirecek ve oturum kaydetme işleyicisini kullanarak depolanmaya gönderecektir.

Öntanımlı olarak PHP, session.save_handler tarafından atanan dahili dosya kaydetme işleyicisini kullanır. Bu, oturum verilerini session.save_path yapılandırma yönergesi tarafından belirtilen konumda sunucuya kaydeder.

Oturumlar, session_start() işlevi kullanılarak elle başlatılabilir. session.auto_start yönergesine 1 atanmışsa, istek başlatıldığında oturum otomatik olarak başlayacaktır.

Oturumlar normalde PHP bir komut dosyasını yürütmeyi bitirdiğinde otomatik olarak kapanır, ancak session_write_close() işlevi kullanılarak elle de kapatılabilir.

Örnek 1 - Bir değişkeni $_SESSION ile kayıt altına almak

<?php
session_start
();
if (!isset(
$_SESSION['count'])) {
$_SESSION['count'] = 0;
} else {
$_SESSION['count']++;
}
?>

Örnek 2 - $_SESSION ile bir değişkeni tanımsız yapmak

<?php
session_start
();
unset(
$_SESSION['count']);
?>

Dikkat

$_SESSION dizisinin tamamını unset($_SESSION) ile tanımsız YAPMAYIN. Bu işlem, oturum değişkenlerinin $_SESSION süper küreseli üzerinden kayıt altına alınmamasına sebep olacaktır.

Uyarı

Başka bir değişkene gönderimi tekrar tanımlı kılmanın bir yolu olmadığından oturum değişkenlerinde gönderimleri kullanamazsınız.

Bilginize:

Dosya tabanlı oturumlar (PHP'de öntanımlı) bir oturum bir kez session_start() veya dolaylı olarak session.auto_start aracılığıyla açıldığında oturum dosyasını kilitler. Bir kez kilitlendiğinde, başka hiçbir betik, session_write_close() çağrılana kadar veya ilk betik sonlanana kadar aynı oturum dosyasına erişemez.

Bu, AJAX'ı yoğun şekilde kullanan ve aynı anda birden çok istek alan http sitelerinde büyük olasılıkla bir sorundur. Bununla başa çıkmanın en kolay yolu, oturumda gerekli herhangi bir değişiklik yapılır yapılmaz, tercihen betiğin başlarında, session_write_close() işlevini çağırmaktır. Bunun yerine, eşzamanlılığı destekleyen farklı bir oturum artucu da kullanılabilir.

add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top