8 Şubat 2014 Cumartesi

Codeigniter ile Kayıtlı Kullanıcı Bilgilerine Ulaşma

Codeigniter ile veritabanı işlemlerini gerçekleştirmek için $this->db objesi kullanılır. Bu obje ile application/config/database.php dosyasında tanımladığımız veritabanı içindeki tablolara ulaşabilir ve bu tablolar üzerinde insert - select - update - delete işlemleri yapabiliriz.

Örneğin , kullanıcı girişinin olduğu bir web sitemizde, kullanıcıdan kullanıcı adı (username) ve parola (password) bilgilerini alarak, veritabanındaki bir tablodan (users) bu kullanıcının tüm bilgilerini çektiğimizi düşünelim.

Bunun için öncelikle bir Controller'ımız olması gerekiyor. User olarak adlandıralım bunu. Controller'ımız içinde ise bu kullanıcının yapabileceği işlemler için fonksiyonlar - metotlar tanımlamamız gerekir. User Controller'ı içindeki metodumuz ise login() olsun.

Controller sınıfımız yapı olarak aşağıdaki gibi olacaktır.

if (!defined('BASEPATH')) {
    exit('No direct script access allowed');
}

class User extends CI_Controller {

    public function __construct() {
        parent::__construct();
    }

    public function index() {
        
    }

    public function login() {

    }
}

Şimdi login metodu içinde kullanıcının bir form ile girdiği bilgileri alıp, veritabanından kullanıcı bilgilerini çekelim. Öncelikle verileri çekeceğimiz bir Model sınıfı oluşturalım.

class User_model extends CI_Model{
    
    public function __construct() {
        parent::__construct();
    }

}

Sonra bu Model sınıfını Controller sınıfına dahil edelim ve kullanıcı bilgilerini alalım.
 
    public function login() {
        $this->load->model('user_model');

        /*
         * Formdan POST ile gelen kullanıcı adı ve şifre
         * değişkenlere aktarılıyor
         */

        $u_name = $this->input->post('username', TRUE);
        $u_pass = $this->input->post('password', TRUE);
    }

Şimdi Model sınıfında getUser( ) metodu tanımlayalım. Veritabanında kullanıcı şifresini sha1 algoritamasına göre sakladığımızı düşünelim. Bunun için kullanıcının girdiği şifreyi hemen sha1 algoritamasından geçirmeliyiz. Daha sonra SQL cümleleriyle kullanıcı bilgilerini users tablosundan çekiyoruz.

class User_model extends CI_Model{
    
    public function __construct() {
        parent::__construct();
    }
    
    public function getUser($userName, $password){
        
        $password = sha1($password);
        
        $this->db->select('*');
        $this->db->from('users');
        $this->db->where('user_username',$userName);
        $this->db->where('user_password',$password);
                
        return $this->db->get()->result();
    }

}

Tanımladığımız getUser( ) metodu bize dizi döndürecektir. Dönen bu değerleri Controller içindeki login( ) metodunda bir değişkene aktarıp, oluşturacağımız View sayfasına bu değişkendeki verileri göndereceğiz.
 
    public function login() {
        $this->load->model('user_model');
        $u_name = $this->input->post('username', TRUE);
        $u_pass = $this->input->post('password', TRUE);

        //Model sınıfının getUser metodu çağrılıyor

        $data['info'] = $this->user_model->getUser($u_name, $u_pass);
        $this->load->view('user_info_view', $data);
    }

Kullanıcı bilgilerini göstereceğimiz user_info_view dosyasında ise aşağıdaki gibi kullanıcı bilgilerine ulaşabiliriz.
/*
* Veritabanından gelen data dizi şeklinde
* olduğu için döngü ile kullanıcıya ulaşılır.
* Ayrıca kullanıcı bilgisi bir objedir.
*/

foreach ($info as $user) {
    $id = $user->id;
    $name = $user->name;
    $username = $user->username;
    $email = $user->email;
    $user_role = $user->role;
}       

Kullanıcı bilgilerini bir tabloya ya da div içine yazarak gösterebiliriz.

Hiç yorum yok :

Yorum Gönder