• 01-04-2015, 21:49:03
    #1
    Arkadaşlar bi sessionda birden çok veri tutuyorum

    echo $_SESSION['userCakeUser']['user_id'];
    Fatal error: Cannot use object of type loggedInUser as array in /home/thybitirme/public_html/is/user.php on line 212

    Hatası veriyor

    var_dump kodu:

    NULL email = abc@gmail.com
    hash_pw = 6234342a422b20cnsgfa6f3544fd6255fa0a16a4fsh42f5d9d 8e5b3
    user_id = 16
    title = Yönetici
    displayname = TahaG
    username = tahagg

    sonucunu veriyor

    ben şimdi user_id'yi bastırmak istiyorum sadece nasıl yapabilirim ?
  • 01-04-2015, 22:10:53
    #2
    loggedInUser nasıl bir yapı bilmiyorum ama şöyle bir şey deneyebilirsiniz.
    En son sessiona atamadan önce
    $loggedInUser->updateLastSignIn();
    verisini json_encode() ile json'a çevirip ondan sonra session'a atarsınız.
    Ardından okumak istediğinizde ise;
    $data = $_SESSION["userCakeUser"];
    $data = json_decode($data);

    şeklinde yapıp deneyin.

    Bunlardan önce bi session_id('userCakeUser'); silip deneyin bunu neden koydunuz anlamadım.
  • 02-04-2015, 01:05:50
    #3
    ylv
    Üyeliği durduruldu
    tahagg adlı üyeden alıntı: mesajı görüntüle
    Arkadaşlar bi sessionda birden çok veri tutuyorum

    Session'ı üye girişi sayfasında böyle oluşturuyorum:
    					$loggedInUser = new loggedInUser();
    					$loggedInUser->email = $userdetails["email"];
    					$loggedInUser->user_id = $userdetails["id"];
    					$loggedInUser->hash_pw = $userdetails["password"];
    					$loggedInUser->title = $userdetails["title"];
    					$loggedInUser->displayname = $userdetails["display_name"];
    					$loggedInUser->username = $userdetails["user_name"];
    					
    					//Update last sign in
    					$loggedInUser->updateLastSignIn();
    					$_SESSION["userCakeUser"] = $loggedInUser;
    Normalde $loggedinuser->user_id; şeklinde çekiyorum fakat başka bir dizinde başka bir scriptte kullanıcı bilgilerini bastırmam lazım


    session_id('userCakeUser');
    session_start();
    echo $_SESSION['userCakeUser']['user_id'];
    session_id('userCakeUser');
    session_start();
    echo $_SESSION['userCakeUser'][2];
    Fatal error: Cannot use object of type loggedInUser as array in /home/thybitirme/public_html/is/user.php on line 212

    Hatası veriyor

    var_dump kodu:

    NULL email = abc@gmail.com
    hash_pw = 6234342a422b20cnsgfa6f3544fd6255fa0a16a4fsh42f5d9d 8e5b3
    user_id = 16
    title = Yönetici
    displayname = TahaG
    username = tahagg

    sonucunu veriyor

    ben şimdi user_id'yi bastırmak istiyorum sadece nasıl yapabilirim ?


    $taha = $_SESSION['userCakeUser']; 
    $taha->user_id;
    Bu da hata veriyor başka şeylerde denedim bir türlü yapamadm nedir bunun çözümü ?
    $_SESSION["userCakeUser"] = $loggedInUser;

    userCakeUser isimli bir session oluşturuyorsun ve session'a değer olarak atadığın $loggedInUser 'in değişken tipi object.

    echo $_SESSION['userCakeUser']['user_id'];

    dizi olarak almaya çalışıyorsun hatan burada.

    echo $_SESSION['userCakeUser']->user_id;

    kontrolü de unutmayın.

    if (is_object($_SESSION['userCakeUser'])) { ... işlemler ... }


    veya..

    object göndermek yerine

    $_SESSION["userCakeUser"] = $loggedInUser;

    satırını

    $_SESSION["userCakeUser"] = get_object_vars($loggedInUser);

    olarak değiştirin.
  • 02-04-2015, 01:46:29
    #4
    çok teşekkür ederim
  • 02-04-2015, 01:58:30
    #5
    ylv
    Üyeliği durduruldu
    if (isset($_SESSION['userCakeUser']) && is_object($_SESSION['userCakeUser'])) {

    } else {
    //giriş yapmamış
    }


    kontrolü biraz daha derinleştirirsen

    if (isset($_SESSION['userCakeUser']) && is_object($_SESSION['userCakeUser']) && property_exists($_SESSION['userCakeUser'],'user_id')) {
  • 02-04-2015, 11:32:51
    #6
    ylv adlı üyeden alıntı: mesajı görüntüle
    if (isset($_SESSION['userCakeUser']) && is_object($_SESSION['userCakeUser'])) {

    } else {
    //giriş yapmamış
    }


    kontrolü biraz daha derinleştirirsen

    if (isset($_SESSION['userCakeUser']) && is_object($_SESSION['userCakeUser']) && property_exists($_SESSION['userCakeUser'],'user_id')) {
    peki hocam bu user admin mi değil mi diye kontrol ederken mesela $_SESSION['userCakeUser']->permission=2 diye kontrol etsem güvenlik sıkıntısı çeker miyim ?
  • 02-04-2015, 14:09:00
    #7
    Üyeliği durduruldu
    tahagg adlı üyeden alıntı: mesajı görüntüle
    peki hocam bu user admin mi değil mi diye kontrol ederken mesela $_SESSION['userCakeUser']->permission=2 diye kontrol etsem güvenlik sıkıntısı çeker miyim ?
    id'yi elinden geldiği kadar açık tutmamaya bak.
    mesela get ile id alırken, session'a atarken vs vs. (fonksiyon : intval)
  • 02-04-2015, 16:02:14
    #8
    ylv
    Üyeliği durduruldu
    tahagg adlı üyeden alıntı: mesajı görüntüle
    peki hocam bu user admin mi değil mi diye kontrol ederken mesela $_SESSION['userCakeUser']->permission=2 diye kontrol etsem güvenlik sıkıntısı çeker miyim ?
    güvenlik sıkıntısı o kontrol için çekmezsiniz.

    session bilgilerini veritabanından aldığınız için veritabanı sql sorgunuza injection yapılmamasını sağlıcaksınız. gpc yani get post cookie dışardan gelen tüm verileri kontrol ediceksiniz, filtreleme yapıcaksınız.

    session oturum bilgileri default olarak tmp dizininde tutulmaktadır. buna müdahale edilebilir mi dersen, sunucuna sızma olmadan imkansız. Ama sen tmp dizinini değiştirip sitenin public dizininde tanımlarsan (public_html,www vs) o zaman riske atarsın, extra bir session dizini için güvenlik önlemi almaz isen.

    php session bilgileri default olarak metin dosyasında tutar. güvenlik, ektra başka şeyler için sen session verilerini veritabanı ram vs üzerinde saklamak istersen php buna da imkan sağlamaktadır.

    http://php.net/manual/en/function.se...ve-handler.php