Anasayfa » Codeigniter, Php

Codeigniter Dersleri – 22 – Yönetici Girişi ve Yönetici Alanı – Session – 2

21 Ağustos 2011 6.875 kez okundu 7 yorum
1 Star2 Stars3 Stars4 Stars5 Stars (2 oy,5 üzerinden : 3,00 )
Loading...

Herkese merhabalar,

Bir önceki dersimize kaldığımız yerden devam ediyoruz. Bugün login işlemini bitirmemizden dolayı yeni kullanıcı kaydı işlemini yapacağız. Bunun için views altında signup_form.php dosyası oluşturalım ve içerisine formumuzu yerleştirelim

<h1>Hesap Yarat</h1>
 
<fieldset id="signup_form">
	<legend>Kişisel Bilgiler</legend>
 
	<?php
 
	echo form_open('login/create_member');
	echo form_input('first_name',set_value('first_name','Adın'));
	echo form_input('last_name',set_value('last_name','Soyadın'));
	echo form_input('email_address',set_value('email_address','Email Adresin'));
	?>
 
</fieldset>
<fieldset id="signup_form">
	<legend>Kullanıcı Bilgileri</legend>
 
	<?php
 
	echo form_open('login/create_member');
	echo form_input('user_name',set_value('user_name','Kullanıcı Adın'));
	echo form_input('password',set_value('password','Şifre'));
	echo form_input('password2',set_value('password2','Şifre Tekrar'));
 
	echo form_submit('submit','Hesap Yarat');
 
	?>
 
	<?php echo validation_errors('<p class="error">');?>
 
</fieldset>

Peki bu dosyayı nasıl çağıracağız? Bunun için login.php dosyasına şöyle bir fonksiyon ekliyoruz.

	function signup()
	{
		$data['main_content'] = 'signup_form';
		$this->load->view('includes/template',$data);
	}

Formumuzu oluşturduk ancak kaydet dediğinde gideceği create_member fonksiyonunu daha oluşturmadık. login.php dosyamıza şöyle bir fonksiyon ekleyelim

function create_member()
	{
		$this->load->library('form_validation');//girilen bilgilerin doğruluğunu kontrol etmemize yardımcı olan fonksiyonları yüklüyoruz.
		$this->form_validation->set_rules('first_name','Name','trim|required');//bu ve alttaki fonksiyonlar ise kural oluşturmamıza yardımcı olarak girilen bilgilerin bu kurala uygun olmasını sağlıyor
		$this->form_validation->set_rules('last_name','Last Name','trim|required');
		$this->form_validation->set_rules('email_address','Email Address','trim|required|valid_email');
 
		$this->form_validation->set_rules('user_name','Username','trim|required|min_length[4]');
		$this->form_validation->set_rules('password','Password','trim|required|min_length[4]|max_length[32]');
		$this->form_validation->set_rules('password2','Password Confirmation','trim|required|matches[password]');
		if($this->form_validation->run()== FALSE )//eğer girilen değerler yukarıdaki kurallara uymuyor ise tekrar forma dönüyoruz.
		{
			$this->signup();
		}
		else//girilen bilgiler doğruysa model dosyamızı çağırıyoruz.
		{
			$this->load->model('membership_model');
			if($query = $this->membership_model->create_member())
			{
				$data['main_content']= 'signup_successful';
				$this->load->view('includes/template',$data);
			}
			else
			{
				$this->load->view('signup_form');
			}
		}
 
	}

Burada “form_validation->set_rules(‘last_name’,’Last Name’,’trim|required’)” gibi fonksiyonlar görüyoruz. Bunun anlamı, kullanıcının girdiği değerleri kendi oluşturduğumuz kurallara göre işliyoruz. Örneğin bu satırda “trim” ile girilen değerin yanındaki boşlukları siliyoruz ve, yanlışlıkla girilen boşluk değerinden dolayı hata çıkmasını önlüyoruz. “required” ile de, bu alanın doldurulmasının zorunlu olduğunu söylüyoruz. Ayrıca “valid_email” ile geçerli bir email adresi istiyoruz. “min_length[4]” ile en az 4 karakter; “max_length[32]” ile de en fazla 32 karakter girilebileceğini belirliyoruz. “matches[password]” ile password field ındaki değer ile aynı olması gerektiğini set ediyoruz.

