PHP'de bir diziyi (array) çerezle saklamak doğrudan mümkün değildir, çünkü çerezler yalnızca dize (string) tipindeki verileri saklar. Ancak, bir diziyi çerezde saklayabilmek için diziyi serileştirmek (string'e dönüştürmek) gerekir. Bunun için genellikle serialize()
veya json_encode()
fonksiyonları kullanılır.
1. Diziyi Cookie ile Saklama
Diziyi önce JSON formatına dönüştürüp sonra çerez olarak saklayabiliriz. PHP'de diziyi JSON formatına dönüştürmek için json_encode()
fonksiyonu kullanılır. Saklanan veriyi daha sonra tekrar diziye dönüştürmek için json_decode()
kullanılır.
Örnek:
// Saklamak istediğimiz dizi
$kullanici_bilgileri = [
"ad" => "Ahmet",
"soyad" => "Yılmaz",
"email" => "ahmet@example.com"
];
// Diziyi JSON formatına dönüştür
$json_data = json_encode($kullanici_bilgileri);
// JSON verisini bir çerezde sakla (1 saat geçerli)
setcookie("kullanici_bilgileri", $json_data, time() + 3600, "/");
// Çerezin saklandığını onaylayalım
echo "Dizi çerezde saklandı.";
Bu örnekte, $kullanici_bilgileri
dizisi önce json_encode()
ile JSON formatına dönüştürülüyor ve ardından çerezde saklanıyor.
2. Cookie'den Diziyi Okuma
Çerezi okurken, sakladığımız JSON verisini önce $_COOKIE
dizisi ile çekeriz, ardından json_decode()
ile diziye geri çeviririz.
Örnek:
// Çerezi kontrol et ve JSON verisini al
if(isset($_COOKIE["kullanici_bilgileri"])) {
// JSON verisini diziye dönüştür
$kullanici_bilgileri = json_decode($_COOKIE["kullanici_bilgileri"], true);
// Diziyi kullanabiliriz
echo "Ad: " . $kullanici_bilgileri["ad"] . "<br>";
echo "Soyad: " . $kullanici_bilgileri["soyad"] . "<br>";
echo "Email: " . $kullanici_bilgileri["email"];
} else {
echo "Kullanıcı bilgileri çerezi bulunamadı.";
}
Bu kod, daha önce çereze kaydedilen diziyi okur, json_decode()
ile diziye çevirir ve ardından değerlerini ekrana yazdırır.
3. Cookie ile Saklanan Diziyi Silme
Daha önce saklanan çerezi silmek için çerezin süresini geçmiş bir zamana ayarlamak yeterlidir.
Örnek:
// Çerezi silmek için geçerlilik süresini geçmiş bir zamana ayarlayın
setcookie("kullanici_bilgileri", "", time() - 3600, "/");
echo "Kullanıcı bilgileri çerezi silindi.";
4. Notlar:
- Çerez Boyutu: Çerezler, genellikle maksimum 4KB (4096 byte) boyutunda veri tutabilir. Bu nedenle saklayacağınız dizinin boyutu bu limiti aşarsa, çerez kullanımı uygun olmayabilir.
- Güvenlik: Çerezlere kaydedilen veriler tarayıcı tarafından saklanır, bu yüzden gizli bilgiler (şifre, kişisel bilgiler) çerezlerde saklanmamalıdır. Verilerinizi güvence altına almak için şifreleme yöntemleri kullanılabilir.
PHP 8 ile dizileri çerezlerde saklamak ve tekrar okumak oldukça basittir. Ancak, güvenlik ve performans açısından dikkatli olmak önemlidir. JSON formatı ile dizi ve obje gibi karmaşık verileri kolayca çerezlerde tutabiliriz.