İndir

Codeigniter ile ilglili örneklerimize devam ediyoruz. Benim gibi hala öğrenme aşamasında olan arkadaşlara fikir vermesi için kullanıcı kayıt ve giriş işlemlerinden oluşan bir örnek yapacağız. Neler yapacığımızı listeleyelim.

  • Kullanıcı Girişi
  • Kullanıcı Çıkış
  • Yeni Kullanıcı Kaydı

Oluşturulacak Dosyalar

Controller Dosyası

  • kullanici.php

Model Dosyası

  • kullanici_model.php

View Dosyaları

  • kullanici_view.php
  • kullanici_giris_view.php
  • kullanici_kayit_view.php

View dosyalarımızı view->kullanici klasörü altına oluşturuyoruz. 

view-dosyalari

İlk olarak model dosyamızı oluşturuyoruz.

kullanici_model.php

<?php

/**
 * Kullanici Model sınıfı
 *
 * @author Alexander
 */
class kullanici_model extends Model {

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

    function kullanici_ekle($kullanici_adi,$parola,$email)
    {
        $sql = "INSERT INTO demo_kullanici(kullanici_adi, parola, email) VALUES(?,?,?)";
        $this->db->query($sql, array($kullanici_adi,$parola,$email));

        if ( $this->db->insert_id() > 0 )
            return $this->db->insert_id();

        return FALSE;
    }

    function kullanici_adi_parola_ile_al($kullanici_adi,$parola)
    {
        $sql = "SELECT * FROM demo_kullanici WHERE kullanici_adi=? AND parola=?";
        $query = $this->db->query( $sql, array($kullanici_adi, $parola ));

        if( $query->num_rows() > 0 )
            return $query->row();

        return FALSE;
    }

    function kullanici_al($ozellik,$deger)
    {
        $sql = "SELECT * FROM demo_kullanici WHERE $ozellik=?";
        $query = $this->db->query( $sql, $deger);

        if( $query->num_rows() > 0 )
            return $query->result();

        return FALSE;
    }
}

Model dosyamızda bulunan fonksiyonların açıklamalarını isterseniz controller dosyamızdaki kullanımları ile açıklayalım. Sırada controller dosyamız var.

kullanici.php

İlk olarak index fonksiyonumuzu oluşturuyoruz. Kullanıcı giriş yapmışsa hoşgeldiniz mesajını ekrana yazdırır, eğer kullanıcı giriş yapmamışsa giriş sayfasına yönlendirir.

function index()
{
	if( !class_exists('CI_Session') ) $this->load->library('session');

	if( $this->session->userdata('giris') )
	{
		$data['kullanici_adi'] = $this->session->userdata('kullanici_adi');
	}
	else
	{
		redirect(site_url('kullanici/kullanici_giris'));
	}

	$data['icerik'] = $this->load->view('kullanici/kullanici_view', $data, TRUE);
	$this->load->view('tema', $data);
}

Kullanıcı giriş formunu ekrana getiren kullanici_giris fonksiyonumuzu ekliyoruz.

function kullanici_giris()
{
	$data['icerik'] = $this->load->view('kullanici/kullanici_giris_view', '', TRUE);
	$this->load->view('tema', $data);
}

Kullanıcı giriş formundan gelen bilgileri kontrol edip eğer böyle bir kullanıcı veri tabanında varsa hoşgeldin mesajının gösterildiği index fonksiyonuna yönlendiren "giris_yap" fonksiyonuna geçiyoruz. Aksi taktirde ekrana uyarı verir. Parolamızı karşılaştırırken kayıt yaparken parolamızı şifrelediğimiz için kullanıcıdan gelen parola bilgisini aynı şekilde şifreleyip daha sonra model fonksiyonuna gönderiyoruz. "kullanici_adi_parola_ile_al" adlı model fonksiyonumuz gelen kullanıcı adını ve parolayı veri tabanında sorgulayarak eğer böyle bir kullanıcı varsa kullanıcı bilgilerini dönderir, kullanıcı bulunamazsa "FALSE" değerini dönderir.

Giriş yapılamadığında veya bilgiler istediğimiz formatta gelmediği zaman ekrana uyarı vermek için session kütüphanesinin "set_flashdata" fonksiyonu ile sessionda uyarıyı tutup bir sonraki ekranda yazdırırız. Yazdırma kısmı view dosyasında yapılmaktadır.

function giris_yap()
{
	$this->load->model('kullanici_model');

	$form_kural = array(
		array(
			'field' => 'kullanici_adi',
			'label' => 'Kullanıcı Adı',
			'rules' => 'trim|required|min_length[6]|max_length[12]|alpha_numeric|xss_clean'
		),
		array(
			'field' => 'parola',
			'label' => 'Parola',
			'rules' => 'trim|required|min_length[6]|max_length[12]|alpha_numeric|xss_clean'
		)
	);

	if( !class_exists('CI_Form_validation') )
		$this->load->library('form_validation');

	$this->form_validation->set_rules($form_kural);

	if( $this->form_validation->run() === TRUE )
	{
		$kullanici_adi = $this->input->post('kullanici_adi');
		$parola = md5(sha1($this->input->post('parola')));

		$kullanici = $this->kullanici_model->kullanici_adi_parola_ile_al($kullanici_adi, $parola);

		if( !$kullanici )
		{
			$this->session->set_flashdata('hata', 'Giriş başarısız');
			redirect(site_url('kullanici/kullanici_giris'));
		}
		else
		{
			if( !class_exists('CI_Session') ) $this->load->library('session');

			$session_bilgileri = array(
				'kullanici_adi' => $kullanici->kullanici_adi,
				'giris' => TRUE
			);

			$this->session->set_userdata($session_bilgileri);
			redirect(site_url('kullanici'));
		}
	}

	$this->session->set_flashdata('hata', 'Bilgileri eksiksiz giriniz.');
	redirect(site_url('kullanici/kullanici_giris'));
}

