PHP print_r ve statik üye

3 Cevap php

Session object {[(0 yararlanabilirler çeşitli yöntemler vardır çünkü ben bir Session nesne, iletilen bir DB nesnesinin bir örneğini var I Session nesne özelliği bu DB nesnesini saklamak için planı vardı SQL ifadeleri çalıştırmak için)]} nesne.

Bu testler sayesinde I print_r Session nesne özelliğinde saklanır DB nesne maruz bulundu; db kullanıcı / parola çıkış dahil oldu.

Yani benim fikrim print_r Session nesne üzerinde çağrıldığında zaman ifşa ediliyor bu bilgi önlemek için, özel bir statik üyesi DB nesnesini saklamak oldu.

Statik üyesi bu kabul edilebilir, ya da sadece düz kötü kullanımı mı?

print_r sırasında açıklanan gelen özel nesne özelliğini önlemenin önerilen yolu nedir?

İşte kod örneği bulunuyor.

Before:

class Session 
{

    public __construct(DB $db)
    {
        $this->db = $db;
    }

}

After:

class Session
{

    private static $db;

    pubic __construct(DB $db)
    {
        self::$db = $db;
    }

}

3 Cevap

Bu okumak için edememek print_r / var_dump / var_export duramayız, bu php ekibi birkaç kez rapor edilmiştir ama bunun bir özelliği (...) göz önünde bulundurun:

http://bugs.php.net/bug.php?id=39118&edit=2
http://bugs.php.net/bug.php?id=35822&edit=1

Eğer Exemple gibi bir statik üyesi kullanıyorsanız, her Session örneği, / aynı olan erişebilirsiniz lütfen unutmayın; Bu daha sonra bazı sürprizler yol açabilir.

Başka bir fikir bir zamanlar bağlı DB nesneden giriş / geçiş silip olduğunu, bu konuyu içeren yardımcı olabilir.

Evet, bu kötü

print_r() sadece hata ayıklama olup kullanıcıya içeriğini görüntülemek için kullanılmalıdır.

Sınıf test için görünür olmayacaktır schould gizli bilgiler içeriyorsa, (boş dize falan alanları ayarlayabilirsiniz) sterilize etmek için gizli olan parçalar var.

Başka bir yaklaşım DB nesnesi kullanarak konum yolunu değiştirmek için. Bir oturum yöntemi DB nesne kullanımı ihtiyacı varsa, bunlar "global $ db;" aramak gerekir yönteminin başında hassas DB giriş bilgileri aslında kalıcı veri $ _SESSION nesnenin parçası olmadığını sağlamak için, ve tanımlanmış uygun bir $ db nesnesi var ve bunun yaşam boyunca maruz değil arama sayfası kalmış Bir OTURUM nesnenin etrafında asılı endişesi olmadan betiğin yürütme.