Codeigniter Dersleri – 21 – Yönetici Girişi ve Yönetici Alanı – Session
Herkese tekrar merhabalar, uzun bir aradan sonra bugün bir dersle daha sizlerleyim. Bugünkü dersimiz yine klasik codeigniter derslerinden olacak. Bahsedeceğimiz konu ise, kullanıcı giriş yapılabilecek bir giriş paneli, ancak giriş yapıldıktan sonra erişilebilecek bir kullanıcı veya yönetici alanı ve yeni kullanıcı kaydı. Ayrıca bu dersimizde sizlere session lardan bahsedeceğim.
İlk olarak size projenin bir kaç ekran görüntüsünü vereyim.
Giriş Panelimiz.
Kayıt panelimiz
İlk olarak view dosyamızı hazırlayalım, Bu dersimizde yine view dosyamız dinamik olacak ve header,footer ve main_content(ana kısım) bulunacak. Bunun için view klasörü altında includes adında bir klasör oluşturuyoruz ve içerisine footer.php, header.php, ve template.php adında 3 dosya oluşturuyoruz.
Template.php dosyamızın içerisi şu şekilde olacak.
Header ve footer dosyalarımıza ise klasik html kodlarını koyacağız. Header.php dosyamız şu şekilde,
ve footer.php dosyamızda şu şekilde olacak.
header dosyamızda bulunan aşağıdaki kodu biraz açalım
Şimdi burada bütün sayfalarda geçerli olacak bir css dosyasını projeye dahil ediyoruz. “echo base_url();” ile daha sonra belirleyeceğimiz projenin ana dizinine ulaşmış oluyoruz ve bu dizin altında bir css klasörü ve içerisinde style.css adında dosyamız olacak.
template.php dosyamızda footer ve header arasına main_content değişkenini koyarak, bu sayfayı controller dosyamızdan dinamik olarak yönetmeye çalışacağız. Yani hazırladığımız bütün sayfalar aynı şablonda olacak.
Ana şablonu hazırladıktan sonra şimdi geldi sıra login sayfamızı hazırlamaya, bunun için öncelikle login controllerini hazırlamamız lazım. İlk açılacak sayfa login sayfamız olması lazım. Bunun için şimdi controller altında login.php adında bir dosya oluşturuyoruz ve şu şekilde kodluyoruz.
Manuel olarak bu dosyayı yükledik ancak yüklediğimiz login_form.php dosyasını oluşturmadık. Gelin şimdi bu dosyayı oluşturalım.
Hemen klasik bir form oluşturuyoruz.
Giriş yapıldığında kullanıcıyı kontrol edecek bir fonksiyon hazırlamamız gerekiyor, bunu controller dosyamız olan login.php içinde hallediyoruz. Aşağıdaki şekilde bir fonksiyonu login.php dosyamıza ekliyoruz.
Tamam fonksiyonumuzu login.php içerisine kaydettik ama oradak çağırdığımız model dosyamızı hala oluşturmadık. Hemen models klasörü altına membership_model.php adında bir dosya oluşturup içerisine validate() fonksiyonunu yazıyoruz.
Hemen bir not düşeyim, normalde database fonksiyonlarını kullanabilmek için database kütüphanesini yüklememiz gerekiyordu, aynı şey session içinde geçerli . Bu library leri ister fonksiyonları kullandığımız yerde load ederiz, istersek benim şimdi yapacağım gibi autoload.php dosyamızdan otomatik load ederiz. Yukarıdaki fonksiyonu model dosyamıza ekledikten sonra gelin şimdi autolaod.php dosyamızı düzenleyelim. application/config/autoload.php dosyamızı açalım ve şu satırı bulalım
ve bu satırı şu şekilde düzenleyelim
Bu şekilde database ve session kütüphanelerini otomatik yüklemiş olduk. Session kütüphanesi yüklediğimizde kullanabilmek için config.php dosyamızda bulunan encryption_key ‘ e bir değer vermemiz gerekiyor.
İlk olarak application/config/config.php dosyamızda şu satırı buluyoruz.
ve burada kendimize göre bir key belirleyip tırnakların arasına yazıyoruz.
Hazır autoload.php den söz açılmışken, url ve formları oluştururken lazım olan helperlarıda yükleyelim.
autoload.php içerisinde şu satırı bulalım.
ve şu şekilde değiştirelim.
İnce ayarları da yaptıktan sonra gelin birde databaseimizi hazırlayalım.
membership adında bir tablo oluşturalım 6 alanlık. İsimleri ve türleri şu şekilde olsun.
id – int(11) auto_increment
firstname – varchar(25)
lastname – varchar(25)
username – varchar(25)
password – varchar(32)
email – varchar(50)
password türümüzün uzunluğu 32 olacak. Çünkü şifreyi md5 şifreleme yöntemi ile kaydedeceğiz ve bu yöntemde oluşan hash kodları her zaman 32 bit uzunluğundadır.
Konu biraz dağıldı gibi, hemen toparlıyorum. Şimdi kullanıcı doğru giriş yaptığında validate_credentials() fonksiyonunda da görüldüğü gibi members_area.php dosyasına yönlenecek. Bu dosyayıda hazırlayalım. Views klasörü altına members_area.php dosyasını oluşturalım ve şu şekilde dolduralım.
Burada gördüğünüz gibi birde logout butonu var. Bunuda çıkış yapmak için kullanacağız ve işlevi sessionu silmek olacak. login.php içine logout() fonksiyonun oluşturuyoruz ve şu şekilde kodluyoruz.
Aslında şu ana kadar sezonun(session) nimetlerinden faydalanamadık. Neden derseniz, eğer adres çubuğuna
“http://localhost/CodeIgniter_2.0.2/index.php/site/members_area”
yazar ve gidersek members area ya erişmiş olacağız. Halbuki giriş yapmamız gerekiyordu. İşte aslında bu sayfaya her erişilmek istendiğinde giriş yapmış kullanıcı varmı diye kontrol etmemiz gerekiyor. Ve burada devreye sezonlar (ya da oturumlar) giriyor.
Şimdi hem diğer bir controller dosyamız olan site.php dosyamızı hazırlayacağız hem de oturum kontrolü gerçekleştireceğiz.
Bunu da yaptıktan sonra çıkış yapmış bir kullanıcı direk olarak members_area ya erişemeyecek.
Bu arada session kaydetmeyi gördük, bütün sessionları silmeyi de logout fonksiyonunda gördük, peki tek bir sessionu silmek istersek ne yapacağız.
O zaman set_userdata yerine unset_userdata kullanacağız.
Buraya kadar login logout işlemleri session işlemleri yetkisiz erişim işlemlerini tamamladık. Bir sonraki dersimde yeni kullanıcı kaydı gerçekleştirip, css dosyamızı hazırlayacağız. İyi günler…
Bunlara da Göz Atmak İsteyebilirsiniz.
<<< Önceki: Qt ile Symbian Programlama Derslerimiz Başlıyor…
Sonraki: Codeigniter Dersleri – 22 – Yönetici Girişi ve Yönetici Alanı – Session – 2 >>>
Hocam merak ettigim birsey var Cikis yaptigimizda tekrar linki yazdigimda sayfa aciliyor Cookiesleri sildim denedim yine acildi bunu nasil engellerim.
site.php dosyasını benim yukarıda yazdığım gibi yazdınız mı, yani construct içinde is_logged_in() fonksiyonu çağrılıyor mu. Bu fonksiyon o sayfaya erişilmek istendiğinde login olmuş kullanıcı varmı diye kontrol ediyor.
sagolun hocam
Merhaba.Çok faydalı bir konu teşekkür ederim.
Size sormak istediğim soru,bu yaptığımız kodla sınırlamak istediğimiz sayfalara is_logged_in() fonksiyonunu koyarsak çalışır mı bunu mera etmiştim.teşekkürler.
Site.php içerisinden çağrılan bütün sayfalarda otomatik olarak is_logged_in() kontrolü yapılmaktadır. Ancak siz bu fonksiyonu direk view dosyası içerisinden çağırmak istiyorsanız, bunu library ile halletmeniz gerekecek.
Teşekkür ederim daha iyi anladım.Çok anlaşılabilir bir örnek olmuş sağolun.
üstad anlatım için saolasın emeğine sağlık. ben şunu merak ediyorum : sıradan bir site için bu framework yapısını ( codeigniter ) kullanmamın bana normal kullanımdan bir artısı olacak mıdır? yoksa sadece işi karmaşık hale mi getirmiş olacağım.
Merhaba Ahmet,
Normal siteden kastın nedir? Eğer çok iyi bir şekilde framework yapısını kavradıysanız, karmaşıklık size uzak bir terimse her türlü projede kullanabilirsiniz. Sonuçta iyi bildiğiniz için zaman kaybı yaşatmaz. Ancak static siteler için, yani içeriği çok değişken olmayan siteler için kullanmanın anlamı olduğunu söyleyemem. Örneğin bir firma tanıtım sitesi için frameworke gerek yoktur. Zaten bir kere yazarsınız çok değişiklik gerektirmez. Ancak içeriği değişken dinamik siteler için kullanmanız her türlü fayda sağlayacaktır. En önemlisi de güvenliktir. Bunların hepsini dikkate aldığımızda bu sorunun cevabı biraz size bağlıdır.
Çok hoş bir anlatım öncelikle teşekkürler…
Umarım anladığım nokta şu ; membership area ya direk yol yazıldığında ulaşamıyor çünkü redirect ile site controller ına gönderiliyor ve bu sayfa şifre girilmemişse atıyor.(umarım doğru anlamışımdır.. :))
Burda takıldığım nokta şu :
members alanımız birden fazla sayfadan oluşuyorsa hepsini site controllerına mı redirect etmek gerekecek.
view klasörümde 5-6 sayfam daha var .. ki onlaraa veri tabanından belli verileri çekerek direkt gönderiyordum.. umarım problemimi anlatabildim..
İhsan,
İzinsiz erişimleri engellemek için, bu kontrolün yapılması gerekmektedir. Site controllerını kullandığınızda bu işlem constructor içinde otomatik olarak yapılmaktadır. Farklı bir controller kullanırsanız onun constructor ınada yazmanız gerekmektedir.
Merhaba
form validate fonksiyonu localhostta çalışıyor fakat hostinge attığımızda şu hatayı veriyor :
A PHP Error was encountered
Severity: Notice
Message: Trying to get property of non-object
Filename: models/membership_model.php
Line Number: 12
bu hatanın sebebi ne olabilir .?
merhaba;
derslerinizi okurken şunu farkettim, view içinde de sıkça framework ün sunduğu fonksiyonlar kullanılıyor. tasarımın farklı frameworklere taşınabilmesini mümkün kılmak istersek bu durum sorun çıkarır mı?
Hocam benim pcde database oluşmadı veritabanı ismi ne oluyodu
Malesef giriş yapmıyor. sebebi ise model dosyasındak
$query->num_rows
şeklinde yazılmıs şu şekilde düzeltirsek çalısacaktır.
$query->num_rows()
Merhaba,
$this->load->view(‘includes/template’,$data);
yapınca
An Error Was Encountered
Unable to load the requested file: includes/template.php
hata aldım ancak kodu şu şekilde değiştirdiğimde :
$this->load->view(‘template’,$data);
ve ayrıca template.php yi şuşekilde değiştiriğmde:
load->view(‘header’);?>
load->view($main_content);?>
load->view(‘footer’);?>
çalıştı. Yani include ları kaldırdım. Neden böyle oldu?
Yorum Bırakın!
En Son Yazılanlar
Codeigniter Dersleri
Kategoriler
Teknoloji Haberleri
Android Dersleri
Arşiv
Sitemizin QR Kodu
Yeniliklerden İlk Sizin Haberiniz Olsun
KodMerkezi.Net Facebookta
En Çok Okunanlar
En Son Aranan Kelimeler
En Çok Oy Alanlar
Etiket Bulutu
İlginizi Çekecek Siteler
Arşiv
Yönetim
En Son Yapılan Yorumlar
En Çok Okunanlar