Kullanıcı girişinin yapıldığı fonksiyonumuzun neler yaptığını daha iyi anlamanız için giriş formunun ekran çıktısına bakabilirsiniz. 

giriş

Yukarıdaki resimde de gördüğünüz gibi alt kısımdaki yeni kayıt linkine tıklandığında kullanıcı kayıt sayfasına yönleneceksiniz. Kullanıcı kayıt ekranını "kullanici_kayit" fonkiyonumuz ile ekrana getiriyoruz.

function kullanici_kayit()
{
	$data['icerik'] = $this->load->view('kullanici/kullanici_kayit_view', '', TRUE);
	$this->load->view('tema', $data);
}

Kullanıcı kayıt formundan gelen bilgileri "form_validation" sınıfı yardımı ile kontrol edip eğer bilgiler doğru girilmişse model fonksiyonumuza bilgieri gönderip kullanıcıyı veri tabanına kaydeden "kullanici_ekle" fonksiyonumuzdur.

function kullanici_ekle()
{
	$this->load->model('kullanici_model');

	$form_kural = array(
		array(
			'field' => 'kullanici_adi',
			'label' => 'Kullanıcı Adı',
			'rules' => 'trim|required|min_length[6]|max_length[12]|alpha_numeric|xss_clean|callback_kullanici_adi_kontrol'
		),
		array(
			'field' => 'parola',
			'label' => 'Parola',
			'rules' => 'trim|required|min_length[6]|max_length[12]|matches[parola2]|alpha_numeric|xss_clean'
		),
		array(
			'field' => 'parola2',
			'label' => 'İkinci parola bilgisi',
			'rules' => 'trim|required|min_length[6]|max_length[12]|alpha_numeric'
		),
		array(
			'field' => 'email',
			'label' => 'Email',
			'rules' => 'trim|required|valid_email|xss_clean|callback_email_kontrol'
		)
	);

	if( !class_exists('CI_Form_validation') )
		$this->load->library('form_validation');

	$this->form_validation->set_rules($form_kural);
	$this->form_validation->set_error_delimiters('<div class="error">', '</div>');
	$this->form_validation->set_message('required', '%s bilgisini girmelisiniz.');
	$this->form_validation->set_message('matches', 'Parolalar eşleşmiyor.');
	$this->form_validation->set_message('valid_email', 'Geçerli email adresi giriniz.');
	$this->form_validation->set_message('kullanici_kontrol', 'Girdiğiniz kullanıcı adı daha önce kullanılmış!');

	if( $this->form_validation->run() === TRUE )
	{
		$kullanici_adi = $this->input->post('kullanici_adi');
		$parola = md5(sha1($this->input->post('parola')));
		$email = $this->input->post('email');

		if( $this->kullanici_model->kullanici_ekle($kullanici_adi, $parola, $email) )
		{
			$this->session->set_flashdata('mesaj', 'Kullanıcı kaydı başarıyla gerçekleştirildi.');
			redirect(site_url('kullanici/kullanici_kayit'));
		}
	}

	$data['icerik'] = $this->load->view('kullanici/kullanici_kayit_view', '', TRUE);
	$this->load->view('tema', $data);
}

Kullanıcıdan gelen bilgiler için kurallar tanımlarken tanımladığımız "callback_kullanici_adi_kontrol" , "callback_email_kontrol" kuralları ile kullanici controller'ın içindeki "kullanici_adi_kontrol" ve "email_kontrol" fonksiyonlarını çağırmış oluyoruz.

Codeigniter ile form kontrol kuralları tanımlarken kendi fonksiyonlarımızı kullanmak istersek fonksiyona adının önüne "callback_" ön adını ekliyerek kural olarak tanımlayabiliriz. Daha detaylı bilgi için tıklayınız

Bu fonksiyonlarımızı ekleyelim.

function kullanici_adi_kontrol($kullanici_adi)
{
	if( $this->kullanici_model->kullanici_al('kullanici_adi', $kullanici_adi) )
	{
		$this->form_validation->set_message('kullanici_adi_kontrol', 'Girdiğiniz kullanıcı adı daha önce kullanılmış.');
		return FALSE;
	}

	return TRUE;
}

function email_kontrol($email)
{
	if( $this->kullanici_model->kullanici_al('email', $email) )
	{
		$this->form_validation->set_message('email_kontrol', 'Girdiğiniz email adresi daha önce kullanılmış.');
		return FALSE;
	}

	return TRUE;
}

Kullanıcı kayıt formunun bulunduğu sayfamızın ekran görüntüsü. 

Son olarak kullanıcı çıkış yapacağı zaman çalışacak olan fonksiyonumuzu yazıyoruz.

function cikis_yap()
{
	$this->session->sess_destroy();
	redirect('kullanici');
}

Kullanıcı başarılı bir şekilde giriş yaptığı zaman ekrana hoş geldin mesajımızı yazdırıyoruz :). 

View dosyalarının detayına girmeyeceğim uygulama dosyaları indirip view dosyalarına bakabilirsiniz.

Uygulamanın veri tabanı dosyası indirdiğiniz dosyada mevcuttur.

Uygulamanın sorunsuz çalışması için session, database ve form_validation kütüphaneleri ile url helper'ın otomotik yüklenmesi gerekmektedir.

Sonuç

Sonuç olarak Codeigniter ile kullanıcı kayıt ve giriş işlemlerinden oluşan küçük bir uygulma yaptık faydalı olması dileğiyle iyi çalışmalar.

İndir