Şimdi kullanıcının kayıt edileceği model dosyamızı hazırlayalım. Bunun için var olan model dosyamıza yani membership_model.php dosyamıza fonksiyon ekleyeceğiz.

	function create_member()
	{
		//database e eklenecek değerleri belirliyoruz.
		$new_member_insert_data = array(
			'firstname' => $this->input->post('first_name'),
			'lastname' => $this->input->post('last_name'),
			'email' => $this->input->post('email_address'),
			'username' => $this->input->post('user_name'),
			'password' => md5($this->input->post('password'))
 
		);
		$insert = $this->db->insert('membership',$new_member_insert_data);//insert işlemi gerçekleştiriyoruz.
		return $insert;//true veya false değeri dönüyor
	}

Son olarak başarılı kayıtta gösterilecek sayfayı hazırlayalım. views altına signup_successful.php dosyasını oluşturuyoruz. ve şu şekilde dolduruyoruz.

1
2
<h1> Tebrikler! </h1>
<p> Hesabınınız Oluşturuldu. <?php echo anchor('login','Giriş Yap'); ?></p>

Şimdi son olarak css dosyamızı oluşturalım

codeigniter klasörü altın application yanına css klasörü oluşturalım ve içine style.css dosyasını açalım. İçerisine şunları yazalım

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
body{
	background:#6699FF;
	margin:0;
	padding:0;
	font-family:Arial, Helvetica, sans-serif;
}
#login_form{
width:300px;
background:#00FF99 url(../img/login_bg.jpg);
border:1px solid white;
margin: 250px auto 0;
padding: 1em;
-moz-border-radius:3px;
-webkit-border-radius:3px;
}
#signup_form{
width:300px;
background:#00FF99 url(../img/login_bg.jpg);
border:1px solid white;
margin: 25px auto 0;
padding: 1em;
-moz-border-radius:3px;
-webkit-border-radius:3px;
}
 
h1,h2,h3,h4,h5{
margin-top: 0;
font-family:Arial, Helvetica, sans-serif;
text-align:center;
}
input[type=text],input[type=password]{
display:block;
margin:0 0 1em 0;
width:280px;
border:5px;
-moz-border-radius:1px;
-webkit-border-radius:1 px;
padding:1em;
}
input[type=submit],form a{
border:none;
margin-right:1em;
padding:6px;
text-decoration:none;
font-size:12px;
-moz-border-radius:4px;
-webkit-border-radius:4px;
background:#9900CC;
color:white;
box-shadow:0 1px 0 white;
-moz-box-shadow:0 1px 0 white;
-webkit-box-shadow: 0 1px 0 white;
}
input[type=submit]:hover,form a:hover{
background:#9900FF;
cursor:pointer;
}
.error{
color:#393939;
font-size:15px;
}
fieldset{
width:300px;
margin:auto;
margin-bottom:2em;
display:block;
}
h1{
text-shadow:0 1px 0 white;
}
#tutInfo{
background:#e3e3e3;
border-top:1px solid white;
position:absolute;
bottom:0;
width:100%;
padding:.7em .7em .7em 2em;
}

Son kez ayarlardan hızlıca tekrar bahsetmek istiyorum.

config klasörü altında autoload.php dosyasında yapılacak değişiklikler:

1
2
3
$autoload['libraries'] = array('session','database');
 
$autoload['helper'] = array('url','form');

config.php dosyasında yapılacak değişiklikler:

1
2
3
4
5
$config['base_url']	= 'http://localhost/CodeIgniter_2.0.2';
 
$config['sess_encrypt_cookie']	= TRUE;
 
$config['global_xss_filtering'] = FALSE;

