CodeIgniter Form Doğrulama ve Form Gönderme Örneği
İçinde form Codeateşleyici
Formlar, kullanıcıların uygulama ile etkileşim kurması ve veri göndermesi için bir yol sağlar. Web sitesini ziyaret eden birinin doldurup bize bilgi gönderebileceği bir iletişim formu olarak kullanılabilir. Alınan bilgiler genellikle veritabanında saklanır veya e-posta yoluyla gönderilir.
HTML Form Yapısı
Aşağıdaki kod tipik bir HTML formunun yapısını göstermektedir.
<form id="frmUsers" name="frmUsers" method="POST" action="create_user.php"> <input type="text" id="user_id" name="user_id"> <input type="password" id="password" name="password"> <input type="submit" value="Submit"> </form>
İŞTE,
- … formun açılış ve kapanış etiketleridir. id ve name özelliği formun adını ve kimliğini belirtir. Method niteliği kullanılacak HTTP Fiilini belirtir. Bu genellikle POST fiili ile belirtilir.
- Form öğelerini belirtir. Name özelliği, işlenmek üzere arka uç sunucusuna gönderilen değişken adıdır.
CodeAteşleyici Form Yardımcısı
HTML harikadır, anlaşılması ve yazılması kolaydır, ancak Codeateşleyici İşleri daha da kolaylaştırıyor. CodeIgniter, HTML formları oluşturmak için yerleşik işlevlere sahiptir.
Şunları ele alalım: CodeIgniter form gönderme kodu, form yardımcı fonksiyonunu kullanarak bir form oluşturur.
<?php
echo form_open('create_user.php', ['id' => 'frmUsers']);
echo form_label('User Id', 'user_id');
echo form_input(['name' => 'user_id']);
echo form_label('Password', 'password');
echo form_input(['type' => 'password', 'name' => 'password']);
echo form_submit('btnSubmit', 'Create User');
echo form_close();
?>
İŞTE,
- `echo form_open('create_user.php', ['id' => 'frmUsers']);` kodu, formun açılış etiketini oluşturur, eylemi `POST` fiiline ayarlar ve işlemi ayarlar. URL create_user.php dosyasına
- echo form_label('Kullanıcı Kimliği', 'kullanıcı_kimliği'); user_id adıyla giriş alanı için Kullanıcı Kimliğini okuyan bir etiket oluşturur.
- echo form_input(['isim' => 'kullanıcı_kimliği']); user_id adında metin türünde bir giriş alanı oluşturur
- echo form_submit('btnSubmit', 'Kullanıcı Oluştur'); Kullanıcı Oluştur etiketini içeren bir gönder düğmesi oluşturur
- echo form_close(); formu kapatır
Yukarıda görebileceğiniz gibi CodeIgniter kodunda, form yardımcıları saf PHP kullanarak form oluşturmayı kolaylaştırır. Form yardımcı yöntemlerine öznitelikler geçirerek, form için oluşturulan HTML'i özelleştirebiliriz.
Yukarıdaki kod aşağıdaki HTML form kodunu oluşturur
<form action="http://localhost:3000/index.php/create_user.php" id="frmUsers" method="post" accept-charset="utf-8">
<label for="user_id">User Id</label>
<input type="text" name="user_id" value=""/>
<label for="password">Password</label>
<input type="password" name="password" value=""/>
<input type="submit" name="btnSubmit" value="Create User"/>
</form>
Form yardımcısını kullanmanın en büyük avantajı, belirlenmiş HTML standartlarına uygun, anlamsal olarak doğru kod üretmesidir.
Yetkiliye başvurabilirsiniz CodeDaha fazla ayrıntı için Igniter dokümanına bakın.
https://codeigniter.com/user_guide/helpers/form_helper.html
CodeAteşleyici Form Örneği
Temel konuları ele aldıktan sonra CodeIgniter, bu süreç boyunca üzerinde çalıştığımız eğitim projemize geri dönelim. CodeIgniter Eğitim SerisiÖzetle, eğitim projesi, ayrıntıları veritabanında saklayacak bir kişiler yönetim uygulaması oluşturuyor.
Temas kurmak
Önceki derste uygulamalarımız ve basit görünümlerimiz için rotalar oluşturduk. application/views/contacts/create.php dosyasını açın
Create.php kodunu aşağıdaki gibi değiştirin
<div class="column">
<h2 class="title">Create Contact</h2>
<form action="<?= base_url('contacts/store') ?>" method="POST">
<div class="field">
<label class="label">Contact Name</label>
<div class="control">
<input id="name" name="name" class="input" type="text" placeholder="Type the contact name">
</div>
</div>
<div class="field">
<label class="label">Contact Number</label>
<div class="control">
<input id="name" name="name" class="input" type="text" placeholder="Type the contact number">
</div>
</div>
<div class="field">
<label class="label">Email Address</label>
<div class="control">
<input id="email" name="email" class="input" type="email" placeholder="Type the email address">
</div>
</div>
<div class="field is-grouped">
<div class="control">
<button class="button is-link">Save Contact</button>
</div>
</div>
</form>
</div>
Not: yukarıdaki kod, formlar oluşturmak için düz HTML kullanır.
Şimdi formlarımızın web tarayıcısında nasıl göründüğüne bakalım
Aşağıdakileri yükleyin URL web tarayıcımıza.
http://localhost:3000/contacts/create
Eğer eğitim projesini oluşturuyorsanız, aşağıdakileri görebilmeniz gerekir
Form Doğrulama Codeateşleyici
Formlardan veri işlerken doğrulama çok kritik bir rol oynar. Diyelim ki bir kullanıcı bir web sitesine kaydoluyor; gerekli bilgileri ve e-posta adresini doldurduğundan emin olmak istiyoruz. Girilen e-posta adresinin geçerli olduğundan emin olmamız gerekiyor. Tarih değerleriyle çalışıyorsak, tarih aralıklarının geçerli olduğundan emin olmak istiyoruz. Bir ayda 32 gün olan bir tarihi kabul etmek zorunda kalmayız vb.
Doğrulama yukarıdaki sorunları çözer. CodeWeb uygulamalarıyla çalışırken Igniter Doğrulaması iki (2) cephede yapılır.
İstemci tarafı doğrulaması web tarayıcısı tarafından yapılır. Bu genellikle HTML kullanımını içerir ve JavaKomut dosyası. İstemci tarafı doğrulaması, her şey istemci tarafında yapıldığı için performansı artırır. Bu nedenle, verileri sunucuya göndermeye gerek yoktur. İstemci tarafı doğrulamasının dezavantajı, kullanıcının bunun üzerinde kontrol sahibi olmasıdır. Eğer JavaDoğrulama ve kullanıcıyı devre dışı bırakma komut dosyası JavaTarayıcıda script yoksa doğrulamanız başarısız olur.
Sunucu tarafı doğrulaması sunucu tarafında yapılır. Bu doğrulamanın dezavantajı, kullanıcının verileri işlenmek üzere sunucuya göndermesi ve yanıtı beklemesidir. Bu, ağ kaynaklarını kullanır ve performansı düşürebilir. Sunucu tarafı doğrulamanın en büyük avantajı, daha fazla kontrole sahip olmanız ve kullanıcı devre dışı bıraksa bile doğrulama kurallarınızın çalışacağından emin olmanızdır. JavaTarayıcıdaki komut dosyası.
Daha iyi bir strateji, birincil doğrulama stratejisi olarak istemci tarafını ve geri dönüş mekanizması olarak sunucu tarafını kullanmaktır.
Form Doğrulama Kuralları Ekleme
CodeIgniter'ın yerleşik bir doğrulama kütüphanesi vardır. Bu kütüphane aşağıdaki satır kullanılarak yüklenir.
$this->load->library('form_validation');
MKS CodeIgniter form doğrulama kütüphanesi aşağıdaki işlemlerden bazılarını gerçekleştirmek için kullanılabilir.
- Gerekli alanları kontrol edin. Bu, gönderilen değerleri inceler ve gerektiği gibi etiketlenen bir alanın bir değeri yoksa bir hata döndürür
- Veri türü doğrulaması – bazı alanlar yalnızca sayısal değerler gerektirebilir. Sayısal olmayan bir değer algılanırsa kitaplık bir hata döndürür. Form gönderiminin yürütülmesi de iptal edilir.
- Uzunluk doğrulama – bazı veri türleri, alanların belirli bir minimum veya maksimum sayıda karaktere sahip olmasını gerektirir. Doğrulama kütüphanesi bu gibi durumlarda kullanışlıdır.
- Veri temizleme – doğrulama kitaplığı aynı zamanda güvenlik nedenleriyle gönderilen verilerden kötü amaçlı kodları kaldıran yeteneklere de sahiptir. Örneğin, gönderilen değerler etkinse JavaBunlarda script veya SQL Injection kodu varsa, doğrulama kütüphanesi zararlı kodu temizler ve işe yaramaz hale getirir.
- Benzersiz veritabanı alanlarını doğrulayın – kullanıcıların bir e-posta adresi kullanarak kaydolduğu bir formunuz olduğunu varsayalım. E-posta adresinin benzersiz olduğundan emin olmak istersiniz. Kütüphane, gönderilen verileri bir veritabanı tablosu ve alanına göre kontrol etmenizi kolaylaştırır. Bu, değerin daha önce alındığını bilmenizi sağlar.
Doğrulama kuralları aşağıdaki format kullanılarak ayarlanır
$this->form_validation->set_rules('field','human readable field','rule',['custom message']);
İŞTE,
- 'field', kütüphane tarafından doğrulanacak form alanı adını belirtti
- 'insan tarafından okunabilir alan', doğrulama altındaki alanın insan tarafından okunabilir formatını belirtir. Bir hata oluştuğunda bu kullanıcıya geri görüntülenir.
- 'kural' gerekli, sayısal, minimum uzunluğun kontrol edilmesi vb. gibi uygulanacak doğrulama kuralını belirtir.
- ['özel mesaj'] isteğe bağlıdır ve doğrulama kuralı başarısız olduğunda görüntülenmesi gereken özel bir doğrulama mesajı ayarlamak için kullanılabilir.
Aşağıda bir form gönderim örneği bulunmaktadır. Codeİletişim adını doğrulamak için Igniter örneği
$this->form_validation->set_rules('contact_number', 'Contact Number', 'required');
İŞTE,
- Yukarıdaki kod, contact_number alanının girilip girilmediğini kontrol eder. Ayarlanmazsa İrtibat Numarası alanının gerekli olduğunu belirten bir hata döndürür.
Doğrulamayı belirlenen kurallara göre çalıştırmak için doğrulama kitaplığının aşağıdaki işlevini kullanırız
$this->form_validation->run()
Yukarıdaki kod false değerini döndürürse, bir veya daha fazla ayarlanan kural başarısız olmuş demektir. True değerini döndürürse, doğrulama kurallarının tümü geçmiş demektir ve daha sonraki işlemlere devam edebilirsiniz.
Doğrulama kurallarının daha fazla örneğine bakalım. Diyelim ki bazı alanları doğrulamak istiyorsunuz, örneğin kişi adı, numara ve e-posta adresi, bunu başarmak için aşağıdaki kodu kullanabilirsiniz.
$rules = array(
array(
'field' => 'contact_name',
'label' => 'Contact Name',
'rules' => 'required'
),
array(
'field' => 'contact_number',
'label' => 'Contact Number',
'rules' => 'required',
'errors' => array(
'required' => 'You must provide a %s.',
),
),
array(
'field' => 'email_address',
'label' => 'Email Address',
'rules' => 'required'
)
);
$this->form_validation->set_rules($rules);
İŞTE,
- Yukarıdaki e-posta doğrulama işleminde CodeIgniter örneğinde, kütüphanenin `set_rules` fonksiyonu için kurallar içeren bir alan dizisi sağlıyoruz. Bu, bazı alanları doğrularırken işinizi kolaylaştırır.
Benzersiz Doğrulama
Aynı numarayı iki kez kaydetmemek için iletişim numarasını doğrulamak istiyorsak bunu yapmak için aşağıdaki kuralı kullanabiliriz.
$this->form_validation->set_rules('contact_number', 'Contact Number','required|is_unique[contacts.contact_number]');
İŞTE,
- | birden fazla kuralı bir araya getirmek için kullanılır
- is_unique[kişiler.kişi_numarası], kişi_numarası değerinin veritabanı tablosundaki kişiler içindeki kişi_numarası alan değerlerine göre benzersiz olup olmadığını kontrol eder.
Form Doğrulama Hata Mesajlarını Görüntüleme
Formun işlenmesi sırasında bir hata oluşursa, oluşan doğrulama hatalarını görüntülemek için aşağıdaki kodu kullanabilirsiniz
<?php echo validation_errors(); ?>
İŞTE,
- Yukarıdaki işlev meydana gelen tüm hataları döndürür.
Gönderilen Form Verilerini Doldurma: Yapışkan Formlar
Bazı formların birçok alanı vardır ve bir hata oluştuysa, doğru şekilde eklenen verilerin korunduğundan emin olmak istersiniz. Doğrulama kütüphanesinin bunu başarmak için mekanizmaları vardır. Bunu aşağıdaki kodu kullanarak yapıyoruz.
<?php echo set_value('field_name'); ?>
İŞTE,
- Yukarıdaki kod kullanıcının girdiği girişi görüntüler.
Doğrulama kütüphanesi kapsamında bulunan yöntemlere ilişkin eksiksiz bir referans kılavuzu için, resmi kullanıcı kılavuzundaki API dokümantasyonuna başvurabilirsiniz. Codeateşleyici
https://codeigniter.com/userguide3/libraries/form_validation.html
CodeIgniter Form Doğrulama Örneği
Bu eğitim serileri boyunca, bir kişi yönetimi uygulaması olan eğitim projemize daha fazla kod ekliyoruz. Bu bölümde doğrulama kütüphanesini yükleyeceğiz ve gerçek dünyadan örnek bir uygulama kullanarak onu pratik kullanıma nasıl koyabileceğimizi göreceğiz.
Mağaza yöntemini eklemek için rota kodunu aşağıdaki gibi değiştirin
$route['default_controller'] = 'welcome'; $route['contacts'] = 'contacts'; $route['create'] = 'contacts/create'; $route['store'] = 'contacts/store'; $route['edit/:id'] = 'contacts/edit'; $route['update/:id'] = 'contacts/update'; $route['delete/:id'] = 'contacts/delete'; $routes['users'] = 'welcome/users';
Şimdi form doğrulama kitaplığını Kişiler denetleyicisine yükleyelim ve bazı doğrulama kuralları ayarlayalım.
Aşağıdaki form doğrulama örneğinde gösterildiği gibi kodu değiştirin. CodeAteşleyici örneği:
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Contacts extends CI_Controller {
public function __construct() {
parent::__construct();
$this->load->helper('url', 'form');
$this->load->library('form_validation');
}
public function index() {
$this->load->view('header');
$this->load->view('contacts/index');
$this->load->view('footer');
}
public function create() {
$this->load->view('header');
$this->load->view('contacts/create');
$this->load->view('footer');
}
public function store() {
$rules = array(
array(
'field' => 'contact_name',
'label' => 'Contact Name',
'rules' => 'required'
),
array(
'field' => 'contact_number',
'label' => 'Contact Number',
'rules' => 'required',
'errors' => array(
'required' => 'You must provide a %s.',
),
),
array(
'field' => 'email_address',
'label' => 'Email Address',
'rules' => 'required'
)
);
$this->form_validation->set_rules($rules);
if ($this->form_validation->run() == FALSE) {
$this->load->view('header');
$this->load->view('contacts/create');
$this->load->view('footer');
} else {
redirect(base_url('contacts'));
}
}
public function edit($id) {
$this->load->view('header');
$this->load->view('contacts/edit');
$this->load->view('footer');
}
public function update($id) {
$this->load->view('header');
$this->load->view('contacts/update');
$this->load->view('footer');
}
public function delete($id) {
$this->load->view('header');
$this->load->view('contacts/delete');
$this->load->view('footer');
}
}
İŞTE,
- $rules = array(…) kümeleri doğrulama kurallarını tanımlar
- $this->form_validation->set_rules($rules); doğrulama kurallarını belirler
- if ($this->form_validation->run() == FALSE) {…} doğrulama kurallarını çalıştırır ve başarısız olursa form, doğrulama hatalarıyla yeniden görüntülenir. Doğrulama başarılı olursa, yalnızca liste kişileri sayfasına yönlendiriliriz. Normal şartlarda veriyi veritabanına yazardık. Sonraki derslerde bunu yapacağız veritabanları.
Aşağıdaki form doğrulama örneğinde gösterildiği gibi, application/contacts/create.php kodundaki oluşturma görünümünü değiştirin. CodeAteşleyici örneği:
<div class="column">
<h2 class="title">Create Contact</h2>
<div class="notification is-danger">
<?php echo validation_errors(); ?>
</div>
<form action="<?= base_url('contacts/store') ?>" method="POST">
<div class="field">
<label class="label">Contact Name</label>
<div class="control">
<input id="contact_name" name="contact_name" class="input" type="text" value="<?php echo set_value('contact_name'); ?>" placeholder="Type the contact name">
</div>
</div>
<div class="field">
<label class="label">Contact Number</label>
<div class="control">
<input id="contact_number" name="contact_number" class="input" type="text" value="<?php echo set_value('contact_number'); ?>" placeholder="Type the contact number">
</div>
</div>
<div class="field">
<label class="label">Email Address</label>
<div class="control">
<input id="email_address" name="email_address" class="input" type="email" value="<?php echo set_value('email_address'); ?>" placeholder="Type the email address">
</div>
</div>
<div class="field is-grouped">
<div class="control">
<button class="button is-link">Save Contact</button>
</div>
</div>
</form>
</div>
İŞTE,
- doğrulama işlemi sırasında varsa oluşan hataları görüntülüyoruz
- varsa önceden ayarlanmış olan değeri ayarlar
Aşağıdakileri yüklemeniz gerekiyor. URL Web tarayıcınızda açın. Ardından herhangi bir değer girmeden "Kişi Oluştur" seçeneğine tıklayın.
ÖZET
- Formlar, kullanıcıların uygulamayla etkileşim kurması ve veri göndermesi için bir yol sağlar.
- HTML harikadır, anlaşılması ve yazılması kolaydır, ancak CodeIgniter işleri daha da kolaylaştırıyor. CodeIgniter, HTML formları oluşturmak için yerleşik işlevlere sahiptir.
- Formlardan veri işlenirken doğrulama çok kritik bir rol oynar.
- Bu eğitimde, başlıca doğrulama stratejilerini ve bunların avantajlarını ve dezavantajlarını gördük. Ayrıca doğrulama kurallarını nasıl ayarlayacağımızı ve hata mesajlarını nasıl göstereceğimizi de öğrendik. CodeIgniter'ın yerleşik doğrulama kütüphanesi. Öğrendiğimiz bilgileri pratik bir uygulamada kullanarak dersi tamamladık.


