CodeIgniter ile Admin Girişli Basit CRUD Uygulaması: Ekleme, Listeleme, Güncelleme ve Silme
CodeIgniter, PHP dünyasının hafif ve öğrenmesi kolay MVC çatılarından biridir. Bu rehberde, giriş yapmış bir yöneticinin kayıt ekleyebildiği, listeleyebildiği, güncelleyebildiği ve silebildiği küçük bir yönetim paneli kuracağız. Örnek, CodeIgniter 3 sürümüne göre hazırlanmıştır; aynı mantık başka tablolara ve senaryolara da uygulanabilir.
1. Yapılandırma
application/config klasöründeki dosyalarda birkaç temel ayarı yapıyoruz:
- config.php: Adres ve URL yapısı için temel ayarlar.
- autoload.php: Sık kullanılan kütüphaneleri her sayfada tekrar yüklememek için otomatik yüklemeye alıyoruz.
- database.php: Veritabanı sunucusu, kullanıcı adı, parola ve veritabanı adı burada tanımlanır.
- routes.php: Uygulama açıldığında çalışacak varsayılan controller belirlenir.
// config.php
$config['base_url'] = 'http://localhost/code/';
$config['index_page'] = '';
// autoload.php
$autoload['libraries'] = array('database', 'session', 'form_validation');
$autoload['helper'] = array('url');
// routes.php
$route['default_controller'] = 'Anasayfa';
Veritabanı, oturum ve form doğrulama kütüphanelerini otomatik yüklemek, her controller içinde ayrıca çağırma zahmetinden kurtarır. url yardımcısı ise base_url() gibi adres fonksiyonlarını kullanılabilir yapar.
2. Controller ve Oturum Kontrolü
Ana controller'ın index metodu, kullanıcının oturum açıp açmadığına bakar. Oturum varsa yönetim sayfasına, yoksa giriş formuna yönlendirir:
class Anasayfa extends CI_Controller {
public function index() {
if (empty($this->session->username)) {
$this->load->view('login');
} else {
redirect('admin');
}
}
}
3. Giriş Formu ve Doğrulama
Giriş formu kullanıcı adı ve parolayı POST ile bir LoginControl metoduna gönderir. Bu metotta önce form_validation kütüphanesiyle alanların boş olmadığı kontrol edilir. Doğrulama geçerse bilgiler modele iletilir ve veritabanında eşleşen bir kayıt aranır. Eşleşme varsa session->set_userdata() ile kullanıcı adı oturuma yazılır, yoksa kullanıcı tekrar giriş sayfasına döner.
Güvenlik notu: Örnekteki gibi parolaları düz metin saklamayın. Gerçek projelerdepassword_hash()vepassword_verify()kullanın, ayrıca CSRF korumasını etkinleştirin.
4. Model Katmanı
Veritabanı işlemlerini tek bir modelde toplamak kodu düzenli tutar. Model; ekle, listele, getir, guncelle ve sil metotlarını içerir. CodeIgniter'ın Query Builder yapısı sayesinde SQL yazmadan işlem yapabilirsiniz:
class Verimodel extends CI_Model {
public function ekle($veri) { return $this->db->insert('users', $veri); }
public function listele() { return $this->db->get('users')->result_array(); }
public function getir($id) { return $this->db->get_where('users', array('id' => $id))->row_array(); }
public function guncelle($id, $v) { $this->db->where('id', $id); return $this->db->update('users', $v); }
public function sil($id) { $this->db->where('id', $id); return $this->db->delete('users'); }
}
5. Kayıt Ekleme, Listeleme, Düzenleme ve Silme
Yönetim sayfasında bir kayıt formu bulunur; form kaydet metoduna gönderilir ve model üzerinden users tablosuna yeni satır eklenir. listele metodu modelden gelen dizileri bir view'a aktarır; view her satır için bir Düzenle ve bir Sil bağlantısı üretir. Bu bağlantılardaki kayıt numarası, $this->uri->segment() ile okunarak ilgili model metoduna iletilir. Güncelleme işlemi de aynı şekilde önce kaydı getir ile forma doldurur, ardından gönderilen değerlerle guncelle metodunu çalıştırır.
6. Çıkış İşlemi
Çıkış için oturum session->sess_destroy() ile temizlenir ve kullanıcı giriş sayfasına yönlendirilir.
Sonuç
Bu yapı, CodeIgniter'daki controller, model ve view ayrımını ve oturum yönetimini kavramak için iyi bir başlangıçtır. Aynı iskeleti; ürün, duyuru veya müşteri kaydı gibi farklı tablolara uyarlayarak kendi yönetim panelinizi geliştirebilirsiniz. Kurumsal ihtiyaçlarınıza yönelik özel yazılım geliştirme için bizimle iletişime geçebilirsiniz.