sessionların saklandığı dosya boyutu küçük ise yeni sessionları yazmıyor olabilir veya yeni gelen sessionları bir öncekinin üzerine yazıyor olabilir. bu da en son giren kişinin oturumunun bir öncekinde görünmesine neden olabilir.
php.ini dosyasında aşağıdaki parametreleri kontrol edin.
session.save_path =
session.cookie_secure =
session.use_cookies =
session.use_only_cookies =
session.name =
session.entropy_length =
session.cache_limiter =
session.cache_expire =
session.hash_function =
Bunları inceledim evet. Standart ayarlar mevcut. Herhangi bir problem göremedim.
Problemi net anlayabilmek için kullanıcı değişirken sabit bir kullanıcıyı mı alıyor? Yoksa rastgele mi geliyor?
Rastgele
if( isset($_POST["giris_onay"]) && $_POST["giris_onay"] == "2" ) { // strip_tags(html kaldır), trim(boşluk kaldır), dbtrim(tırnak sorunu) $username = strip_tags(trim(dbtrim($_POST["username"]))); $password = strip_tags(trim(dbtrim($_POST["password"]))); // şifrelenmiş parola $hash = create_password($password); if ( (strlen($username)>=1) and (strlen($hash)>=1) ) { if( dbcount("id", "uyeler", "username='".($username)."' AND password='".($hash)."'") <= 0 ) { $mesaj = "<div id=\"blok\"><p><font style=\"color:red;\">Böyle bir kullanıcı bulunmuyor!</font></p></div>"; } else if( dbresult("SELECT onaylimi FROM uyeler WHERE username='".($username)."' AND password='".($hash)."'") != '1' ) { $mesaj = "Hesabınızı aktif etmelisiniz! E-Posta adresinizi kontrol edin."; } else if (dbresult("SELECT ban FROM uyeler WHERE username='".($username)."' AND password='".($hash)."'") == '1') { $mesaj = "<div id=\"blok\"><p><font style=\"color

range;\">Hesabınız engellenmiştir.</font></p></div>"; } else { // giriş yap $result = dbquery("SELECT * FROM uyeler WHERE username='".($username)."' AND password='".($hash)."'"); $uyebilgi = $result->fetch_assoc(); // cookie set - 7 günlük $_SESSION['login'] = $_POST["username"]; $_SESSION['password'] = $hash; if ( (strlen($_SESSION['login'] )<=0) and (strlen( $_SESSION['password'])<=0) ) { session_destroy(); header("Location: /login"); //login nereyse die; } // üye sayfasına gönder header("Location: /home"); } else { session_destroy(); header("Location: /login"); //login nereyse die; } }
if( isset($_SESSION['login']) ) { $giris_yapildimi = 'evet'; $sl= $_SESSION['login']; $sp= $_SESSION['password']; if ( (strlen($sl )<=0) and (strlen( $sp)<=0) ) { session_destroy(); header("Location: /login"); //login nereyse exit; } $result = dbquery("SELECT * FROM uyeler WHERE username='".($sl)."' AND password='".($sp)."'"); $uyebilgi = $result->fetch_assoc(); if ($uyebilgi['username'])!== $_SESSION['login']) //loginin usernamei tuttuğunu varsaydım. Değilse uygun biçimde değiştirin. Buraya password de eklenebilir. session_destroy(); header("Location: /login"); //login nereyse exit; } else { $giris_yapildimi = 'hayir'; $uyebilgi = array(); session_destroy(); header("Location: /login"); //login nereyse die; }
Sonradan eklediğim AND'leri OR olarak değiştirirsiniz. Düzenleme yapınca bozuk görünüyor.
Deneyeceğim teşekkürler