PHP Sessions Dolacak Beklenmedik

5 Cevap php

Ben burada bir kaybı var. Ben seansları tamamen rastgele sona erecek gibi görünüyor yukarı belirli bir kullanıcı grubu var. Onlar etrafında gezen yaparken onlar bir süre oturan siteyi terk zaman sadece değil, iptal edebilir. Benim ve bizim kullanıcıların çoğu için her şey gayet güzel çalışıyor. Bu bir tarayıcı sorun değil, biz bu iki işlevi doğru FF insanları ve tüm IE sürümleri var, ve FF ve IE insanların işe yaramaz.

Benim gc_maxlifetime 43200 olduğu ve çöp toplama 1/1000 (bu önemli olmamalı ki) bir çılgın düşük. Rastgele bizim bazı oturumları silme var sunucu üzerinde çalışan başka bir şey var olabilir mi? Ne kontrol etmelisiniz? Yalnızca bu özel grup etkilenecek gibi görünüyor neden hala açıklamıyor.

Ben varsayılan farklı bir kaç Oturum ayarları vardır:

session.gc_maxlifetime = 43200
session.gc_divisor = 1000
session.save_path = /var/lib/php/session
session.use_only_cookies = Off
session.bug_compat_42 = Off

İlk üç ben endişelenmiyorum, ama son iki bu davranışa neden olabilir? Ben aslında hiç URL üzerinden tanımlama göndermek yok, bu yüzden use_only_cookies kapalı olması için hiçbir sebep yok. Ben buraya gelmeden önce bu uygulamayı yapılan uyumsuzlar oturum değişkenlerini ayarlamak için bug_compat_42 şeyi istismar etmedi, ama yine, ben daha az rastgele olması için bu bir sorun beklediğiniz hiçbir garanti yok.

Edit:

Daha fazla araştırma, ben Session hiç tahrip ediliyor olmadığını bulduk, ancak son kullanıcı, yeni bir oturum kimliği oluyor. Eski oturum hala sunucuda bozulmamış var, ama onlar tarama yaparken yeni bir rasgele başlatılır.

5 Cevap

Burada sorun, kendi tarayıcı oturum tanımlama erken sona ayarı olduğunu çıkıyor. Ben hiç kullanmak zorunda asla bu kirli, pis kesmek ile sorunu çözdük. Bundan gurur duymuyorum, ama bu bir şey üzerinde biraz ışık parlar eğer bana izin çekinmeyin:

if (!headers_sent()) {
    if ($_COOKIE["PHPSESSID"] != "") {
    	setcookie("PHPSESSID", $_COOKIE["PHPSESSID"], time()+43200, "/", ".mydomain.com");
    }
}

Ben bu makinelerde httpwatch (ücretli ama her kuruşa değer) veya fiddler (ücretsiz) gibi bazı http sniffer yüklemek ve ne (ben PHPSESSID olduğunu düşünüyorum, oturum çerezleri ile oluyor görmek istiyorsunuz, ama emin değilim). Çerez nedeniyle yakınlık silinmiş veya oturumun ortasında değiştirilir ediliyorsa, garip apache yapılandırma ya da bir şey, bunu tespit etmek için en iyi yol olacaktır.

Eğer set up hakkında biraz daha bilgi verebilir misiniz?

Benim ilk düşünce rastgele geçici dosyalar dizini temizlemek dışında bir şey olurdu. Eğer kurmak standart LAMBASI kullanıyorsanız, PHP, / tmp içine oturum veri dosyalarını saklamak olacak. Onlar bir temizlik işlemi oradan silinmiş alma yapıyorsanız, sizin oturumları kaybederim.

Düzenleme: Ben şimdi bu yeniden düşünüyorum. Kullanıcıların sadece özel bir grubunun etkilenir, bu çok daha az olası hale getirir.

Nasıl çerez ayarları hakkında? Eminim bu insanlar dinamik bir vekil gibi bir şey kullanarak ve çerezleri sitenizin kök etki alanı için ayarlanmış ediliyor olmadığını yapmak istiyorum. Onlar gibi CCleaner gibi bazı gizlilik temizleme yazılımıdır çerezlerini kaldırarak olabilecek bir zamanlanmış görev olarak ayarlanmış olabilir mümkün mü?

Ben onların bilgisayarlardan birinde orada almak ve Firefox makinelerin birinin üzerine kundakçı atmak ve çerezleri doğru gönderdi ediliyor görmek için HTTP istekleri incelemek istiyorum.

Ben bu kadar geç olduğunu biliyorum. Ama sadece bazı insanlar için kim de aynı sorunu geçiriyor.

[If you encrypt and decrypt your data]

I've run with this issue and took me awhile to figure out what's the problem. It keeps creating a new session ID for the same user. Turns out that the encrypt data and the decrypt data is not the same. The decrypt data returns with some additional white spaces. Try check your data value when send and return from database or whatever storage you are using.

Sorun kullanıcıları olabilir? Onlar herhangi bir Firefox eklentileri kullanıyor musunuz? Birbirlerine yakın oturmak mı? Onlar aynı sitelerine bakıyorsunuz?