OOP - Oturumlar ve PHP

2 Cevap php

karışık bir litte biraz iam, ben geçen yıl php 5 OO Way öğrenmeye başladım. İlk Projeler Zend Framework ile yapılır.

Ama bazı arkadaşlarım $ _SESSION dizisi Nesneler depolama bahsediyoruz. Ama iyi bir örnek bulmak mümkün iam değil, neden ve ne zaman bu nesecarry nedir?

Birisi insanların bana bir ipucu verebilir eğer oturumlarda nesneleri saklamak için neden, harika olurdu.

2 Cevap

Oturum aslında onlara, bir Sayı, Karakter, Karakterler (String), Yapılar ..... Nesneler sen istersen saklayabileceğiniz bir değişkendir.

Ayrıca, sayfaları boyunca sabit kalan bir değişkendir. Onun en commanly kullanıcı giriş bilgilerini tutmak için kullanılan

I Session nesneleri kullanmak nasıl aşağıdaki gibidir:

Benim DB Kullanıcıların tablo var ve ben FirstName görüntülemek ve benim sayfaları çoğunlukla tüm Soyad gerekir Diyelim ki.

Ben ne yapabilirim iki şey ... Eski bir yoldur:

$result = mysql_fetch_array(mysql_query("SELECT * FROM users WHERE userId=1"));
$_SESSION['userId'] = $result['userId'];
$_SESSION['firstname'] = $result['firstname'];
$_SESSION['lastname'] = $result['lastname'];

Şimdi gayet yapabilirsiniz ancak aşağıdaki kodu Diyelim olsaydı bu çok daha iyi olurdu:

class user{
    _construct($userId){

       $qry_str = mysql_query("SELECT * FROM users WHERE Id=$userId");

       $result = mysql_fetch_array($qry_str);
       $this->userId = $userId;
       $this->firstname = $result['firstname'];
       $this->lastname = $result['lastname'];
    }

    public $userId, $firstname, $lastname;
}

Ve başlatılamıyor

$_SESSION['user'] = new user(1);

Veya Çoklu kullanıcıları söylüyor:

$_SESSION['user'][1] = new user(1);
$_SESSION['user'][2] = new user(2);
$_SESSION['user'][3] = new user(3);

Ve sonra kodunuzda yapmanız gereken tek şey: Giriş sırasında UserID tarafından kullanıcıyı atamak ve daha sonra tüm bilgileri görüntülemek için saklanan sınıfını kullanın.

Eğer sınıflar ile yapabileceğiniz çok daha güçlü bir şey vardır. Ancak yukarıda size basit ve etkili bir çözüm gösterir.

Bunu deneyin: statments eğer ekleme ve kullanıcı sınıfına için konstruktunda statments die ... kullanıcı oluşturarak zaman kontrol hata olabilir

Bu yardımcı olur umarım

HTTP vatansız olduğunu. Eğer persist farklı sayfa fetches arasında veri istiyorsanız, başka bir mekanizma gerekiyor. Çerezler bir yolu vardır, ancak istemci üzerinde saklanan konum beri, onlar sunucu üzerinde güvenilir değiliz. $_SESSION, kalıcı, güvenilir depolama için bir yaklaşımdır. En yaygın kullanım giriş sistemleri içindir. Bu oturum kimlikleri istemciden gelen, bu yüzden güvenilir değil, ama oturumunda kendi içinde depolanan verilerin sahte değil, oldukça belirli olabilir unutmayın. Başka bir seçenek bir veritabanı kullanmak olacaktır, ama sonra unserialize / seri kodu eklemek veya başka PHP nesneleri gelen ve veritabanında saklanan verileri dönüştürmek gerekiyor. Bir avantajı veritabanları seans üzerinden veri kolayca oturumları arasında paylaşılan edilemez olduğunu var.

Diğer türleri aksine nesneleri saklamak için olduğu gibi, sadece belirli uygulama kullandığı meselesi, ama bu bir zorunluluk değil. Eğer bir nesne kimliği doğrulanmış kullanıcı bilgilerini (kullanıcı kimliği ve istemci IP adresi gibi) saklıyorsanız giriş örnek alarak, size $_SESSION içinde bu nesneyi saklamak.

Başka Örneğin, iletileri model nesneleri kullanan bir mesajlaşma uygulaması (örneğin forum, e-posta) yazıyoruz varsayalım. Mesajlar ekleri olabilir, ancak eki formu ayrı bir sayfa, yani $_SESSION ileti nesneyi saklayın. Değil en kullanışlı tasarım, ama ortak bir, gerçi az çok AJAX gelişine.