PHP oturumları vs CodeIgniter oturumları

5 Cevap php

Ben CodeIgniter için nispeten yeni ve vb kullanıcı hesapları, Geçmişte var olan benim ilk CI proje yapıyorum, ben her zaman bu amaçla PHP'nin $ _SESSION değişkeni kullandık. Ancak, CI bu "daha iyi" olduğunu iddia ediyor, kendi oturum mekanizması, var gibi görünüyor

CI oturum mekanizması bir tanımlama tüm verileri depolamak gibi görünüyor? Şahsen ben PHPs yerli oturum mekanizması gibi bir çerez-tuşu ile erişilen sunucu üzerinde depolanan tüm verilerin fikir gibi ... Ben daha iyi aptal düşünme davranıyor muyum? Ben sadece CI mekanizmasını kabul etmelidir? Yoksa devam edin ve yerli PHP oturumları kullanmalıyım?

Siz ne yapıyorsunuz?

Thanks,
Mala

5 Cevap

CI ile benim deneyim ben onun oturumları ile bazı anomaliler karşılaştı, ancak gün-gün en çok kütüphane ihtiyaçları için iyi ve çalışmak kolaydır ettik. O işaret edildiği gibi, Flashdata çok güzel bir özelliktir.

Eğer CI oturumları ile kalmak isterseniz, ben güçlü bir veritabanında oturumları saklamak ve, ayrıca, tanımlama bilgilerini şifrelemek için öneririm:

$config['sess_encrypt_cookie'] = TRUE;
$config['sess_use_database']   = TRUE;
$config['sess_table_name']     = 'sessions';

Aşağıdaki gibi bir veritabanı yapısı olmalıdır:

CREATE TABLE IF NOT EXISTS  `sessions` (
    session_id varchar(40) DEFAULT '0' NOT NULL,
    ip_address varchar(16) DEFAULT '0' NOT NULL,
    user_agent varchar(50) NOT NULL,
    last_activity int(10) unsigned DEFAULT 0 NOT NULL,
    user_data text NOT NULL,
    PRIMARY KEY (session_id)
);

Manuel diyor more flexibility yerine better ;-)

Ben CodeIgnite oturum sınıfının ana parası çerçevesi ile entegre olduğunu ve bu okumuş gibi bu tür IP adresi izleme ve kısa sürede silmiş o dediği flashdata (oturum veri olarak, birkaç ekstra işlevsellik sunuyor tahmin .) Eğer ilk etapta bir çerçeve kullanıyorsanız, o bu seçenekler sizin için cazip olabilir anlamına gelir.

Ne olursa olsun, sen de bir veritabanına oturum verileri kaydetmek:

http://codeigniter.com/user_guide/libraries/sessions.html

Önemli bilgiler için PHP oturum tutmak ve daha az önemli bilgi için CI oturumu kullanın.

Burada wyh okuyun. http://codeigniter.com/forums/viewthread/130577/

Ben bu eski bir yazı olduğunu biliyorum, ama ben ne bulduk paylaşımı değer olduğunu hissediyorum.

CI (hatta veritabanı depolama) ile bir çerez tabanlı bir yaklaşım kullanır beri kıvrılma yoluyla veri talebinde uzak istemciler veri aktaran benim özel uygulaması için bir sorun neden olur. Alt çizgi yönetilebilir olmasına rağmen, birlikte iyi oynamak değil, Çerezler ve Cross Site Scripting olduğunu.

Ben kendi MY_Session.php ile CI tarafından sağlanan yerli session.php sınıfı geçersiz kılmak için denemek için seçtim. Bu çok zor değil bulmak için mutlu olduğunu, ancak CI benim senaryom açıkça onlara sağlanan olsa bile session id yenileyici olduğunu bulmak için sürpriz oldu.

CI kılavuzuna göre,

The user's unique Session ID (this is a statistically random string with very strong entropy, hashed with MD5 for portability, and regenerated (by default) every five minutes)

Ben muhtemelen bu geçersiz kılmak için bir yol bulmak rağmen PHP oturumları geri dönmek için çok daha kolay olmaz mıydı, merak ediyorum.

Eğer CI kullanmak için gidiyoruz eğer düşünce için sadece gıda.

CI sessions has Storage size limitations

Sizin de bildiğiniz gibi, CI oturumları bunu şifrelemek veya olmasın, temelde tanımlama vardır. Bildiğim kadarıyla güvenlik söz konusu olduğunda hem artıları ve eksileri üzerinde var.

Yerli PHP oturum sadece depolar çerez id başvurmak ve tüm oturum veri sunucusu bellekte depolanır ise benim endişe CI oturumların boyut sınırı olduğunu, o, onun temelde bir çerez olarak sadece 4 kb veri tutabilir. Öğelerin daha büyük bir sayı, bir oturumda saklanan gerekir olduğunda bu kullanışlı geliyor.

50'den fazla parça ... vb fazla öğe, ya da kullanıcı müzik çalma ile bir alışveriş sepeti Say

Ben bu bilgileri bir gün birisi yardımcı olur umarım.

Şerefe ..!