CodeIgniter 4 Form Doğrulama ve Form Gönderme Örneği
⚡ Akıllı Özet
CodeIgniter 4 Form Doğrulama, işlenmeden önce kullanıcı girişini kontrol eder. Formlar, form yardımcısıyla oluşturulur ve yerleşik doğrulama kütüphanesi, gerekli, sayısal ve benzersiz gibi kurallar belirler, ardından hataları görüntüler ve doğrulama başarısız olduğunda yapışkan alanları yeniden doldurur.
İçinde form CodeAteşleyici 4
Formlar, kullanıcıların uygulamayla etkileşim kurmasına ve veri göndermesine olanak sağlayan bir yöntemdir. Örneğin, bir web sitesi ziyaretçisinin doldurup bize gönderebileceği bir iletişim formu 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:
- … `<img>` ve `<br>` etiketleri formun açılış ve kapanış etiketleridir. `id` ve `name` öznitelikleri formun adını ve kimliğini belirtir. `method` özniteliği ise kullanılacak HTTP fiilini belirtir, genellikle `POST`.
- Form öğelerini belirtir. `name` özniteliği, işlenmek üzere arka uç sunucusuna gönderilen değişken adıdır.
CodeAteşleyici Form Yardımcısı
HTML'nin anlaşılması ve yazılması kolaydır, ancak Codeateşleyici İşleri daha da kolaylaştırıyor. CodeIgniter'ın HTML formları oluşturmak için yerleşik işlevleri vardır. Aşağıdakileri ele alalım. CodeIgniter form yardımcı fonksiyonunu kullanarak form oluşturan form kodu:
<?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, yöntemi `POST` olarak ayarlar ve eylemi belirler. URL create_user.php dosyasına.
- `echo form_label('User Id', 'user_id');` komutu, `user_id` adlı giriş alanı için `User Id` yazan bir etiket oluşturur.
- echo form_input(['name' => 'user_id']); komutu user_id adında bir metin giriş alanı oluşturur.
- `echo form_submit('btnSubmit', 'Kullanıcı Oluştur');` komutu, 'Kullanıcı Oluştur' etiketine sahip bir gönder düğmesi oluşturur.
- `echo form_close();` komutu formu kapatır.
Gördüğünüz gibi, form yardımcıları saf PHP kullanarak form oluşturmayı kolaylaştırıyor. Form yardımcı yöntemlerine öznitelikler geçirerek, form için oluşturulan HTML'yi ö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ı fonksiyonunu kullanmanın en büyük avantajı, HTML standartlarına uygun, anlamsal olarak doğru kod üretmesidir. Resmi kılavuza 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, bu eğitim projesi, iletişim bilgilerini veritabanında saklayan bir kişi yönetim uygulaması oluşturmaktadır.
Temas kurmak
Önceki eğitimde, uygulamamız için rotalar ve basit görünümler oluşturduk. application/views/contacts/create.php dosyasını açın ve 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, formu oluşturmak için düz HTML kullanıyor. Şimdi formumuzun web tarayıcısında nasıl göründüğüne bakalım. Aşağıdakileri yükleyin. URL Web tarayıcınıza şunu yazın: http://localhost:3000/contacts/createEğer eğitim projesini oluşturduysanız, aşağıdakileri görmelisiniz:
Form Doğrulama Codeateşleyici
Formlardan gelen verileri işlerken doğrulama çok kritik bir rol oynar. Örneğin, bir kullanıcı bir web sitesine kaydoluyorsa; gerekli bilgileri ve geçerli bir e-posta adresini girdiklerinden emin olmak isteriz. Tarih değerleriyle çalışıyorsak, tarih aralıklarının geçerli olduğundan emin olmak isteriz, bu nedenle ayda 32 gün olan bir tarihi kabul etmeyiz.
Doğrulama bu sorunları çözer. CodeWeb uygulamalarıyla çalışırken Igniter doğrulama işlemi iki cephede gerçekleştirilir.
İstemci tarafı doğrulama, genellikle HTML kullanılarak web tarayıcısında yapılır. JavaKomut dosyası. Her şey istemci tarafında yapıldığı için performansı artırır, bu nedenle verilerin sunucuya gönderilmesine gerek kalmaz. Dezavantajı ise kullanıcının bunun üzerinde kontrol sahibi olmasıdır; eğer buna güveniyorsanız JavaDoğrulama ve kullanıcıyı devre dışı bırakma komut dosyası JavaKomut dosyası, doğrulama işleminiz başarısız olacaktır.
Sunucu tarafı doğrulama, sunucuda yapılır. Dezavantajı, kullanıcının verileri sunucuya göndermesi ve yanıtı beklemesi gerektiğidir; bu da ağ kaynaklarını kullanır ve performansı düşürebilir. En büyük avantajı ise daha fazla kontrol ve kullanıcının devre dışı bırakması durumunda bile doğrulama kurallarınızın çalışacağından emin olmanızdır. JavaSenaryo.
Daha iyi bir strateji, birincil strateji olarak istemci tarafı doğrulamayı, yedek mekanizma olarak ise sunucu tarafı doğrulamayı 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ştirebilir:
- Gerekli alanları kontrol edin. Gönderilen değerleri inceler ve gerekli olarak işaretlenmiş bir alanın değeri yoksa 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 tespit edilirse, kütüphane bir hata döndürür ve form gönderimini iptal eder.
- Uzunluk doğrulaması – bazı alanlar belirli bir minimum veya maksimum karakter sayısına ihtiyaç duyar. Doğrulama kütüphanesi bu tür durumları ele alır.
- Veri temizleme – kütüphane, güvenlik amacıyla gönderilen verilerden kötü amaçlı kodları kaldırabilir. Gönderilen değerlerde aktif bir zararlı kod varsa, bu işlem gerçekleştirilir. JavaKomut dosyası veya SQL enjeksiyon kodu gibi zararlı kodları ayıklayan ve işlevsiz hale getiren bir kütüphane mevcuttur.
- Benzersiz veritabanı alanlarını doğrulama – örneğin, e-posta adresi kullanan bir kayıt formunuz var ve adresin benzersiz olduğundan emin olmak istiyorsunuz. Bu kütüphane, gönderilen verileri bir veritabanı tablosu ve alanı ile karşılaştırmayı kolaylaştırır.
Doğrulama kuralları aşağıdaki format kullanılarak belirlenir:
$this->form_validation->set_rules('field','human readable field','rule',['custom message']);
İşte:
- 'field' parametresi, kütüphane tarafından doğrulanacak form alanının adını belirtir.
- 'İnsan tarafından okunabilir alan', bir hata oluştuğunda kullanıcıya gösterilecek olan alanın insan tarafından okunabilir formatını belirtir.
- 'Kural', uygulanacak doğrulama kuralını belirtir; örneğin, gerekli, sayısal veya minimum uzunluk gibi.
- ['özel mesaj'] isteğe bağlıdır ve kural başarısız olduğunda görüntülenecek özel bir doğrulama mesajı belirleyebilir.
Aşağıdaki bir Codeİletişim numarası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 doldurulup doldurulmadığını kontrol eder. Eğer doldurulmamışsa, "İletişim Numarası alanı zorunludur" şeklinde bir hata mesajı döndürür.
Belirlenen kurallara göre doğrulama işlemini çalıştırmak için, doğrulama kütüphanesinin aşağıdaki fonksiyonunu kullanıyoruz:
$this->form_validation->run()
Yukarıdaki kod false döndürürse, bir veya daha fazla kural hatası oluşmuştur. True döndürürse, tüm doğrulama kuralları başarılı olmuştur ve daha sonraki işlemlere devam edebilirsiniz.
Doğrulama kurallarına ilişkin daha fazla örneğe bakalım. Diyelim ki, kişi adı, numarası ve e-posta adresi gibi birkaç alanı doğrulamak istiyorsunuz. 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 örnekte, kütüphanenin set_rules fonksiyonu için kurallar içeren bir alan dizisi sağlıyoruz. Bu, birden fazla alanı doğrularken işleri kolaylaştırır.
Benzersiz Doğrulama
Aynı numarayı iki kez kaydetmemek için iletişim numarasını doğrulamak istiyorsak, aşağıdaki kuralı kullanabiliriz:
$this->form_validation->set_rules('contact_number', 'Contact Number','required|is_unique[contacts.contact_number]');
İşte:
- | işareti, birden fazla kuralı birbirine bağlamak 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
Form işleme sırasında bir hata oluşursa, doğrulama hatalarını görüntülemek için aşağıdaki kodu kullanabilirsiniz:
<?php echo validation_errors(); ?>
İşte:
- Yukarıdaki fonksiyon, meydana gelen tüm hataları döndürür.
Gönderilen Form Verilerini Doldurma: Yapışkan Formlar
Bazı formlarda birçok alan bulunur ve bir hata oluşursa, doğru şekilde eklenen verilerin korunmasını sağlamak istersiniz. Doğrulama kütüphanesi, aşağıdaki kodu kullanarak bunu başarmak için mekanizmalara sahiptir:
<?php echo set_value('field_name'); ?>
İşte:
- Yukarıdaki kod, kullanıcının girdiği girdiyi görüntüler.
Doğrulama kütüphanesinde bulunan yöntemlere ilişkin eksiksiz bir referans kılavuzu için, resmi API dokümantasyonuna bakın. CodeIgniter kullanım kılavuzu: https://codeigniter.com/userguide3/libraries/form_validation.html.
CodeIgniter Form Doğrulama Örneği
Bu eğitim serisi boyunca, iletişim yönetimi uygulaması olan eğitim projemize kod ekledik. Bu bölümde, doğrulama kütüphanesini yükleyeceğiz ve gerçek dünya örneğinde nasıl pratik olarak kullanılabileceğini göreceğiz. `store` yöntemini içerecek şekilde `routes` 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'; $route['users'] = 'welcome/users';
Şimdi, Kişiler denetleyicisinde form doğrulama kütüphanesini yükleyelim ve bazı doğrulama kuralları belirleyelim. Kodu aşağıdaki gibi değiştirin:
<?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(…) doğrulama kurallarını tanımlar.
- `$this->form_validation->set_rules($rules);` doğrulama kurallarını ayarlar.
- `$this->form_validation->run() == FALSE` koşulu sağlandığında doğrulama kuralları çalıştırılır ve başarısız olursa form doğrulama hatalarıyla birlikte yeniden görüntülenir. Doğrulama başarılı olursa, kişi listesi sayfasına yönlendiriliriz. Normal şartlarda verileri veritabanına yazardık, bunu bir sonraki eğitimde yapacağız. veritabanları.
application/views/contacts/create.php dosyasındaki create görünümünü aşağıdaki gibi değiştirin:
<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 oluşabilecek hataları (varsa) gösterir.
- Daha önce girilmiş olan değeri (varsa) ayarlar.
Aşağıdakileri yükleyin URL Web tarayıcınızda açın ve ardından herhangi bir değer girmeden "Kişi Oluştur" seçeneğine tıklayın:



