• 25-05-2020, 17:57:38
    #1
    Merhaba arkadaşlar, konumu ziyaret ettiğiniz için teşekkür ederim.

    Arkadaşlar, sorunu şöyle anlatayım, şimdi normal kullanıcıların giriş yapması için bir sayfamız var, birde yöneticinin admin paneline girmesi için gereken bir sayfa var. Buraya kadar hiçbir sorun yok ama mesela kullanıcı giriş yapıp çıktıktan sonra admin panelindeki SESSION da otomatik olarak kapanıyor, aynı şekilde admin panelindeki profilinden de çıkış yapınca kullanıcı SESSION kanapnıyor, SESSION lar birbirine karıştı. Bunun çözümü nedir?

    Güzel yorumlarınız için teşekkür ederim.

    Kodlar;

    <!-- Admin paneli giriş yapma kodları -->
    if (@$_POST["login"]) {
    
    $select = $db -> prepare("SELECT * FROM `users` WHERE userName = :userName AND userPass = :userPass ");
    $select -> execute(array('userName'=>$_POST['userName'],'userPass'=>md5($_POST['userPass'])));
    $row = $select -> fetch(PDO::FETCH_ASSOC);
    
    if ($row["authority"] == 1) {
    if ($row) {
    $_SESSION["girisKontrol"] = 1;
    $_SESSION["authorized"] = $_POST["userName"];
    header("Location:pages/index.php");
    return true;
    } else{
    header("Location:index.php?i=hata");
    return false;
    }
    }else{header("Location:index.php?i=yetkisizgiris");}
    }
    <!--Kullanıcı giriş yapma kodları -->
    if (@$_POST["login"]) {
    
    $select = $db -> prepare("SELECT * FROM `users` WHERE userName = :userName AND userPass = :userPass ");
    $select -> execute(array('userName'=>$_POST['userName'],'userPass'=>md5($_POST['userPass'])));
    $row = $select -> fetch(PDO::FETCH_ASSOC);
    
    if ($row["authority"] == 0) {
    if ($row) {
    $_SESSION["AccessControl"] = 1;
    $_SESSION["user"] = $_POST["userName"];
    header("Location:index.php");
    return true;
    } else{
    header("Location:login.php?i=hata");
    return false;
    }
    }else{header("Location:login.php?i=yetkisizgiris");}
    }
  • 25-05-2020, 18:00:24
    #2
    Üyeliği durduruldu
    Sessionlara farklı isimler verin. Yanı Admin ve normal üyelerin oturumlarını farklı isimler ile tutun
  • 25-05-2020, 18:00:32
    #3
    Muhtemelen çıkış yap sayfasında tüm sessionları kapatıyorsunuz. İndis değerlerine göre kapatırsanız sorun düzelicektir.
  • 25-05-2020, 18:01:44
    #4
    https://www.php.net/manual/tr/functi...on-destroy.php

    Makalesini incelemelisiniz. Bu arada @ bastırmaları yerine Try-Catch sistemine geçmeniz kodunuzun güvenirliğini arttırır.
  • 25-05-2020, 18:02:30
    #5
    Bluntk adlı üyeden alıntı: mesajı görüntüle
    Muhtemelen çıkış yap sayfasında tüm sessionları kapatıyorsunuz. İndis değerlerine göre kapatırsanız sorun düzelicektir.
    Evet hocam session_destroy() direk hepsinden çıkış yapıyor, PHP de kendimi geliştirmeye çalışıyorum ama bu indix mevzusunu bilmiyorum. Nasıl belirteceğiz. ÇOK TEŞEKKÜR EDERİM
  • 25-05-2020, 18:04:48
    #6
    Herhangi bir tarafta logout işleminde session_destroy yerine sadece ilgili sessionları silebilirsin. Veya logouttan önce üye ise admin tarafını, admin ise üye tarafını check edip, eğer session var ise destroy işleminden sonra yeniden oluşturabilirsin.
  • 25-05-2020, 18:06:47
    #7
    eycreative adlı üyeden alıntı: mesajı görüntüle
    Evet hocam session_destroy() direk hepsinden çıkış yapıyor, PHP de kendimi geliştirmeye çalışıyorum ama bu indix mevzusunu bilmiyorum. Nasıl belirteceğiz. ÇOK TEŞEKKÜR EDERİM
    $_SESSION['birDeger'] = 'atayacağın veri';
    
    //bunu silmek içinde sileceğin değeri belirterek alttaki gibi silebilirsin.
    
    unset($_SESSION['birDeger']);
  • 25-05-2020, 18:14:21
    #8
    PhYtOnX adlı üyeden alıntı: mesajı görüntüle
    $_SESSION['birDeger'] = 'atayacağın veri';
    
    //bunu silmek içinde sileceğin değeri belirterek alttaki gibi silebilirsin.
    
    unset($_SESSION['birDeger']);
    Hocam aynı şekilde iki yeri de değiştirdim ama yine aynı şekilde.
  • 25-05-2020, 18:26:59
    #9
    eycreative adlı üyeden alıntı: mesajı görüntüle
    Hocam aynı şekilde iki yeri de değiştirdim ama yine aynı şekilde.
    Degerleri aynı vermiyorsunuz dimi hocam?

    //Normal Kullanıcı İçin Örnek
    $_SESSION['normalKullanici'] = 'gelecek değer';
    
    //Admin Kullanıcı İçin Örnek
    $_SESSION['adminKullanici'] = 'gelecek değer';
    İki yere iki ayrı değer vermeniz lazım ve çıkış sayfasında session_destroy bunu kullanmayın. Bu sayfada bulunan tüm session oturumlarını kapatır. Kapatmak istediğinizi unset ile kapatın.