Manwe Work 1
Manwe Work
noisiv 1
noisiv
berkmenoo 1
berkmenoo
mavzermete 1
mavzermete
Mt2Hizmet 1
Mt2Hizmet
xranzei 1
xranzei
Hikaye Ekle

PHP – Filtered unserialize()

HERAKLES Otomatik Avlı kalıcı sunucu. 19 Haziran'da açılıyor. Atius & Wizard güvencesiyle hemen kayıt ol, ön kayıt ödülleri aktif. HEMEN TIKLA!

PHP'de, unserialize() yerleşik işlevi PHP sürüm 4'ten itibaren kullanılabilir. PHP 7 ile, izin verilen sınıfların bir listesini geçirmeye yönelik bir hüküm eklendi. Bu, güvenilmeyen kaynağın filtrelenmesini sağlar. unserialze() işlevi, yalnızca güvenilen sınıflardan gelen verileri seri hale getirir.

PHP'de serileştirme, bir değerin depolanabilir bir gösteriminin oluşturulması anlamına gelir. Bu, PHP değerlerini türlerini ve yapılarını kaybetmeden depolamak veya iletmek için yararlıdır. Bu amaç için yerleşik serialize() işlevi kullanılır.

serialize(mixed $value): string

unserialze() fonksiyonu serileştirilmiş gösterimden bir PHP değeri verir. PHP 7'den itibaren, unserialize() fonksiyonu aşağıdaki formatı takip eder:

unserialize(string $data, array $options = [ ]): mixed

$data parametresi, serileştirmeyi kaldırmak istediğiniz serileştirilmiş dizgedir.

$options parametresi yeni tanıtıldı. Aşağıdaki anahtarların ilişkisel dizisidir:

Sr.Noİsim ve Açıklama
1allowed_classes
kabul edilmesi gereken sınıf adlarının dizisi,
veya
hiçbir dersi kabul etmemek yanlıştır,
veya
tüm dersleri kabul etmek doğrudur.
Bu seçeneği atlamak, onu doğru olarak tanımlamakla aynı şeydir.
2max_depth
Serileştirme sırasında izin verilen yapıların maksimum derinliği.

Örnek

Aşağıdaki örneğe bir göz atın:

PHP:
<?php
   class MyClass {
      var int $x;
      function __construct(int $x) {
         $this->x = $x;
      }
   }
   class NewClass {
      var int $y;
      function __construct(int $y) {
         $this->y = $y;
      }
   }

   $obj1 = new MyClass(10);
   $obj2 = new NewClass(20);

   $sob1 = serialize($obj1);
   $sob2 = serialize($obj2);

   // default behaviour that accepts all classes
   // second argument can be ommited.
   // if allowed_classes is passed as false, unserialize converts all objects into __PHP_Incomplete_Class object
   $usob1 = unserialize($sob1 , ["allowed_classes" => true]);

   // converts all objects into __PHP_Incomplete_Class object except those of MyClass and NewClass
   $usob2 = unserialize($sob2 , ["allowed_classes" => ["MyClass", "NewClass"]]);

   echo $usob1->x . PHP_EOL;
   echo $usob2->y . PHP_EOL;
?>

Aşağıdaki çıktıyı üretecektir:

 

Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)

Geri
Üst