CodeIgniter - การตรวจสอบแบบฟอร์ม
การตรวจสอบความถูกต้องเป็นกระบวนการที่สำคัญในการสร้างเว็บแอปพลิเคชัน เพื่อให้แน่ใจว่าข้อมูลที่เราได้รับนั้นเหมาะสมและถูกต้องในการจัดเก็บหรือประมวลผล CodeIgniter ทำให้งานนี้ง่ายมาก ให้เราเข้าใจกระบวนการนี้ด้วยตัวอย่างง่ายๆ
ตัวอย่าง
สร้างไฟล์ดู myform.php และบันทึกรหัสด้านล่างไว้ใน application/views/myform.php. หน้านี้จะแสดงแบบฟอร์มที่ผู้ใช้สามารถส่งชื่อของเขาและเราจะตรวจสอบความถูกต้องของหน้านี้เพื่อให้แน่ใจว่าไม่ควรว่างเปล่าในขณะส่ง
<html>
<head>
<title>My Form</title>
</head>
<body>
<form action = "" method = "">
<?php echo validation_errors(); ?>
<?php echo form_open('form'); ?>
<h5>Name</h5>
<input type = "text" name = "name" value = "" size = "50" />
<div><input type = "submit" value = "Submit" /></div>
</form>
</body>
</html>
สร้างไฟล์ดู formsuccess.php และบันทึกไว้ใน application/views/formsuccess.php. หน้านี้จะแสดงขึ้นหากตรวจสอบแบบฟอร์มสำเร็จ
<html>
<head>
<title>My Form</title>
</head>
<body>
<h3>Your form was successfully submitted!</h3>
<p><?php echo anchor('form', 'Try it again!'); ?></p>
</body>
</html>
สร้างไฟล์คอนโทรลเลอร์ Form.php และบันทึกไว้ใน application/controller/Form.php. แบบฟอร์มนี้จะแสดงข้อผิดพลาดหากไม่ได้รับการตรวจสอบอย่างถูกต้องหรือเปลี่ยนเส้นทางไปที่formsuccess.php หน้า.
<?php
class Form extends CI_Controller {
public function index() {
/* Load form helper */
$this->load->helper(array('form'));
/* Load form validation library */
$this->load->library('form_validation');
/* Set validation rule for name field in the form */
$this->form_validation->set_rules('name', 'Name', 'required');
if ($this->form_validation->run() == FALSE) {
$this->load->view('myform');
}
else {
$this->load->view('formsuccess');
}
}
}
?>
เพิ่มบรรทัดต่อไปนี้ใน application/config/routes.php.
$route['validation'] = 'Form';
ให้เราดำเนินการตามตัวอย่างนี้โดยไปที่ URL ต่อไปนี้ในเบราว์เซอร์ URL นี้อาจแตกต่างกันไปตามไซต์ของคุณ
http://yoursite.com/index.php/validation
มันจะสร้างหน้าจอต่อไปนี้ -
เราได้เพิ่มการตรวจสอบความถูกต้องในตัวควบคุม - Nameจำเป็นต้องกรอกข้อมูลก่อนส่งแบบฟอร์ม ดังนั้นหากคุณคลิกปุ่มส่งโดยไม่ต้องป้อนอะไรในช่องชื่อระบบจะขอให้คุณป้อนชื่อก่อนส่งดังที่แสดงในหน้าจอด้านล่าง
หลังจากป้อนชื่อสำเร็จคุณจะถูกเปลี่ยนเส้นทางไปยังหน้าจอดังที่แสดงด้านล่าง
ในตัวอย่างข้างต้นเราได้ใช้การตั้งค่ากฎที่จำเป็น มีกฎมากมายใน CodeIgniter ซึ่งอธิบายไว้ด้านล่าง
การอ้างอิงกฎการตรวจสอบ
ต่อไปนี้เป็นรายการของกฎพื้นฐานทั้งหมดที่พร้อมใช้งาน -
กฎ | พารามิเตอร์ | คำอธิบาย | ตัวอย่าง |
---|---|---|---|
required |
ไม่ | ส่งคืนค่า FALSE หากองค์ประกอบฟอร์มว่างเปล่า | |
matches |
ใช่ | ส่งคืนค่า FALSE หากองค์ประกอบของฟอร์มไม่ตรงกับองค์ประกอบในพารามิเตอร์ | ตรงกับ [form_item] |
regex_match |
ใช่ | ส่งคืนค่า FALSE หากองค์ประกอบของฟอร์มไม่ตรงกับนิพจน์ทั่วไป | regex_match [/ regex /] |
differs |
ใช่ | ส่งคืนค่า FALSE หากองค์ประกอบของฟอร์มไม่แตกต่างจากองค์ประกอบในพารามิเตอร์ | แตกต่าง [form_item] |
is_unique |
ใช่ | ส่งคืนค่า FALSE หากองค์ประกอบฟอร์มไม่ซ้ำกับตารางและชื่อเขตข้อมูลในพารามิเตอร์ หมายเหตุ - กฎนี้กำหนดให้ต้องเปิดใช้Query Builderเพื่อให้ทำงานได้ | is_unique [table.field] |
min_length |
ใช่ | ส่งคืนค่า FALSE หากองค์ประกอบฟอร์มสั้นกว่าค่าพารามิเตอร์ | min_length [3] |
max_length |
ใช่ | ส่งคืนค่า FALSE หากองค์ประกอบของฟอร์มยาวกว่าค่าพารามิเตอร์ | max_length [12] |
exact_length |
ใช่ | ส่งคืนค่า FALSE หากองค์ประกอบของฟอร์มไม่ตรงกับค่าพารามิเตอร์ | ความยาวที่แน่นอน [8] |
greater_than |
ใช่ | ส่งคืนค่า FALSE หากองค์ประกอบของฟอร์มน้อยกว่าหรือเท่ากับค่าพารามิเตอร์หรือไม่ใช่ตัวเลข | มากกว่า [8] |
greater_than_equal_to |
ใช่ | ส่งคืนค่า FALSE หากองค์ประกอบของฟอร์มน้อยกว่าค่าพารามิเตอร์หรือไม่ใช่ตัวเลข | มากขึ้น_than_equal_to [8] |
less_than |
ใช่ | ส่งคืนค่า FALSE หากองค์ประกอบฟอร์มมากกว่าหรือเท่ากับค่าพารามิเตอร์หรือไม่ใช่ตัวเลข | น้อยกว่า [8] |
less_than_equal_to |
ใช่ | ส่งกลับค่า FALSE หากองค์ประกอบฟอร์มมากกว่าค่าพารามิเตอร์หรือไม่ใช่ตัวเลข | less_than_equal_to [8] |
in_list |
ใช่ | ส่งกลับค่า FALSE หากองค์ประกอบฟอร์มไม่อยู่ในรายการที่กำหนดไว้ล่วงหน้า | in_list [แดงน้ำเงินเขียว] |
alpha |
ไม่ | ส่งกลับค่า FALSE หากองค์ประกอบฟอร์มมีสิ่งอื่นนอกเหนือจากอักขระตามตัวอักษร | |
alpha_numeric |
ไม่ | ส่งกลับค่า FALSE หากองค์ประกอบฟอร์มมีสิ่งอื่นนอกเหนือจากอักขระที่เป็นตัวอักษรและตัวเลข | |
alpha_numeric_spaces |
ไม่ | ส่งกลับค่า FALSE หากองค์ประกอบฟอร์มมีสิ่งอื่นนอกเหนือจากอักขระที่เป็นตัวอักษรและตัวเลขคละกันหรือช่องว่าง ควรใช้หลังการตัดแต่งเพื่อหลีกเลี่ยงช่องว่างที่จุดเริ่มต้นหรือจุดสิ้นสุด | |
alpha_dash |
ไม่ | ส่งคืนค่า FALSE หากองค์ประกอบฟอร์มมีสิ่งอื่นนอกเหนือจากอักขระที่เป็นตัวเลขและตัวอักษรขีดล่างหรือขีดกลาง | |
numeric |
ไม่ | ส่งกลับค่า FALSE หากองค์ประกอบฟอร์มมีสิ่งอื่นที่ไม่ใช่อักขระตัวเลข | |
integer |
ไม่ | ส่งคืนค่า FALSE หากองค์ประกอบฟอร์มมีสิ่งอื่นที่ไม่ใช่จำนวนเต็ม | |
decimal |
ไม่ | ส่งคืนค่า FALSE หากองค์ประกอบฟอร์มมีสิ่งอื่นนอกเหนือจากตัวเลขทศนิยม | |
is_natural |
ไม่ | ส่งกลับค่า FALSE หากองค์ประกอบฟอร์มมีสิ่งอื่นนอกเหนือจากจำนวนธรรมชาติ - 0, 1, 2, 3 เป็นต้น | |
is_natural_no_zero |
ไม่ | ส่งกลับค่า FALSE หากองค์ประกอบฟอร์มมีสิ่งอื่นนอกเหนือจากจำนวนธรรมชาติ แต่ไม่ใช่ศูนย์ - 1, 2, 3 เป็นต้น | |
valid_url |
ไม่ | ส่งคืนค่า FALSE หากองค์ประกอบฟอร์มไม่มี URL ที่ถูกต้อง | |
valid_email |
ไม่ | ส่งกลับค่า FALSE หากองค์ประกอบฟอร์มไม่มีที่อยู่อีเมลที่ถูกต้อง | |
valid_emails |
ไม่ | ส่งคืน FALSE หากค่าใด ๆ ที่ระบุในรายการที่คั่นด้วยจุลภาคไม่ใช่อีเมลที่ถูกต้อง | |
valid_ip |
ไม่ | ส่งคืนค่า FALSE หาก IP ที่ให้มาไม่ถูกต้อง ยอมรับพารามิเตอร์ทางเลือกของ 'ipv4' หรือ 'ipv6' เพื่อระบุรูปแบบ IP | |
valid_base64 |
ไม่ | ส่งคืน FALSE หากสตริงที่ให้มามีสิ่งอื่นนอกเหนือจากอักขระ Base64 ที่ถูกต้อง |