şu sessin_id() işlevinin döndürdüğü değer kişiye özel, sanırım ip adresine bağlı. yani farklı iki bilgisayarın birinden açılan oturumun başka biriyle karışma olasılığı sıfır.
peki, aynı kullanıcının, aynı serverda barınan iki siteden yalnızca birinde oturum açması nasıl sağlanır? id aynı olacak çünkü...?
bunu ancak veritabanıyla yapabilirsin. her login olana el yapımı bir id üretirsin ve bunu IP adresine atayıp veritabanına girersin. öteki siteye giren genç, aynı IP'yi kullandıkça bir veritabanı sorgusu ile login olup olmadığına bakarsın, login ise session id'sini veritabanından okursun ve kullanırsın.
php'ye bağlı session id yerine el yapımı bişey kullanman daha iyi olur,
$session_id = md5(microtime().rand());
gibi.
ancak IP tabanlı kontrolün kötü yanı, proxy kullananlar varsa birbirinin yerine login olup dururlar.
bir de ikinci yöntem var, aynı cookie'yi iki farklı sitede kullanmak. ancak hiç denemedim, o yüzden php.net'ten setcookie fonskiyonunu falan okursan fena olmaz.
farklı domainler için farklı id'ler üretilir sanırım.
ancak yine de kendi çözümünüzü üretmek isterseniz $_SESSION['domain']="www.domain1.com"; dersiniz, sayfa ilk açıldığında buna yönelik bir kontrol yaparsınız.
proxy'yi düşünmemiştim; kafam iyice karıştı. aynı cookie iki farklı sitede kullanılmasın istiyorum ya zaten...
firefox'da ancak özel veriler temizlenince yeni id oluşuyor. ie6'da her yeni pencere için yeni id oluşuyor. her domain için yeniden üretilmesi de nasıl sağlanır bilmiyorum. benimkinde olmuyor.
eskiden cookie kullanıyordum. session daha güvenli yazıyor kitaplarda filan. ama iki gündür içinden çıkamıyorum.
"peki, aynı kullanıcının, aynı serverda barınan iki siteden yalnızca birinde oturum açması nasıl sağlanır? id aynı olacak çünkü...?"
demişsin, amacın her sitenin kendi logini farklı olsun, birine login olan diğerine olamasın falan. ama session id'leri aynı olsun. bu mudur? değilse nedir? bizde çare tükenmez, harzem php consulting insurance anonim limited şeyşi.
efendim, amacımı uzun uzun anlatayım en iyisi.
kullanıcıların kendilerine has kullanıcı adı ve parolalarıyla ulaşabildikleri bir sayfa istiyorum. "üyelik sistemi" yani.
bunu yaparken, biri başka birinin hesabına giremesin. ayrıca, bir kullanıcı aynı serverda, aynı programcının elinden çıkma iki siteye de aynı kimlik bilgileriyle (bile) üye ise, bunların login bilgileri birbirine karışmasın; hangisine girmek istiyorsa sadece ona girebilsin. ikisine de girecekse, ayrı ayrı login olması gereksin yani.
güvenlik önemli.
aynı sunucuda aynı login bilgileriyle bile olsa zaten iki farklı site varsa ikisine de ayrı ayrı login olmak gerekir. birinin session'ı diğerini tutmaz. sen bir üyelik sistemi yaz, aynı sunucu üzerinde 10 tane siteye kur, her biri birbirinden farklı çalışır. en kötü ihtimalle $_SESSION['sessionid'] = md5(rand().microtime()); olarak kullanırsın güvenmiyorsan.
hosting işi yapıyorum bir yandan, 90+ tane forum barındırıyorum, hepsi aynı sunucuda ve üyelik gerekiyor, ama üyelikler hiç karışmıyor. merak etme.
deniyorum, deniyorum, olmuyor.
firefox'ta özel verileri temizlemedikçe, her sekmede, her pencerede aynı id var.
dediğiniz gibi sorun teşkil etmeyecek bir şeydir belki. ama ben beceremedim. neyse, denemeye devam ediyorum. ayrıca, dediğiniz proxy sorunu nasıl çözülecek, çok gözüm korktu.
teşekkür ederim cevaplar için.
"firefox'ta özel verileri temizlemedikçe, her sekmede, her pencerede aynı id var."
Bu aynı domaine ait iki farklı pencerede mi yoksa farklı domainlerin pencerelerinde mi?
kendi bilgisayarıma wamp kurdum. apache filan kuruyor bu, biliyorsunuzdur.
buradaki farklı dizinlerde dosyalar.
arkadaşım şunu baştan söylesene local wamp diye :)
localde tek domain vardır, "localhost" adında. o yüzden o domainin içindeki tüm klasörler aynı domaine ait kabul edilir, ve sessionlar aynı olur.
sana gerçek bir sunucu lazım bu tip bir test için. var mı local olmayan bir hosting hesabın? yoksa mahkeme size bir tane hesap açacaktır.
eveet, ben de yeni fark ettim :)
peki subdomainlerde bu sorun yine olacak mı? :D
Subdomainlerde farklı olur (en azından ayarı vardı cookieler için). Eğer olmazsa, ayrı cPanel hesapları olarak bile açabilirsin subdomainleri, o zaman kesin farklı olur.
server yönetmeyeceğim ki, sadece programlama ile uğraşıyorum.
tekrar teşekkür ederim cevaplar için, çok zamanınızı aldım.