nasıl ben CodeIgniter'daki tek oturum dizi indeks değerini sıfırlamak mı?

5 Cevap php

Bu gibi görünen bir dizi döndürür bir kullanıcı modeli kullanılarak:

$user_data['display_name'] = "John Doe";

$user_data['avatar'] = ./images/user144.jpg";

i kullanarak benim oturumu oluşturmak $this->session->set_userdata('user_data',$user_data);

şimdi ben kullanıcı kendi avatar değiştirmek izin başka bir denetleyici ise,

nasıl ben oturum değişken o ilişkili değiştirebilirsiniz?

like $this->session->set_userdata('user_data["avatar"]',$new_avatar); just wont work right?

hee yardım için teşekkürler ...

5 Cevap

Kodunuzu bir bakış bakarak, ben bu konuda gitmek için en iyi yolu, verileri unset ve sıfırlamak için olduğunu tahmin ediyorum.

Use $this->session->unset_userdata('thesessiontounset'); Then set it back up with the new information and old.

Session-> set_userdata () fonksiyonu sadece bir anda tek bir tuşa değiştirmenize izin verir. Senin durumunda anahtar yani ne yapmaya çalışıyorsun, bunu yapmak için çalışıyorsanız şekilde mümkün olmayan bir dizi ifade eder.

Ben oturumu güncellerken olduğumda böyle bir şey çalıştırın.

//Create or setup the array of the fields you want to update.
$newFields = array('avatar' = > 'image01.png');

//Check to see if the session is currently populated. 
if (!is_array($this->session->userdata('abc'))){
    //...and if it's not - set it to a blank array
    $this->session->set_userdata('abc',array());
}

//Retrieve the existing session data
$existing_session = $this->session->userdata('abc');

//Merge the existing data with the new data
$combined_data = array_merge($this->session->userdata('abc'), $newFields);
//update the session
$this->session->set_userdata('abc',$combined_data);

More details on array_merge can be found here

Birinci kontrol ünitesi

$user_data['display_name'] = "John Doe";

$user_data['avatar'] = "./images/user144.jpg";

$this->session->set_userdata('user_data',$user_data);

İkinci denetleyici

$user_data = $this->session->userdata('user_data');

$user_data['avatar'] = $new_avatar;

$this->session->set_userdata('user_data', $new_avatar);

Bu biraz geç, ama başkasına faydalı olabilir, bu iş gibi görünüyor:

$this->session->userdata['user_data']['avatar'] = $new_avatar;
$this->session->userdata['other_data']['other'] = $other;
$this->session->sess_write();

Bu size 'sadece' bir ilave hat ve sadece CI kütüphanesi kullanarak, $_SESION['user_data']['avatar'] = $avatar ile yapmak gibi dizideki değerleri düzenlemek için izin verir.

Unset Session değişkeni için

$this->session->unset_userdata('avatar');   

Set Session değişkeni için

$this->session->set_userdata('avatar', '/images/user144.jpg"');