bu değişiklikleride yaptıktan sonra projemiz tamamen çalışır hale geldi, eksiklikleri lütfen bana iletin. Projenin kaynak kodlarını buradan indirebilirsiniz. İyi günler

<<< Önceki:

Sonraki: >>>


Facebookta Paylaş

7 yorum »

  • Yahya dedi ki:

    Teşekkür ederiz, elinize sağlık. Ancak;
    login controller’da,

    $this->load->signup()

    Bunu nerede tanımlamıştık?

  • admin dedi ki:

    Eğer sorunuz, signup() fonksiyonunu nereden çağırıyoruz ise, views klasörü altındaki login_form.php dosyasında echo anchor('login/signup','Yeni Kayıt');//Yeni Kullanıcı Kayıt Butonu şeklinde kullandık.

  • erdinc dedi ki:

    Yahya Adlı Arkadaş login.php dosyasında create_member() adlı fonksiyon içersinden $this->signup(); şeklinde çağırılan fonksiyonu soruyor sanırım. Çünkü bu fonksiyon gözden kaçmış yazılmamış.. ancak login.php dosyası içeriside aşşağıdaki gibi fonksiyonu eklerseniz çalışacaktır.

    function signup()
    {
    $data[‘main_content’] = ‘signup_form’;
    $this->load->view(‘includes/template’,$data);
    }

    Not: Sayın Admin Çalışmalarınız dan ve Çabalarınızdan Ötürü Sizi Kutluyorum!

  • admin dedi ki:

    Teşekkürler erdinc, belirttiğiniz kodu yazıya ekledim.

  • S. Başköy dedi ki:

    Merhabalar,

    Codeigniter ile sayenizde haşır neşir olmaya başladım. Yazılarınızı takip ettim. Ancak bir iki soru kafama takıldı bu Yönetici Sayfası ile ilgili.

    a) Her ne kadar session (oturum nesnesi) kullanmış olsak da kullanıcı yetki seviyeleri veya yetkilendirme ve kısıtlama mümkün mü? (Yani bu konu ile ilgili kütüphane var mı yoksa kendimiz mi birşeyler düşünmek zorunda kalıyoruz?

    b) Gösterdiğiniz örnekte gelen ziyaretçi anında üye olabiliyor, yani bunun bir kontrol mekanizması olması gerekmez miydi? Eğer öyle birşey olmasını isteseydik nasıl bir çözümleme yapmak gerekirdi?

    Emeğiniz için ayrıca teşekkür eder saygılar sunarım.

  • admin dedi ki:

    S. Başköy,
    İkinci sorunuzdan başlayayım, örnekte amaç sadece üyelik sisteminin nasıl yapılabileceği ve session kullanımıyla ilişkilendirilmesi. Böyle olunca ayrıntılı denetim yok. Çözüm olarak, formdan gelen bilgileri daha çok denetime tabi tutabilirsiniz. Örneğin password de hem harf kem karakter olmalı gibi. Ayrıca kayıt olan kişinin email adresi databasede var mı diye kontrol edilebilir. Kayıt olurken kaydının tamamlanması ve aktifleştirilmesi için email yollanabilir. Böyle kontrol mekanizmaları oluşturulabilir.

    İlk sorunuza gelecek olursak, Eğer yanlış anlamadı isem, google da “user auth codeigniter” şeklinde aratabilirsiniz. Kendin yapmak istersen tabiki böyle bir şey yapmak mümkündür.

  • admin dedi ki:

    Kullanıcı yetkilendirme kütüphanesine (User authorization library) örnek : http://www.jasonashdown.co.uk/cl_auth_doc/

Yorum Bırakın!

Yorum yaz, yada kendi sitende trackback (Geri besleme) olarak ekle. Ayrıca RSS ile bu konuya üye olabilirsin. .

Nazik olun. Temiz tutun. Konu dışına çıkmayın. Spam yaratmayın.

Bu tagları kullanabilirsiniz:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Bloğumuz gavatarı desteklemektedir. Kendi gavatarınızı edinmek için lütfen Gravatar a üye olun.