session_set_save_handler

(PHP 4, PHP 5, PHP 7)

session_set_save_handlerKullanıcı seviyesi oturum saklama işlevlerini bildirir

Açıklama

session_set_save_handler ( callback $aç , callback $kapa , callback $oku , callback $yaz , callback $yoket , callback $çöpçü ) : bool

session_set_save_handler() işlevi, bir oturumla ilişkili verileri almak ve saklamak için kullanılan kullanıcı seviyesi oturum saklama işlevlerini bildirir. PHP oturumlarında başka kaynaklardan sağlanmış bir saklama yöntemi (oturum verilerini bir yerel veritabanıda saklamak gibi) kullanılacaksa bu işlev çok işe yarar.

Değiştirgeler

Bu işlev, sınıflardaki kurucular gibi çalışır ve oturum açıldığında çalıştırılır. Açma işlevinin iki değiştirge kabul edeceği varsayılır. İlkinde dosyaların kaydedileceği yerin yolu, ikincisinde oturum ismi verilir.

kapa

Bu işlev, sınıflardaki yıkıcılar gibi çalışır ve oturum işlemleri bittiğinde çalıştırılır.

oku

Oturum bilgilerinin kayıt eylemcisinin beklendiği gibi çalışması için bu işlevin daima dizge değer döndürmesi gerekir. Okunacak veri yoksa işlev boş dizge döndürmelidir. Diğer eylemcilerden dönen değerler başarı durumunda TRUE başarısızlık durumunda FALSE döndüren mantıksal ifadelere dönüştürülür.

yaz

Bilginize:

Bu işlev çıktı akımı kapanana kadar çalıştırılmaz. Bu bakımdan bu işlevdeki hata ayıklama deyimlerinin çıktıları tarayıcıda hiçbir zaman görünmez. Eğer hata ayıklama çıktısı gerekliyse, bu çıktının bir dosyaya yazılması önerilir.

yoket

Bu işlev, oturum kimliğini tek değiştirge olarak alır ve session_destroy() işlevi ile bir oturum yok edildiğinde çalıştırılır.

çöpçü

Çöp toplayıcı işlev. Oturumun azami ömrünü tek değiştirge olarak alır ve oturumun çöp toplayıcısı çalıştırıldığı zaman çalıştırılır.

Dönen Değerler

Başarı durumunda TRUE, başarısızlık durumunda FALSE döner.

Örnekler

Örnek 1 - session_set_save_handler() örneği

Aşağıdaki örnekte, PHP'nin öntanımlı kayıt ortamı olan dosyalara (files) benzer dosya temelli bir oturum kayıt ortamı oluşturulmaktadır. Bu örnek, PHP destekli veritabanı mekanizmanızı kapsayacak şekilde kolayca genişletilebilir.

<?php
function ($saklama_yeri$oturum_ismi)
{
  global 
$oturum_kayıt_yeri;

  
$oturum_kayıt_yeri $saklama_yeri;
  return(
true);
}

function 
kapat()
{
  return(
true);
}

function 
oku($id)
{
  global 
$oturum_kayıt_yeri;

  
$saklama_dosyası "$oturum_kayıt_yeri/oturum_$id";
  return (string) @
file_get_contents($saklama_dosyası);
}

function 
yaz($id$saklama_verisi)
{
  global 
$oturum_kayıt_yeri;

  
$saklama_dosyası "$oturum_kayıt_yeri/oturum_$id";
  if (
$fp = @fopen($saklama_dosyası"w")) {
    
$return fwrite($fp$saklama_verisi);
    
fclose($fp);
    return 
$return;
  } else {
    return(
false);
  }

}

function 
yoket($id)
{
  global 
$oturum_kayıt_yeri;

  
$saklama_dosyası "$oturum_kayıt_yeri/oturum_$id";
  return(@
unlink($saklama_dosyası));
}

function 
çöpçü($azami_ömür)
{
  global 
$oturum_kayıt_yeri;

  foreach (
glob("$oturum_kayıt_yeri/oturum_*") as $dosya) {
    if (
filemtime($dosya) + $azami_ömür time()) {
      @
unlink($dosya);
    }
  }
  return 
true;
}

session_set_save_handler("aç""kapat""oku""yaz""yoket""çöpçü");

session_start();

// Oturum ile ilgili diğer işlemler

?>

Notlar

Uyarı

PHP 5.0.5'ten itibaren yaz ve kapat eylemcileri nesne yokedildikten sonra çağrılmaktadır. Bu bakımdan nesneler ve oluşturulan istisnalar kullanılamaz. Ancak nesne yıkıcılar oturumları kullanabilir.

Bu yumurta/tavuk sorununu çözümlemek için bir yıkıcıdan session_write_close() çağrısı yapmak mümkündür.

Uyarı

Eğer oturum, betiğin sonlanmasıyla kapanmışsa bazı SAPI'lerde geçirli çalışma dizini değiştirilir. Böyle durumlarda oturumu önceden session_write_close() ile kapatmak mümkündür.

Ayrıca Bakınız