CodeIgniter - Hướng dẫn nhanh

CodeIgniter là một khung phát triển ứng dụng, có thể được sử dụng để phát triển trang web, sử dụng PHP. Nó là một khung mã nguồn mở. Nó có một bộ chức năng rất phong phú, điều này sẽ làm tăng tốc độ phát triển trang web.

Nếu bạn hiểu rõ về PHP, thì CodeIgniter sẽ làm cho nhiệm vụ của bạn dễ dàng hơn. Nó có một bộ thư viện và trình trợ giúp rất phong phú. Bằng cách sử dụng CodeIgniter, bạn sẽ tiết kiệm được rất nhiều thời gian, nếu bạn đang phát triển một trang web từ đầu. Không chỉ vậy, một trang web được xây dựng trong CodeIgniter cũng rất an toàn, vì nó có khả năng ngăn chặn các cuộc tấn công khác nhau diễn ra thông qua các trang web.

Tính năng CodeIgniter

Một số tính năng quan trọng của CodeIgniter được liệt kê dưới đây:

  • Hệ thống dựa trên mô hình-View-Controller

  • Trọng lượng cực kỳ nhẹ

  • Đầy đủ các lớp cơ sở dữ liệu nổi bật với sự hỗ trợ cho một số nền tảng.

  • Hỗ trợ cơ sở dữ liệu trình tạo truy vấn

  • Xác thực biểu mẫu và dữ liệu

  • Bảo mật và Lọc XSS

  • Quản lý phiên

  • Lớp gửi Email. Hỗ trợ Tệp đính kèm, HTML / Email văn bản, nhiều giao thức (sendmail, SMTP và Mail) và hơn thế nữa.

  • Thư viện thao tác hình ảnh (cắt, thay đổi kích thước, xoay, v.v.). Hỗ trợ GD, ImageMagick và NetPBM

  • Lớp tải lên tệp

  • Lớp FTP

  • Localization

  • Pagination

  • Mã hóa dữ liệu

  • Benchmarking

  • Bộ nhớ đệm toàn trang

  • Lỗi ghi nhật ký

  • Hồ sơ ứng dụng

  • Lớp lập lịch

  • Lớp tác nhân người dùng

  • Lớp mã hóa Zip

  • Lớp công cụ mẫu

  • Lớp học theo dõi

  • Thư viện XML-RPC

  • Lớp kiểm tra đơn vị

  • URL thân thiện với công cụ tìm kiếm

  • Định tuyến URI linh hoạt

  • Hỗ trợ Hooks và Class Extensions

  • Thư viện lớn các hàm "trợ giúp"

Rất dễ cài đặt CodeIgniter. Chỉ cần làm theo các bước dưới đây -

  • Step-1- Tải xuống CodeIgniter từ liên kết CodeIgniter

  • Step-2 - Giải nén thư mục.

  • Step-3 - Tải tất cả các tệp và thư mục lên máy chủ của bạn.

  • Step-4 - Sau khi tải tất cả các tệp lên máy chủ của bạn, hãy truy cập URL máy chủ của bạn, ví dụ: www.domain-name.com.

Khi truy cập URL, bạn sẽ thấy màn hình sau:

Kiến trúc của ứng dụng CodeIgniter được hiển thị bên dưới.

  • Như trong hình, bất cứ khi nào một yêu cầu đến CodeIgniter, trước tiên nó sẽ chuyển đến index.php trang.

  • Trong bước thứ hai, Routing sẽ quyết định chuyển yêu cầu này đến bước 3 để lưu vào bộ nhớ đệm hay chuyển yêu cầu này sang bước 4 để kiểm tra bảo mật.

  • Nếu trang được yêu cầu đã có trong Caching, sau đó Routing sẽ chuyển yêu cầu đến bước 3 và phản hồi sẽ quay trở lại người dùng.

  • Nếu trang được yêu cầu không tồn tại trong Caching, sau đó Routing sẽ chuyển trang được yêu cầu sang bước 4 cho Security Séc.

  • Trước khi chuyển yêu cầu tới Application Controller, các Securitycủa dữ liệu đã gửi được kiểm tra. SauSecurity kiểm tra Application Controller tải cần thiết Models, Libraries, Helpers, PluginsScripts và chuyển nó cho View.

  • Các View sẽ hiển thị trang với dữ liệu có sẵn và chuyển nó cho Caching. Vì trang được yêu cầu không được lưu vào bộ nhớ đệm trước đó nên lần này nó sẽ được lưu vào bộ nhớ đệmCaching, để xử lý trang này nhanh chóng cho các yêu cầu trong tương lai.

Cấu trúc thư mục

Hình ảnh dưới đây cho thấy cấu trúc thư mục của CodeIgniter.

Cấu trúc thư mục CodeIgniter được chia thành 3 thư mục -

  • Application
  • System
  • User_guide

Ứng dụng

Như tên cho biết thư mục Ứng dụng chứa tất cả mã của ứng dụng mà bạn đang xây dựng. Đây là thư mục mà bạn sẽ phát triển dự án của mình. Thư mục Ứng dụng chứa một số thư mục khác, được giải thích bên dưới -

  • Cache- Thư mục này chứa tất cả các trang được lưu trong bộ nhớ cache của ứng dụng của bạn. Các trang được lưu trong bộ nhớ cache này sẽ làm tăng tốc độ truy cập tổng thể của các trang.

  • Config- Thư mục này chứa các tệp khác nhau để cấu hình ứng dụng. Với sự giúp đỡ củaconfig.php, người dùng có thể cấu hình ứng dụng. Sử dụngdatabase.php , người dùng có thể cấu hình cơ sở dữ liệu của ứng dụng.

  • Controllers- Thư mục này chứa các bộ điều khiển của ứng dụng của bạn. Nó là phần cơ bản của ứng dụng của bạn.

  • Core - Thư mục này sẽ chứa lớp cơ sở của ứng dụng của bạn.

  • Helpers - Trong thư mục này, bạn có thể đặt lớp trợ giúp của ứng dụng của mình.

  • Hooks - Các tệp trong thư mục này cung cấp một phương tiện để khai thác và sửa đổi hoạt động bên trong của khung mà không cần hack các tệp lõi.

  • Language - Thư mục này chứa các tệp liên quan đến ngôn ngữ.

  • Libraries - Thư mục này chứa các tệp của các thư viện được phát triển cho ứng dụng của bạn.

  • Logs - Thư mục này chứa các tập tin liên quan đến nhật ký của hệ thống.

  • Models - Đăng nhập cơ sở dữ liệu sẽ được đặt trong thư mục này.

  • Third_party - Trong thư mục này, bạn có thể đặt bất kỳ plugin nào sẽ được sử dụng cho ứng dụng của bạn.

  • Views - Các tệp HTML của ứng dụng sẽ được đặt trong thư mục này.

Hệ thống

Thư mục này chứa mã lõi CodeIgniter, thư viện, trình trợ giúp và các tệp khác, giúp mã hóa dễ dàng. Các thư viện và trình trợ giúp này được tải và sử dụng trong phát triển ứng dụng web.

Thư mục này chứa tất cả mã CodeIgniter của hệ quả, được tổ chức thành các thư mục khác nhau -

  • Core- Thư mục này chứa lớp lõi của CodeIgniter. Không sửa đổi bất cứ điều gì ở đây. Tất cả công việc của bạn sẽ diễn ra trong thư mục ứng dụng. Ngay cả khi mục đích của bạn là mở rộng lõi CodeIgniter, bạn phải làm điều đó với hook và hook nằm trong thư mục ứng dụng.

  • Database - Thư mục cơ sở dữ liệu chứa các trình điều khiển cơ sở dữ liệu cốt lõi và các tiện ích cơ sở dữ liệu khác.

  • Fonts - Thư mục phông chữ chứa các thông tin và tiện ích liên quan đến phông chữ.

  • Helpers - Thư mục trình trợ giúp chứa trình trợ giúp CodeIgniter tiêu chuẩn (chẳng hạn như trình trợ giúp ngày, cookie và URL).

  • Language- Thư mục ngôn ngữ chứa các tệp ngôn ngữ. Bạn có thể bỏ qua nó cho bây giờ.

  • Libraries- Thư mục thư viện chứa các thư viện CodeIgniter tiêu chuẩn (để trợ giúp bạn với e-mail, lịch, tải lên tệp và hơn thế nữa). Bạn có thể tạo thư viện của riêng mình hoặc mở rộng (và thậm chí thay thế) các thư viện tiêu chuẩn, nhưng những thư viện đó sẽ được lưu trongapplication/libraries để giữ chúng tách biệt với các thư viện CodeIgniter tiêu chuẩn được lưu trong thư mục cụ thể này.

User_guide

Đây là hướng dẫn sử dụng CodeIgniter của bạn. Về cơ bản, nó là phiên bản ngoại tuyến của hướng dẫn sử dụng trên trang web CodeIgniter. Bằng cách sử dụng này, người ta có thể tìm hiểu các chức năng của nhiều thư viện, trình trợ giúp và các lớp học. Bạn nên xem qua hướng dẫn sử dụng này trước khi xây dựng ứng dụng web đầu tiên của mình trong CodeIgniter.

Bên cạnh ba thư mục này, có một tệp quan trọng nữa có tên là “index.php”. Trong tệp này, chúng tôi có thể đặt môi trường ứng dụng và mức độ lỗi, đồng thời chúng tôi có thể xác định tên thư mục hệ thống và ứng dụng. Bạn không nên chỉnh sửa các cài đặt này nếu bạn không có đủ kiến ​​thức về những gì bạn sẽ làm.

CodeIgniter dựa trên Model-View-Controller (MVC) development pattern. MVC là một cách tiếp cận phần mềm tách logic ứng dụng khỏi trình bày. Trên thực tế, nó cho phép các trang web của bạn chứa tập lệnh tối thiểu vì bản trình bày tách biệt với tập lệnh PHP.

  • Các Modelđại diện cho các cấu trúc dữ liệu của bạn. Thông thường, các lớp mô hình của bạn sẽ chứa các hàm giúp bạn truy xuất, chèn và cập nhật thông tin trong cơ sở dữ liệu của mình.

  • Các Viewlà thông tin đang được trình bày cho người dùng. Một dạng xem thường sẽ là một trang web, nhưng trong CodeIgniter, một dạng xem cũng có thể là một phân đoạn trang như đầu trang hoặc chân trang. Nó cũng có thể là một trang RSS hoặc bất kỳ loại “trang” nào khác.

  • Các Controller đóng vai trò trung gian giữa Mô hình, Chế độ xem và bất kỳ tài nguyên nào khác cần thiết để xử lý yêu cầu HTTP và tạo trang web.

Bộ điều khiển

Bộ điều khiển là một tệp lớp đơn giản. Như tên cho thấy, nó kiểm soát toàn bộ ứng dụng bằng URI.

Tạo bộ điều khiển

Đầu tiên, hãy truy cập application/controllersthư mục. Bạn sẽ tìm thấy hai tệp ở đó,index.htmlWelcome.php. Các tệp này đi kèm với CodeIgniter.

Giữ nguyên những tệp này. Tạo một tệp mới theo cùng một đường dẫn có tên “Test.php”. Viết mã sau vào tệp đó -

<?php 
   class Test extends CI_Controller {
  
      public function index() { 
         echo "Hello World!"; 
      } 
   } 
?>

Các Test lớp mở rộng một lớp dựng sẵn được gọi là CI_Controller. Lớp này phải được mở rộng bất cứ khi nào bạn muốn tạo lớp Bộ điều khiển của riêng mình.

Gọi người điều khiển

Bộ điều khiển trên có thể được gọi bằng URI như sau:

http://www.your-domain.com/index.php/test

Lưu ý từ “test”Trong URI ở trên sau index.php. Điều này cho biết tên lớp của bộ điều khiển. Như chúng tôi đã đưa ra tên của bộ điều khiển "Test", chúng tôi đang viết "test”Sau index.php. Tên lớp phải bắt đầu bằnguppercase letter nhưng chúng ta cần viết lowercase letterkhi chúng tôi gọi bộ điều khiển đó bằng URI. Cú pháp chung để gọi bộ điều khiển như sau:

http://www.your-domain.com/index.php/controller/method-name

Tạo và gọi phương thức xây dựng

Hãy để chúng tôi sửa đổi lớp trên và tạo một phương thức khác có tên là “hello”.

<?php 
   class Test extends CI_Controller {  
	
      public function index() { 
         echo "This is default function."; 
      } 
  
      public function hello() { 
         echo "This is hello function."; 
      } 
   } 
?>

Chúng ta có thể thực thi bộ điều khiển trên theo ba cách sau:

  • http://www.your-domain.com/index.php/test
  • http://www.your-domain.com/index.php/test/index
  • http://www.your-domain.com/index.php/test/hello

Sau khi truy cập URI đầu tiên trong trình duyệt, chúng tôi nhận được kết quả như trong hình dưới đây. Như bạn có thể thấy, chúng tôi đã có đầu ra của phương thức “index”, Mặc dù chúng tôi không chuyển tên của phương thức là URI. Chúng tôi chỉ sử dụng tên bộ điều khiển trong URI. Trong những tình huống như vậy, CodeIgniter gọi phương thức mặc định “index”.

Truy cập vào URI thứ hai trong trình duyệt, chúng tôi nhận được kết quả tương tự như trong hình trên. Ở đây, chúng ta đã chuyển tên của phương thức sau tên của bộ điều khiển trong URI. Như tên của phương pháp là “index”, Chúng tôi đang nhận được cùng một sản lượng.

Truy cập URI thứ ba trong trình duyệt, chúng tôi nhận được kết quả như thể hiện trong hình bên dưới. Như bạn có thể thấy, chúng tôi đang nhận được đầu ra của phương pháp “hello"Bởi vì chúng tôi đã vượt qua"hello"Là tên phương thức, sau tên của bộ điều khiển"test”Trong URI.

Những điểm cần nhớ

  • Tên của lớp bộ điều khiển phải bắt đầu bằng một chữ cái viết hoa.

  • Bộ điều khiển phải được gọi bằng chữ thường.

  • Không sử dụng cùng tên của phương thức với lớp cha của bạn, vì nó sẽ ghi đè chức năng của lớp cha.

Lượt xem

Đây có thể là một trang web đơn giản hoặc phức tạp, có thể được gọi bởi bộ điều khiển. Trang web có thể chứa đầu trang, chân trang, thanh bên, v.v. Không thể gọi trực tiếp chế độ xem. Hãy để chúng tôi tạo một khung nhìn đơn giản. Tạo một tệp mới trongapplication/views với tên “test.php”Và sao chép đoạn mã đã cho bên dưới vào tệp đó.

<!DOCTYPE html> 
<html lang = "en"> 

   <head> 
      <meta charset = "utf-8"> 
      <title>CodeIgniter View Example</title> 
   </head>
	
   <body> 
      CodeIgniter View Example 
   </body>
	
</html>

Thay đổi mã của application/controllers/test.php như hình bên dưới.

Đang tải chế độ xem

Chế độ xem có thể được tải theo cú pháp sau:

$this->load->view('name');

Trong đó tên là tệp dạng xem, đang được hiển thị. Nếu bạn đã lên kế hoạch lưu trữ tệp dạng xem trong thư mục nào đó thì bạn có thể sử dụng cú pháp sau:

$this->load->view('directory-name/name');

Không cần thiết phải chỉ định phần mở rộng là php, trừ khi một cái gì đó khác ngoài .php được sử dụng.

Phương thức index () đang gọi phương thức view và chuyển "test" làm đối số cho phương thức view () bởi vì chúng tôi đã lưu trữ mã hóa html trong "test.php”Tập tin dưới application/views/test.php.

<?php 
   class Test extends CI_Controller { 
	
      public function index() { 
         $this->load->view('test'); 
      } 
   } 
?>

Đây là đầu ra của đoạn mã trên -

Lưu đồ sau đây minh họa cách mọi thứ hoạt động -

Mô hình

Các lớp mô hình được thiết kế để làm việc với thông tin trong cơ sở dữ liệu. Ví dụ: nếu bạn đang sử dụng CodeIgniter để quản lý người dùng trong ứng dụng của mình thì bạn phải có lớp mô hình, lớp này chứa các chức năng chèn, xóa, cập nhật và truy xuất dữ liệu của người dùng.

Tạo lớp mô hình

Các lớp mô hình được lưu trữ trong application/modelsdanh mục. Đoạn mã sau đây cho thấy cách tạo lớp mô hình trong CodeIgniter.

<?php 
   Class Model_name extends CI_Model { 
	
      Public function __construct() { 
         parent::__construct(); 
      } 
   } 
?>

Trong đó Model_name là tên của lớp mô hình mà bạn muốn cung cấp. Mỗi lớp mô hình phải kế thừa lớp CI_Model của CodeIgniter. Chữ cái đầu tiên của lớp mô hình phải được viết hoa. Sau đây là mã cho lớp mô hình của người dùng.

<?php 
   Class User_model extends CI_Model {
	
      Public function __construct() { 
         parent::__construct(); 
      } 
		
   } 
?>

Lớp mô hình trên phải được lưu dưới dạng User_model.php. Tên lớp và tên tệp phải giống nhau.

Đang tải mô hình

Mô hình có thể được gọi trong bộ điều khiển. Mã sau có thể được sử dụng để tải bất kỳ mô hình nào.

$this->load->model('model_name');

Trong đó model_name là tên của mô hình sẽ được tải. Sau khi tải mô hình, bạn chỉ cần gọi phương thức của nó như hình dưới đây.

$this->model_name->method();

Tự động tải mô hình

Có thể có những tình huống mà bạn muốn một số lớp mô hình trong suốt ứng dụng của mình. Trong những tình huống như vậy, sẽ tốt hơn nếu chúng ta tự động tải nó.

/*
| ---------------------------------------------------------------
|  Auto-Load Models
| ---------------------------------------------------------------
| Prototype:
|
|   $autoload['model'] = array('first_model', 'second_model');
|
| You can also supply an alternative model name to be assigned
| in the controller:
|  
|   $autoload['model'] = array('first_model' => 'first'); */ $autoload['model'] = array();

Như trong hình trên, hãy chuyển tên của mô hình trong mảng mà bạn muốn tự động tải và nó sẽ được tự động tải, trong khi hệ thống ở trạng thái khởi tạo và có thể truy cập được trong toàn bộ ứng dụng.

Người trợ giúp

Như tên cho thấy, nó sẽ giúp bạn xây dựng hệ thống của mình. Nó được chia thành các chức năng nhỏ để phục vụ các chức năng khác nhau. Một số trợ giúp có sẵn trong CodeIgniter, được liệt kê trong bảng dưới đây. Chúng tôi cũng có thể xây dựng những người trợ giúp của riêng mình.

Người trợ giúp thường được lưu trữ trong system/helpers, hoặc là application/helpers directory. Trình trợ giúp tùy chỉnh được lưu trữ trongapplication/helpers thư mục và trình trợ giúp của hệ thống được lưu trữ trong system/helpersdanh mục. CodeIgniter sẽ xuất hiện đầu tiên trongapplication/helpers directory. Nếu thư mục không tồn tại hoặc trình trợ giúp được chỉ định không được định vị, CodeIgniter sẽ thay thế, tìm kiếm trong toàn cầu của bạnsystem/helpers/ directory. Mỗi trình trợ giúp, dù là trình trợ giúp tùy chỉnh hay trợ giúp hệ thống, đều phải được tải trước khi sử dụng.

SN Tên và mô tả của người trợ giúp
1

Array Helper

Tệp trợ giúp mảng chứa các hàm hỗ trợ làm việc với mảng.

2

CAPTCHA Helper

Tệp Trình trợ giúp CAPTCHA chứa các chức năng hỗ trợ tạo hình ảnh CAPTCHA.

3

Cookie Helper

Tệp Trình trợ giúp Cookie chứa các chức năng hỗ trợ làm việc với cookie.

4

Date Helper

Tệp Trợ giúp Ngày tháng chứa các hàm giúp bạn làm việc với ngày tháng.

5

Directory Helper

Tệp Trình trợ giúp Thư mục chứa các hàm hỗ trợ làm việc với các thư mục.

6

Download Helper

Trình trợ giúp Tải xuống cho phép bạn tải dữ liệu xuống máy tính để bàn của mình.

7

Email Helper

Trình trợ giúp Email cung cấp một số chức năng hỗ trợ để làm việc với Email. Để có giải pháp email mạnh mẽ hơn, hãy xem Lớp email của CodeIgniter.

số 8

File Helper

Tệp Trình trợ giúp tệp chứa các chức năng hỗ trợ làm việc với tệp.

9

Form Helper

Tệp Trình trợ giúp biểu mẫu chứa các hàm hỗ trợ làm việc với biểu mẫu.

10

HTML Helper

Tệp Trình trợ giúp HTML chứa các hàm hỗ trợ làm việc với HTML.

11

Inflector Helper

Tệp Inflector Helper chứa các hàm cho phép bạn thay đổi các từ thành số nhiều, số ít, trường hợp lạc đà, v.v.

12

Language Helper

Tệp Trình trợ giúp ngôn ngữ chứa các hàm hỗ trợ làm việc với các tệp ngôn ngữ.

13

Number Helper

Tệp Trình trợ giúp số chứa các hàm giúp bạn làm việc với dữ liệu số.

14

Path Helper

Tệp Trình trợ giúp Đường dẫn chứa các hàm cho phép bạn làm việc với các đường dẫn tệp trên máy chủ.

15

Security Helper

Tệp Trình trợ giúp bảo mật chứa các chức năng liên quan đến bảo mật.

16

Smiley Helper

Tệp Smiley Helper chứa các chức năng cho phép bạn quản lý các biểu tượng mặt cười (biểu tượng cảm xúc).

17

String Helper

Tệp Trình trợ giúp chuỗi chứa các hàm hỗ trợ làm việc với chuỗi.

18

Text Helper

Tệp Trình trợ giúp Văn bản chứa các hàm hỗ trợ làm việc với văn bản.

19

Typography Helper

Tệp trợ giúp về kiểu chữ chứa các chức năng giúp định dạng văn bản của bạn theo những cách phù hợp về mặt ngữ nghĩa.

20

URL Helper

Tệp Trình trợ giúp URL chứa các chức năng hỗ trợ làm việc với URL.

21

XML Helper

Tệp Trình trợ giúp XML chứa các hàm hỗ trợ làm việc với dữ liệu XML.

Đang tải người trợ giúp

Một trình trợ giúp có thể được tải như hình dưới đây -

$this->load->helper('name');

Where name là tên của người trợ giúp. Ví dụ: nếu bạn muốn tải Trình trợ giúp URL, thì nó có thể được tải dưới dạng:

$this->load->helper('url');

định tuyến

CodeIgniter có hệ thống định tuyến URI thân thiện với người dùng để bạn có thể dễ dàng định tuyến lại URL. Thông thường, có một mối quan hệ 1-1 giữa một chuỗi URL và lớp / phương thức điều khiển tương ứng của nó. Các phân đoạn trong URI thường tuân theo mẫu này -

your-domain.com/class/method/id/
  • Các first segment đại diện cho lớp bộ điều khiển sẽ được gọi.

  • Các second segment đại diện cho hàm lớp hoặc phương thức cần được gọi.

  • Các thirdvà bất kỳ phân đoạn bổ sung nào, đại diện cho ID và bất kỳ biến nào sẽ được chuyển đến bộ điều khiển.

Trong một số trường hợp, bạn có thể muốn thay đổi cơ chế định tuyến mặc định này. CodeIgniter cung cấp phương tiện mà qua đó bạn có thể đặt các quy tắc định tuyến của riêng mình.

Tùy chỉnh quy tắc định tuyến

Có một tệp cụ thể mà bạn có thể xử lý tất cả những thứ này. Tệp được đặt tại application / config / route.php. Bạn sẽ tìm thấy một mảng được gọi là$route in which you can customize your routing rules. The key in the $mảng định tuyến sẽ quyết định định tuyến cái gì và giá trị sẽ quyết định định tuyến ở đâu. Có ba tuyến đường dành riêng trong CodeIgniter.

SN Các tuyến và mô tả dành riêng
1

$route['default_controller']

Tuyến đường này cho biết lớp bộ điều khiển nào nên được tải, nếu URI không chứa dữ liệu, đây sẽ là trường hợp mọi người tải URL gốc của bạn. Bạn nên có một lộ trình mặc định, nếu không, theo mặc định, một trang 404 sẽ xuất hiện. Chúng ta có thể đặt trang chủ của trang web tại đây để nó được tải theo mặc định.

2

$route['404_override']

Tuyến này cho biết lớp bộ điều khiển nào nên được tải nếu bộ điều khiển được yêu cầu không được tìm thấy. Nó sẽ ghi đè trang lỗi 404 mặc định. Nó sẽ không ảnh hưởng đếnshow_404() chức năng này sẽ tiếp tục tải mặc định error_404.php trong tập tin application/views/errors/error_404.php.

3

$route['translate_uri_dashes']

Rõ ràng bằng giá trị Boolean, đây không phải là một tuyến đường chính xác. Tùy chọn này cho phép bạn tự động thay thế dấu gạch ngang ('-') bằng dấu gạch dưới trong phân đoạn URI của bộ điều khiển và phương thức, do đó giúp bạn tiết kiệm các mục nhập tuyến bổ sung nếu bạn cần làm điều đó. Điều này là bắt buộc vì dấu gạch ngang không phải là một lớp hoặc ký tự tên phương thức hợp lệ và sẽ gây ra lỗi nghiêm trọng, nếu bạn cố sử dụng nó.

Các tuyến đường có thể được tùy chỉnh bởi wildcards hoặc bằng cách sử dụng regular expressions nhưng hãy nhớ rằng các quy tắc định tuyến tùy chỉnh này phải đến sau các quy tắc dành riêng.

Ký tự đại diện

Chúng tôi có thể sử dụng hai ký tự đại diện như được giải thích bên dưới:

  • (:num) - Nó sẽ khớp với một phân đoạn chỉ chứa các số.

  • (:any) - Nó sẽ khớp với một đoạn chứa bất kỳ ký tự nào.

Example

$route['product/:num']='catalog/product_lookup';

Trong ví dụ trên, nếu từ "product" theo nghĩa đen được tìm thấy trong phân đoạn đầu tiên của URL và một số được tìm thấy trong phân đoạn thứ hai, thì lớp "danh mục" và phương thức "product_lookup" sẽ được sử dụng thay thế.

Biểu thức chính quy

Giống như các ký tự đại diện, chúng ta cũng có thể sử dụng các biểu thức chính quy trong $route array keyphần. Nếu bất kỳ URI nào khớp với biểu thức chính quy, thì nó sẽ được chuyển đến phần giá trị được đặt thành mảng $ route.

Example

$route['products/([a-z]+)/(\d+)']='$1/id_$2';

Trong ví dụ trên, một URI tương tự như products / shoes / 123 thay vào đó sẽ gọi là “shoes"Lớp điều khiển và"id_123" phương pháp.

Sau khi thiết lập trang web, điều tiếp theo mà chúng ta nên làm là cấu hình trang web. Thư mục ứng dụng / cấu hình chứa một nhóm tệp đặt cấu hình cơ bản cho trang web của bạn.

Định cấu hình URL cơ sở

URL cơ sở của trang web có thể được định cấu hình trong tệp application / config / config.php. Nó là URL đến thư mục gốc CodeIgniter của bạn. Thông thường, đây sẽ là URL cơ sở của bạn, với một dấu gạch chéo, ví dụ:

http://example.com/

Nếu điều này không được đặt, thì CodeIgniter sẽ cố gắng đoán giao thức, miền và đường dẫn đến cài đặt của bạn. Tuy nhiên, bạn phải luôn định cấu hình điều này một cách rõ ràng và không bao giờ dựa vào tự động đánh giá, đặc biệt là trong môi trường sản xuất. Bạn có thể định cấu hình URL cơ sở trong mảng $ config với khóa “base_url” như hình dưới đây -

$config['base_url'] = 'http://your-domain.com';

Cấu hình cơ sở dữ liệu

Cơ sở dữ liệu của trang có thể được cấu hình trong tệp application / config / database.php. Thường thì chúng ta cần thiết lập cơ sở dữ liệu cho các môi trường khác nhau như phát triển và sản xuất. Với mảng đa chiều được cung cấp trong CodeIgniter, chúng ta có thể thiết lập cơ sở dữ liệu cho các môi trường khác nhau. Cài đặt cấu hình được lưu trữ trong mảng như hình dưới đây -

$db['default'] = array( 
   'dsn'   => '', 
   'hostname' => 'localhost', 
   'username' => 'root', 
   'password' => '', 
   'database' => 'database_name', 
   'dbdriver' => 'mysqli', 
   'dbprefix' => '', 
   'pconnect' => TRUE, 
   'db_debug' => TRUE, 
   'cache_on' => FALSE, 
   'cachedir' => '', 
   'char_set' => 'utf8', 
   'dbcollat' => 'utf8_general_ci',
   'swap_pre' => '', 
   'encrypt' => FALSE, 
   'compress' => FALSE, 
   'stricton' => FALSE, 
   'failover' => array() 
);

Bạn có thể để lại một số tùy chọn cho giá trị mặc định của chúng ngoại trừ tên máy chủ, tên người dùng, mật khẩu, cơ sở dữ liệu và dbdriver.

  • hostname - Chỉ định vị trí cơ sở dữ liệu của bạn tại đây, ví dụ như localhost hoặc địa chỉ IP

  • username - Đặt tên người dùng của cơ sở dữ liệu của bạn ở đây.

  • password - Đặt mật khẩu cho cơ sở dữ liệu của bạn tại đây.

  • database - Đặt tên của cơ sở dữ liệu tại đây.

  • dbdriver - Đặt loại cơ sở dữ liệu mà bạn đang sử dụng, ví dụ: MySQL, MySQLi, Postgre SQL, ODBC và MS SQL.

Bằng cách thay đổi khóa của mảng $db, bạn có thể thiết lập cấu hình khác của cơ sở dữ liệu như hình dưới đây. Ở đây, chúng tôi đã đặt khóa thành‘test’ để thiết lập cơ sở dữ liệu cho môi trường thử nghiệm, bằng cách giữ nguyên môi trường cơ sở dữ liệu khác.

$db['test'] = array( 
   'dsn'   => '', 
   'hostname' => 'localhost', 
   'username' => 'root', 
   'password' => '', 
   'database' => 'database_name', 
   'dbdriver' => 'mysqli', 
   'dbprefix' => '', 
   'pconnect' => TRUE, 
   'db_debug' => TRUE, 
   'cache_on' => FALSE, 
   'cachedir' => '', 
   'char_set' => 'utf8', 
   'dbcollat' => 'utf8_general_ci', 
   'swap_pre' => '', 
   'encrypt' => FALSE, 
   'compress' => FALSE, 
   'stricton' => FALSE, 
   'failover' => array()
);

Bạn chỉ cần chuyển sang môi trường khác bằng cách thay đổi giá trị của một biến như hình dưới đây:

$active_group = ‘default’; //This will set the default environment

$active_group = ‘test’; //This will set the test environment

Cấu hình tự động tải

Tệp này chỉ định, theo mặc định, hệ thống nào sẽ được tải. Để giữ cho khung công tác nhẹ nhất có thể, chỉ những tài nguyên tối thiểu tuyệt đối được tải theo mặc định. Người ta nên tự động tải hệ thống được sử dụng thường xuyên, thay vì tải nó ở cấp cục bộ, lặp đi lặp lại. Sau đây là những thứ bạn có thể tải tự động -

  • Libraries- Đây là một danh sách các thư viện, sẽ được tải tự động. Cung cấp danh sách các thư viện trong một mảng như hình dưới đây để CodeIgniter tự động tải. Trong ví dụ này, chúng tôi đang tự động tải cơ sở dữ liệu, thư viện email và phiên.

$autoload['libraries'] = array('database', 'email', 'session');
  • Drivers- Các lớp này nằm trong hệ thống / thư viện / hoặc trong thư mục ứng dụng / thư viện / của bạn, nhưng cũng được đặt bên trong thư mục con của riêng chúng và chúng mở rộng lớp CI_Driver_Library. Họ cung cấp nhiều tùy chọn trình điều khiển có thể hoán đổi cho nhau. Sau đây là một ví dụ để tự động tải trình điều khiển bộ nhớ cache.

$autoload['drivers'] = array('cache');
  • Helper files- Đây là một danh sách các tệp trợ giúp, được tự động tải. Cung cấp danh sách các thư viện trong mảng, như được hiển thị bên dưới, được CodeIgniter tự động nạp. Trong ví dụ đã cho, chúng tôi đang tự động tải URL và trình trợ giúp tệp.

$autoload['helper'] = array('url', 'file');
  • Custom config files- Các tệp này chỉ được sử dụng khi bạn đã tạo các tệp cấu hình tùy chỉnh. Nếu không, hãy để trống. Sau đây là một ví dụ về cách tự động tải nhiều hơn một tệp cấu hình.

$autoload['config'] = array('config1', 'config2');
  • Language files- Đây là danh sách các tệp ngôn ngữ sẽ được tải tự động. Hãy xem ví dụ dưới đây. Cung cấp danh sách các ngôn ngữ trong một mảng như hình dưới đây để CodeIgniter tự động tải. Hãy nhớ rằng không bao gồm phần "_lang" trong tệp của bạn. Ví dụ: "codeigniter_lang.php" sẽ được tham chiếu dưới dạng mảng ('codeigniter');

  • Models- Đây là một danh sách các tập tin mô hình, cần được tự động tải. Cung cấp danh sách các mô hình trong một mảng như hình dưới đây để CodeIgniter tự động tải. Sau đây là ví dụ về cách tự động tải nhiều tệp mô hình.

$autoload['model'] = array('first_model', 'second_model');

Giống như bất kỳ khuôn khổ nào khác, chúng ta cần phải tương tác với cơ sở dữ liệu rất thường xuyên và CodeIgniter làm cho công việc này trở nên dễ dàng với chúng ta. Nó cung cấp một bộ chức năng phong phú để tương tác với cơ sở dữ liệu.

Trong phần này, chúng ta sẽ hiểu cách hoạt động của các hàm CRUD (Tạo, Đọc, Cập nhật, Xóa) với CodeIgniter. Chúng tôi sẽ sử dụngstud bảng để chọn, cập nhật, xóa và chèn dữ liệu vào stud bàn.

Tên bảng: stud
roll_no int (11)
Tên varchar (30)

Kết nối với cơ sở dữ liệu

Chúng ta có thể kết nối với cơ sở dữ liệu theo hai cách sau:

  • Automatic Connecting- Kết nối tự động có thể được thực hiện bằng cách sử dụng tệp ứng dụng / config / autoload.php. Kết nối tự động sẽ tải cơ sở dữ liệu cho mỗi và mọi trang. Chúng ta chỉ cần thêm thư viện cơ sở dữ liệu như hình dưới đây -

$autoload['libraries'] = array(‘database’);
  • Manual Connecting- Nếu bạn chỉ muốn kết nối cơ sở dữ liệu cho một số trang, thì chúng ta có thể kết nối thủ công. Chúng ta có thể kết nối với cơ sở dữ liệu theo cách thủ công bằng cách thêm dòng sau vào bất kỳ lớp nào.

$this->load->database();

Ở đây, chúng tôi không chuyển bất kỳ đối số nào vì mọi thứ được đặt trong tệp cấu hình cơ sở dữ liệu application / config / database.php

Chèn Bản ghi

Để chèn một bản ghi vào cơ sở dữ liệu, hàm insert () được sử dụng như được hiển thị trong bảng sau:

Syntax

insert ([ $ table = '' [, $ set = NULL [, $ Escape = NULL ]]])

Parameters

  • $table( string ) - Tên bảng

  • $set( mảng ) - Một mảng kết hợp của các cặp trường / giá trị

  • $escape( bool ) - Có thoát các giá trị và số nhận dạng không

Returns

ĐÚNG về thành công, SAI về thất bại

Return Type

bool

Ví dụ sau đây cho thấy cách chèn một bản ghi vào studbàn. $ Data là một mảng trong đó chúng tôi đã thiết lập dữ liệu và để chèn dữ liệu này vào bảngstud, chúng ta chỉ cần truyền mảng này cho hàm insert trong đối số thứ 2 .

$data = array( 'roll_no' => ‘1’, 'name' => ‘Virat’ ); $this->db->insert("stud", $data);

Cập nhật bản ghi

Để cập nhật bản ghi trong cơ sở dữ liệu, update() chức năng được sử dụng cùng với set()where()các chức năng như trong bảng dưới đây. Cácset() chức năng sẽ thiết lập dữ liệu được cập nhật.

Syntax

set ( $ key [, $ value = '' [, $ Escape = NULL ]])

Parameters

  • $key( hỗn hợp ) - Tên trường hoặc một mảng các cặp trường / giá trị

  • $value( string ) - Giá trị trường, nếu $ key là một trường đơn lẻ

  • $escape( bool ) - Có thoát các giá trị và số nhận dạng không

Returns

Cá thể CI_DB_query_builder (chuỗi phương thức)

Return Type

CI_DB_query_builder

Các where() chức năng sẽ quyết định bản ghi nào cần cập nhật.

Syntax

trong đó ( $ key [, $ value = NULL [, $ Escape = NULL ]])

Parameters

  • $key( hỗn hợp ) - Tên trường để so sánh hoặc mảng kết hợp

  • $value( hỗn hợp ) - Nếu một khóa duy nhất, so với giá trị này

  • $escape( bool ) - Có thoát các giá trị và số nhận dạng không

Returns

Phiên bản DB_query_builder

Return Type

vật

cuối cùng update() chức năng sẽ cập nhật dữ liệu trong cơ sở dữ liệu.

Syntax

cập nhật ([ $ table = '' [, $ set = NULL [,$where = NULL[, $giới hạn = NULL ]]]])

Parameters

  • $table( string ) - Tên bảng

  • $set( mảng ) - Một mảng kết hợp của các cặp trường / giá trị

  • $where( string ) - Mệnh đề WHERE

  • $limit( int ) - Mệnh đề LIMIT

Returns

ĐÚNG về thành công, SAI về thất bại

Return Type

bool
$data = array( 'roll_no' => ‘1’, 'name' => ‘Virat’ ); $this->db->set($data); $this->db->where("roll_no", ‘1’); 
$this->db->update("stud", $data);

Xóa bản ghi

Để xóa bản ghi trong cơ sở dữ liệu, hàm delete () được sử dụng như được hiển thị trong bảng sau:

Syntax

xóa ([ $ table = '' [, $ where = '' [,$limit = NULL[, $reset_data = TRUE ]]]])

Parameters

  • $table( hỗn hợp ) - (Các) bảng cần xóa; chuỗi hoặc mảng

  • $where( string ) - Mệnh đề WHERE

  • $limit( int ) - Mệnh đề LIMIT

  • $reset_data( bool ) - ĐÚNG để đặt lại mệnh đề "ghi" truy vấn

Returns

Phiên bản CI_DB_query_builder (chuỗi phương thức) hoặc FALSE khi thất bại

Return Type

Trộn

Sử dụng mã sau để xóa bản ghi trong studbàn. Đối số đầu tiên cho biết tên của bảng để xóa bản ghi và đối số thứ hai quyết định bản ghi nào cần xóa.

$this->db->delete("stud", "roll_no = 1");

Chọn bản ghi

Để chọn một bản ghi trong cơ sở dữ liệu, get được sử dụng, như thể hiện trong bảng sau:

Syntax

get ([ $ table = '' [, $ limit = NULL [, $ offset = NULL ]]])

Parameters

  • $table( string ) - Bảng truy vấn mảng

  • $limit( int ) - Mệnh đề LIMIT

  • $offset( int ) - Mệnh đề OFFSET

Returns

Cá thể CI_DB_result (chuỗi phương thức)

Return Type

CI_DB_result

Sử dụng mã sau để lấy tất cả các bản ghi từ cơ sở dữ liệu. Câu lệnh đầu tiên tìm nạp tất cả các bản ghi từ bảng “stud” và trả về đối tượng, đối tượng này sẽ được lưu trữ trong đối tượng $ query. Câu lệnh thứ hai gọiresult() hàm với đối tượng truy vấn $ để nhận tất cả các bản ghi dưới dạng mảng.

$query = $this->db->get("stud"); $data['records'] = $query->result();

Đóng kết nối

Kết nối cơ sở dữ liệu có thể được đóng theo cách thủ công, bằng cách thực hiện mã sau:

$this->db->close();

Thí dụ

Tạo một lớp điều khiển được gọi là Stud_controller.php và lưu nó tại application/controller/Stud_controller.php

Đây là một ví dụ đầy đủ, trong đó tất cả các thao tác nêu trên đều được thực hiện. Trước khi thực hiện ví dụ sau, hãy tạo cơ sở dữ liệu và bảng như được hướng dẫn ở đầu chương này và thực hiện các thay đổi cần thiết trong tệp cấu hình cơ sở dữ liệu được lưu trữ tạiapplication/config/database.php

<?php 
   class Stud_controller extends CI_Controller {
	
      function __construct() { 
         parent::__construct(); 
         $this->load->helper('url'); $this->load->database(); 
      } 
  
      public function index() { 
         $query = $this->db->get("stud"); 
         $data['records'] = $query->result(); 
			
         $this->load->helper('url'); $this->load->view('Stud_view',$data); } public function add_student_view() { $this->load->helper('form'); 
         $this->load->view('Stud_add'); } public function add_student() { $this->load->model('Stud_Model');
			
         $data = array( 'roll_no' => $this->input->post('roll_no'), 
            'name' => $this->input->post('name') ); $this->Stud_Model->insert($data); $query = $this->db->get("stud"); $data['records'] = $query->result(); $this->load->view('Stud_view',$data); } public function update_student_view() { $this->load->helper('form'); 
         $roll_no = $this->uri->segment('3'); 
         $query = $this->db->get_where("stud",array("roll_no"=>$roll_no)); $data['records'] = $query->result(); $data['old_roll_no'] = $roll_no; $this->load->view('Stud_edit',$data); } public function update_student(){ $this->load->model('Stud_Model');
			
         $data = array( 'roll_no' => $this->input->post('roll_no'), 
            'name' => $this->input->post('name') ); $old_roll_no = $this->input->post('old_roll_no'); $this->Stud_Model->update($data,$old_roll_no); 
			
         $query = $this->db->get("stud"); 
         $data['records'] = $query->result(); 
         $this->load->view('Stud_view',$data); 
      } 
  
      public function delete_student() { 
         $this->load->model('Stud_Model'); $roll_no = $this->uri->segment('3'); $this->Stud_Model->delete($roll_no); $query = $this->db->get("stud"); $data['records'] = $query->result(); $this->load->view('Stud_view',$data); 
      } 
   } 
?>

Tạo một lớp mô hình được gọi là Stud_Model.php và lưu nó vào application/models/Stud_Model.php

<?php 
   class Stud_Model extends CI_Model {
	
      function __construct() { 
         parent::__construct(); 
      } 
   
      public function insert($data) { 
         if ($this->db->insert("stud", $data)) { 
            return true; 
         } 
      } 
   
      public function delete($roll_no) { if ($this->db->delete("stud", "roll_no = ".$roll_no)) { return true; } } public function update($data,$old_roll_no) { $this->db->set($data); $this->db->where("roll_no", $old_roll_no); $this->db->update("stud", $data); 
      } 
   } 
?>

Tạo một tệp dạng xem có tên Stud_add.php và lưu nó vào application/views/Stud_add.php

<!DOCTYPE html> 
<html lang = "en">
 
   <head> 
      <meta charset = "utf-8"> 
      <title>Students Example</title> 
   </head> 
	
   <body> 
      <form method = "" action = "">
		
         <?php 
            echo form_open('Stud_controller/add_student');
            echo form_label('Roll No.'); 
            echo form_input(array('id'=>'roll_no','name'=>'roll_no')); 
            echo "<br/>"; 
			
            echo form_label('Name'); 
            echo form_input(array('id'=>'name','name'=>'name')); 
            echo "<br/>"; 
			
            echo form_submit(array('id'=>'submit','value'=>'Add')); 
            echo form_close(); 
         ?> 
		
      </form> 
   </body>
	
</html>

Tạo một tệp dạng xem có tên Stud_edit.php và lưu nó vào application/views/Stud_edit.php

<!DOCTYPE html> 
<html lang = "en">
 
   <head> 
      <meta charset = "utf-8"> 
      <title>Students Example</title> 
   </head> 
	
   <body> 
      <form method = "" action = "">
		
         <?php 
            echo form_open('Stud_controller/update_student'); 
            echo form_hidden('old_roll_no',$old_roll_no); 
            echo form_label('Roll No.'); 
            echo form_input(array('id'⇒'roll_no',
               'name'⇒'roll_no','value'⇒$records[0]→roll_no)); echo " "; echo form_label('Name'); echo form_input(array('id'⇒'name','name'⇒'name', 'value'⇒$records[0]→name)); 
            echo "
            "; 

            echo form_submit(array('id'⇒'sub mit','value'⇒'Edit')); 
            echo form_close();
         ?> 
			
      </form> 
   </body>
	
</html>

Tạo một tệp dạng xem có tên Stud_view.php và lưu nó vào application/views/Stud_view.php

<!DOCTYPE html> 
<html lang = "en">
 
   <head> 
      <meta charset = "utf-8"> 
      <title>Students Example</title> 
   </head>
	
   <body> 
      <a href = "<?php echo base_url(); ?>
         index.php/stud/add_view">Add</a>
		
      <table border = "1"> 
         <?php 
            $i = 1; echo "<tr>"; echo "<td>Sr#</td>"; echo "<td>Roll No.</td>"; echo "<td>Name</td>"; echo "<td>Edit</td>"; echo "<td>Delete</td>"; echo "<tr>"; foreach($records as $r) { echo "<tr>"; echo "<td>".$i++."</td>"; 
               echo "<td>".$r->roll_no."</td>"; echo "<td>".$r->name."</td>"; 
               echo "<td><a href = '".base_url()."index.php/stud/edit/"
                  .$r->roll_no."'>Edit</a></td>"; echo "<td><a href = '".base_url()."index.php/stud/delete/" .$r->roll_no."'>Delete</a></td>"; 
               echo "<tr>"; 
            } 
         ?>
      </table> 
		
   </body>
	
</html>

Thực hiện thay đổi sau đây trong tệp tuyến đường tại application/config/routes.php và thêm dòng sau vào cuối tệp.

$route['stud'] = "Stud_controller"; $route['stud/add'] = 'Stud_controller/add_student'; 
$route['stud/add_view'] = 'Stud_controller/add_student_view'; $route['stud/edit/(\d+)'] = 'Stud_controller/update_student_view/$1'; $route['stud/delete/(\d+)'] = 'Stud_controller/delete_student/$1';

Bây giờ, chúng ta hãy thực hiện ví dụ này bằng cách truy cập URL sau trong trình duyệt. Thay thế trang web của bạn bằng URL của bạn.

http://yoursite.com/index.php/stud

Phần thiết yếu của khung CodeIgniter là các thư viện của nó. Nó cung cấp một bộ thư viện phong phú, gián tiếp làm tăng tốc độ phát triển một ứng dụng. Thư viện hệ thống được đặt tại hệ thống / các thư viện. Tất cả những gì chúng ta cần làm là tải thư viện mà chúng ta muốn sử dụng. Thư viện có thể được tải như hình dưới đây -

$this->load->library('class name');

Ở đâu class namelà tên của thư viện mà chúng tôi muốn tải. Nếu chúng ta muốn tải nhiều thư viện, thì chúng ta có thể chỉ cần chuyển một mảng làm đối số cholibrary() chức năng như hình dưới đây -

$this->load->library(array('email', 'table'));

Các lớp thư viện

Các lớp thư viện nằm ở system/libraries. Mỗi lớp có các chức năng khác nhau để đơn giản hóa công việc đang phát triển. Bảng sau hiển thị tên của lớp thư viện và mô tả của nó.

SN Lớp Thư viện & Mô tả
1

Benchmarking Class

Lớp đo điểm chuẩn luôn hoạt động, cho phép tính chênh lệch thời gian giữa hai điểm đã đánh dấu bất kỳ.

2

Caching Class

Lớp này sẽ cache các trang, để tốc độ truy xuất trang nhanh chóng.

3

Calendaring Class

Sử dụng lớp này, bạn có thể tự động tạo lịch.

4

Shopping Cart Class

Sử dụng lớp này, bạn có thể thêm hoặc bớt mặt hàng khỏi Giỏ hàng. Các mục được lưu trong phiên và sẽ vẫn hoạt động cho đến khi người dùng duyệt trang web.

5

Config Class

Các tùy chọn cấu hình có thể được truy xuất bằng cách sử dụng lớp này. Lớp này được khởi tạo tự động.

6

Email Class

Lớp này cung cấp chức năng liên quan đến email, như gửi hoặc trả lời email.

7

Encryption Class

Lớp này cung cấp chức năng mã hóa dữ liệu hai chiều.

số 8

File Uploading Class

Lớp này cung cấp các chức năng liên quan đến tải tệp lên. Bạn có thể đặt các tùy chọn khác nhau như loại tệp được tải lên, kích thước của tệp, v.v.

9

Form Validation Class

Lớp này cung cấp các chức năng khác nhau để xác thực biểu mẫu.

10

FTP Class

Lớp này cung cấp các chức năng khác nhau liên quan đến FTP như truyền tệp để xóa máy chủ, di chuyển, đổi tên hoặc xóa tệp trên máy chủ.

11

Image Manipulation Class

Các thao tác trên hình ảnh như thay đổi kích thước, tạo hình thu nhỏ, cắt, xoay, đánh dấu nước có thể được thực hiện với sự trợ giúp của lớp này.

12

Input Class

Lớp này xử lý trước dữ liệu đầu vào vì lý do bảo mật.

13

Language Class

Lớp này được sử dụng để quốc tế hóa.

14

Loader Class

Lớp này tải các phần tử như Xem tệp, Trình điều khiển, Trình trợ giúp, Mô hình, v.v.

15

Migrations Class

Lớp này cung cấp các chức năng liên quan đến việc di chuyển cơ sở dữ liệu.

16

Output Class

Lớp này gửi kết quả đến trình duyệt và đồng thời, lưu vào bộ nhớ cache của trang web đó.

17

Pagination Class

Lớp này thêm các chức năng phân trang cho trang web.

18

Template Parser Class

Lớp phân tích cú pháp mẫu có thể thực hiện thay thế văn bản đơn giản cho các biến giả có trong tệp dạng xem của bạn. Nó có thể phân tích cú pháp các biến đơn giản hoặc các cặp thẻ biến.

19

Security Class

Lớp này chứa các chức năng liên quan đến bảo mật như Lọc XSS, CSRF, v.v.

20

Session Library

Lớp này cung cấp các chức năng để duy trì phiên của ứng dụng của bạn.

21

HTML Table

Lớp này được sử dụng để tự động tạo bảng HTML từ kết quả mảng hoặc cơ sở dữ liệu.

22

Trackback Class

Lớp Trackback cung cấp các chức năng cho phép bạn gửi và nhận dữ liệu Trackback.

23

Typography Class

Lớp Kiểu chữ cung cấp các phương pháp giúp định dạng văn bản.

24

Unit Testing Class

Lớp này cung cấp các chức năng để kiểm tra đơn vị ứng dụng của bạn và tạo ra kết quả.

25

URI Class

Lớp URI cung cấp các phương thức giúp bạn truy xuất thông tin từ chuỗi URI của mình. Nếu bạn sử dụng định tuyến URI, bạn cũng có thể truy xuất thông tin về các phân đoạn được định tuyến lại.

26

User Agent Class

Lớp tác nhân người dùng cung cấp các chức năng giúp xác định thông tin về trình duyệt, thiết bị di động hoặc rô bốt đang truy cập trang web của bạn. Ngoài ra, bạn có thể nhận thông tin liên kết giới thiệu cũng như ngôn ngữ và thông tin bộ ký tự được hỗ trợ.

27

XML-RPC and XML-RPC Server Classes

Các lớp XML-RPC của CodeIgniter cho phép bạn gửi yêu cầu đến một máy chủ khác hoặc thiết lập máy chủ XML-RPC của riêng bạn để nhận yêu cầu.

28

Zip Encoding Class

Lớp này được sử dụng để tạo lưu trữ zip dữ liệu của bạn.

Tạo thư viện

CodeIgniter có bộ thư viện phong phú mà bạn có thể tìm thấy trong system/libraries nhưng CodeIgniter không chỉ giới hạn ở các thư viện hệ thống, bạn cũng có thể tạo thư viện của riêng mình, có thể được lưu trữ trong application/librariesthư mục. Bạn có thể tạo thư viện theo ba cách.

  • Tạo thư viện mới
  • Mở rộng thư viện gốc
  • Thay thế thư viện gốc

Tạo thư viện mới

Trong khi tạo thư viện mới, người ta cần lưu ý những điều sau:

  • Tên của tệp phải bắt đầu bằng chữ hoa, ví dụ Mylibrary.php
  • Tên lớp phải bắt đầu bằng chữ in hoa, ví dụ như lớp Mylibrary
  • Tên của lớp và tên của tệp phải khớp nhau.

Mylibrary.php

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
   
   class Mylibrary {
	
      public function some_function() {
      }
   }
	
/* End of file Mylibrary.php */

Loading the Custom Library

Thư viện trên có thể được tải bằng cách thực hiện dòng sau trong bộ điều khiển của bạn.

$this->load->library(‘mylibrary’);

mylibrary là tên thư viện của bạn và bạn có thể viết nó bằng chữ thường cũng như chữ hoa. Sử dụng tên của thư viện không có phần mở rộng “.php”. Sau khi tải thư viện, bạn cũng có thể gọi hàm của lớp đó như hình bên dưới.

$this->mylibrary->some_function();

Mở rộng Thư viện Gốc

Đôi khi, bạn có thể cần thêm chức năng của riêng mình vào thư viện do CodeIgniter cung cấp. CodeIgniter cung cấp phương tiện mà bạn có thể mở rộng thư viện gốc và thêm các chức năng của riêng mình. Để đạt được điều này, bạn phải mở rộng lớp thư viện gốc. Ví dụ nếu bạn muốn mở rộng thư viện Email thì có thể thực hiện như hình dưới đây:

Class MY_Email extends CI_Email { 
}

Ở đây, trong ví dụ trên, lớp MY_Email đang mở rộng lớp email CI_Email của thư viện gốc. Thư viện này có thể được tải bằng cách tải thư viện email tiêu chuẩn. Lưu đoạn mã trên vào tệp My_Email.php

Thay thế Thư viện Gốc

Trong một số tình huống, bạn không muốn sử dụng thư viện gốc theo cách nó hoạt động và muốn thay thế nó bằng cách của riêng bạn. Điều này có thể được thực hiện bằng cách thay thế thư viện gốc. Để đạt được điều này, bạn chỉ cần đặt tên lớp giống như tên của nó trong thư viện gốc. Ví dụ: nếu bạn muốn thay thếEmail class, sau đó sử dụng mã như hình dưới đây. Lưu tên tệp của bạn vớiEmail.php và đặt tên lớp cho CI_Email.

Email.php

Class CI_Email { 
}

Nhiều lần, trong khi sử dụng ứng dụng, chúng tôi gặp lỗi. Sẽ rất khó chịu cho người dùng nếu các lỗi không được xử lý đúng cách. CodeIgniter cung cấp cơ chế xử lý lỗi dễ dàng.

Bạn muốn các thông báo được hiển thị khi ứng dụng đang ở chế độ đang phát triển thay vì ở chế độ sản xuất vì các thông báo lỗi có thể được giải quyết dễ dàng ở giai đoạn đang phát triển.

Có thể thay đổi môi trường ứng dụng của bạn bằng cách thay đổi dòng dưới đây từ index.phptập tin. Điều này có thể được đặt thành bất kỳ thứ gì nhưng thông thường có ba giá trị (phát triển, thử nghiệm, sản xuất) được sử dụng cho mục đích này.

define('ENVIRONMENT', isset($_SERVER['CI_ENV']) ? $_SERVER['CI_ENV'] : 'development');

Môi trường khác nhau sẽ yêu cầu các mức báo cáo lỗi khác nhau. Theo mặc định, chế độ phát triển sẽ hiển thị lỗi và kiểm tra và chế độ trực tiếp sẽ ẩn chúng. CodeIgniter cung cấp ba chức năng như hình bên dưới để xử lý lỗi.

  • show_error() chức năng hiển thị lỗi ở định dạng HTML ở đầu màn hình.

Syntax

show_error ( $ message,$status_code, $header = 'Đã gặp lỗi' )

Parameters

  • $message( hỗn hợp ) - Thông báo lỗi

  • $status_code( int ) - Mã trạng thái phản hồi HTTP

  • $heading( chuỗi ) - Tiêu đề trang lỗi

Return Type

Trộn
  • show_404() chức năng hiển thị lỗi nếu bạn đang cố gắng truy cập một trang không tồn tại.

Syntax

show_404 ( $ page = '', $ log_error = TRUE )

Parameters

  • $page( chuỗi ) - Chuỗi URI

  • $log_error( bool ) - Có ghi lại lỗi không

Return Type

vô hiệu
  • log_message()chức năng được sử dụng để viết thông báo nhật ký. Điều này hữu ích khi bạn muốn viết tin nhắn tùy chỉnh.

Syntax

log_message ( $ cấp,$message, $php_error = FALSE )

Parameters

  • $level( chuỗi ) - Mức nhật ký: 'lỗi', 'gỡ lỗi' hoặc 'thông tin'

  • $message( chuỗi ) - Thông báo ghi nhật ký

  • $php_error( bool ) - Cho dù chúng tôi đang ghi lại một thông báo lỗi PHP gốc

Return Type

vô hiệu

Đăng nhập có thể được kích hoạt trong application/config/config.phptập tin. Dưới đây là ảnh chụp màn hình của tệp config.php, nơi bạn có thể đặt giá trị ngưỡng.

/*
|--------------------------------------------------------------------------------
|   Error Logging Threshold
|--------------------------------------------------------------------------------
| You can enable error logging by setting a threshold over zero. The 
| threshold determines what gets logged. Threshold options are:
|
|   0 = Disable logging, Error logging TURNED OFF
|   1 = Error Message (including PHP errors)
|   2 = Debug Message
|   3 = Informational Messages
|   4 = All Messages
|
| You can also pass an array with threshold levels to show individual error types
|
|   array(2) = Debug Message, without Error Messages
| For a live site you'll usually only enable Errors (1) to be logged otherwise 
| your log files will fill up very fast.
|
*/
$config['log_threshold'] = 0;

Bạn có thể tìm thấy các thông báo đăng nhập application/log/. Đảm bảo rằng thư mục này có thể ghi được trước khi bạn bật tệp nhật ký.

Có thể tìm thấy nhiều mẫu thông báo lỗi khác nhau trong application/views/errors/cli hoặc là application/views/errors/html.

Sử dụng lớp Tải tệp lên, chúng tôi có thể tải tệp lên và chúng tôi cũng có thể hạn chế loại và kích thước tệp được tải lên. Làm theo các bước được hiển thị trong ví dụ đã cho để hiểu quy trình tải tệp lên trong CodeIgniter.

Thí dụ

Sao chép mã sau và lưu trữ tại application/view/Upload_form.php.

<html>
 
   <head> 
      <title>Upload Form</title> 
   </head>
	
   <body> 
      <?php echo $error;?> 
      <?php echo form_open_multipart('upload/do_upload');?> 
		
      <form action = "" method = "">
         <input type = "file" name = "userfile" size = "20" /> 
         <br /><br /> 
         <input type = "submit" value = "upload" /> 
      </form> 
		
   </body>
	
</html>

Sao chép mã được cung cấp bên dưới và lưu trữ tại application/view/Upload_success.php

<html>
 
   <head> 
      <title>Upload Form</title> 
   </head>
	
   <body>  
      <h3>Your file was successfully uploaded!</h3>  
		
      <ul> 
         <?phpforeach ($upload_data as $item => $value):?> 
         <li><?php echo $item;?>: <?php echo $value;?></li> 
         <?phpendforeach; ?>
      </ul>  
		
      <p><?php echo anchor('upload', 'Upload Another File!'); ?></p>  
   </body>
	
</html>

Sao chép mã được cung cấp bên dưới và lưu trữ tại application/controllers/Upload.php. Tạo nên "uploads”Ở thư mục gốc của CodeIgniter tức là tại thư mục mẹ của thư mục ứng dụng.

<?php
  
   class Upload extends CI_Controller {
	
      public function __construct() { 
         parent::__construct(); 
         $this->load->helper(array('form', 'url')); } public function index() { $this->load->view('upload_form', array('error' => ' ' )); 
      } 
		
      public function do_upload() { 
         $config['upload_path'] = './uploads/'; $config['allowed_types'] = 'gif|jpg|png'; 
         $config['max_size'] = 100; $config['max_width']     = 1024; 
         $config['max_height'] = 768; $this->load->library('upload', $config); if ( ! $this->upload->do_upload('userfile')) {
            $error = array('error' => $this->upload->display_errors()); 
            $this->load->view('upload_form', $error); 
         }
			
         else { 
            $data = array('upload_data' => $this->upload->data()); 
            $this->load->view('upload_success', $data); 
         } 
      } 
   } 
?>

Thực hiện thay đổi sau trong tệp tuyến đường trong application/config/routes.php và thêm dòng sau vào cuối tệp.

$route['upload'] = 'Upload';

Bây giờ chúng ta hãy thực hiện ví dụ này bằng cách truy cập URL sau trong trình duyệt. Thay thế trang web của bạn bằng URL của bạn.

http://yoursite.com/index.php/upload

Nó sẽ tạo ra màn hình sau:

Sau khi tải tệp lên thành công, bạn sẽ thấy màn hình sau:

Gửi email trong CodeIgniter dễ dàng hơn nhiều. Bạn cũng định cấu hình các tùy chọn liên quan đến email trong CodeIgniter. CodeIgniter cung cấp các tính năng sau để gửi email:

  • Nhiều giao thức - Mail, Sendmail và SMTP
  • Mã hóa TLS và SSL cho SMTP
  • Nhiều người nhận
  • CC và BCC
  • Email HTML hoặc Plaintext
  • Attachments
  • Gói từ
  • Priorities
  • Chế độ BCC Batch, cho phép chia danh sách email lớn thành các lô BCC nhỏ.
  • Công cụ gỡ lỗi email

Lớp email có các chức năng sau đây để đơn giản hóa công việc gửi email.

SN Cú pháp Thông số Trở về Loại trả lại
1 từ ( $ from [, $ name = '' [, $ return_path = NULL ]])

$from( string ) - Địa chỉ e-mail "Từ"

$name( string ) - Tên hiển thị “Từ”

$return_path( string ) - Địa chỉ email tùy chọn để chuyển hướng e-mail chưa được gửi đến

Cá thể CI_Email (chuỗi phương thức) CI_Email
2 reply_to ( $ replyto [, $ name = '' ])

$replyto( string ) - Địa chỉ e-mail để trả lời

$name( string ) - Tên hiển thị cho địa chỉ e-mail trả lời

Cá thể CI_Email (chuỗi phương thức) CI_Email
2 đến ( $ to )

$to( hỗn hợp ) - Chuỗi được phân tách bằng dấu phẩy hoặc một mảng địa chỉ e-mail

Cá thể CI_Email (chuỗi phương thức) CI_Email
3 cc ( $ cc )

$cc( hỗn hợp ) - Chuỗi được phân tách bằng dấu phẩy hoặc một mảng địa chỉ e-mail

Cá thể CI_Email (chuỗi phương thức) CI_Email
4 bcc ( $ bcc [, $ limit = '' ])

$bcc( hỗn hợp ) - Chuỗi được phân tách bằng dấu phẩy hoặc một mảng địa chỉ e-mail

$limit( int ) - Số lượng e-mail tối đa để gửi mỗi đợt

Cá thể CI_Email (chuỗi phương thức) CI_Email
5 chủ đề ( $ chủ đề )

$subject( string ) - Dòng tiêu đề email

Cá thể CI_Email (chuỗi phương thức) CI_Email
6 tin nhắn ( $ body )

$body( string ) - Nội dung thư e-mail

Cá thể CI_Email (chuỗi phương thức) CI_Email
7 set_alt_message ( $ str )

$str( string ) - Nội dung thư e-mail thay thế

Cá thể CI_Email (chuỗi phương thức) CI_Email
số 8 set_header ( $ header, $ value )

$header( string ) - Tên tiêu đề

$value( chuỗi ) - Giá trị tiêu đề

Cá thể CI_Email (chuỗi phương thức) CI_Email
9 rõ ràng ([ $ clear_attachments = FALSE ])

$clear_attachments( bool ) - Có xóa tệp đính kèm hay không

Cá thể CI_Email (chuỗi phương thức) CI_Email
10 gửi ([ $ auto_clear = TRUE ])

$auto_clear( bool ) - Có tự động xóa dữ liệu tin nhắn không

Cá thể CI_Email (chuỗi phương thức) CI_Email
11 đính kèm ($ filename [, $disposition = ''[, $newname = NULL [, $ mime = '']]])

$filename( string ) - Tên tệp

$disposition( string ) - 'định vị' của tệp đính kèm. Hầu hết các ứng dụng email đều đưa ra quyết định của riêng họ bất kể đặc điểm kỹ thuật MIME được sử dụng ở đây. iana

$newname( string ) - Tên tệp tùy chỉnh để sử dụng trong e-mail

$mime( chuỗi ) - Loại MIME để sử dụng (hữu ích cho dữ liệu được lưu trong bộ đệm)

Cá thể CI_Email (chuỗi phương thức) CI_Email
12 attachment_cid ( $ filename )

$filename( string ) - Tên tệp đính kèm hiện có

Tệp đính kèm Content-ID hoặc FALSE nếu không tìm thấy chuỗi

Gửi một e-mail

Để gửi email bằng CodeIgniter, trước tiên bạn phải tải thư viện email bằng cách sử dụng như sau:

$this->load->library('email');

Sau khi tải thư viện, chỉ cần thực hiện các chức năng sau để thiết lập các yếu tố cần thiết để gửi email. Cácfrom() được sử dụng để đặt - từ nơi email được gửi và to()được sử dụng - email sẽ được gửi cho ai. Cácsubject()message() được sử dụng để đặt chủ đề và thông điệp của email.

$this->email->from('[email protected]', 'Your Name'); $this->email->to('[email protected]');
 
$this->email->subject('Email Test'); $this->email->message('Testing the email class.');

Sau đó, thực hiện send() chức năng như hình dưới đây để gửi email.

$this->email->send();

Thí dụ

Tạo tệp điều khiển Email_controller.php và lưu nó vào application/controller/Email_controller.php.

<?php 
   class Email_controller extends CI_Controller { 
 
      function __construct() { 
         parent::__construct(); 
         $this->load->library('session'); 
         $this->load->helper('form'); } public function index() { $this->load->helper('form'); 
         $this->load->view('email_form'); } public function send_mail() { $from_email = "[email protected]"; 
         $to_email = $this->input->post('email'); 
   
         //Load email library 
         $this->load->library('email'); $this->email->from($from_email, 'Your Name'); $this->email->to($to_email); $this->email->subject('Email Test'); 
         $this->email->message('Testing the email class.'); //Send mail if($this->email->send()) 
         $this->session->set_flashdata("email_sent","Email sent successfully."); else $this->session->set_flashdata("email_sent","Error in sending Email."); 
         $this->load->view('email_form'); 
      } 
   } 
?>

Tạo một tệp dạng xem có tên email_form.php và lưu nó tại application/views/email_form.php

<!DOCTYPE html> 
<html lang = "en"> 

   <head> 
      <meta charset = "utf-8"> 
      <title>CodeIgniter Email Example</title> 
   </head>
	
   <body> 
      <?php 
         echo $this->session->flashdata('email_sent'); 
         echo form_open('/Email_controller/send_mail'); 
      ?> 
		
      <input type = "email" name = "email" required /> 
      <input type = "submit" value = "SEND MAIL"> 
		
      <?php 
         echo form_close(); 
      ?> 
   </body>
	
</html>

Thực hiện các thay đổi trong routes.php trong tập tin application/config/routes.php và thêm dòng sau vào cuối tệp.

$route['email'] = 'Email_Controller';

Thực hiện ví dụ trên bằng cách truy cập liên kết sau. Thay thế trang web của bạn bằng URL của trang web của bạn.

http://yoursite.com/index.php/email

Xác thực là một quá trình quan trọng trong khi xây dựng ứng dụng web. Nó đảm bảo rằng dữ liệu mà chúng tôi nhận được là phù hợp và hợp lệ để lưu trữ hoặc xử lý. CodeIgniter đã làm cho nhiệm vụ này trở nên rất dễ dàng. Hãy để chúng tôi hiểu quá trình này với một ví dụ đơn giản.

Thí dụ

Tạo một tệp xem myform.php và lưu đoạn mã dưới đây vào application/views/myform.php. Trang này sẽ hiển thị biểu mẫu nơi người dùng có thể gửi tên của mình và chúng tôi sẽ xác nhận trang này để đảm bảo rằng nó không được để trống khi gửi.

<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>

Tạo một tệp xem formsuccess.php và lưu nó vào application/views/formsuccess.php. Trang này sẽ được hiển thị nếu biểu mẫu được xác thực thành công.

<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>

Tạo tệp điều khiển Form.php và lưu nó vào application/controller/Form.php. Biểu mẫu này sẽ hiển thị lỗi nếu nó không được xác thực đúng cách hoặc được chuyển hướng đếnformsuccess.php trang.

<?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'); 
         } 
      }
   }
?>

Thêm dòng sau vào application/config/routes.php.

$route['validation'] = 'Form';

Hãy để chúng tôi thực hiện ví dụ này bằng cách truy cập URL sau trong trình duyệt. URL này có thể khác nhau dựa trên trang web của bạn.

http://yoursite.com/index.php/validation

Nó sẽ tạo ra màn hình sau:

Chúng tôi đã thêm xác thực trong bộ điều khiển - Namelà trường bắt buộc trước khi gửi biểu mẫu. Vì vậy, nếu bạn nhấp vào nút gửi mà không nhập bất kỳ thứ gì vào trường tên, thì bạn sẽ được yêu cầu nhập tên trước khi gửi như hiển thị trong màn hình bên dưới.

Sau khi nhập tên thành công, bạn sẽ được chuyển đến màn hình như hình dưới đây.

Trong ví dụ trên, chúng tôi đã sử dụng cài đặt quy tắc bắt buộc. Có nhiều quy tắc có sẵn trong CodeIgniter, được mô tả bên dưới.

Tham chiếu quy tắc xác thực

Sau đây là danh sách tất cả các quy tắc gốc có sẵn để sử dụng:

Qui định Tham số Sự miêu tả Thí dụ

required

Không Trả về FALSE nếu phần tử biểu mẫu trống.

matches

Đúng Trả về FALSE nếu phần tử biểu mẫu không khớp với phần tử trong tham số. khớp với [form_item]

regex_match

Đúng Trả về FALSE nếu phần tử biểu mẫu không khớp với biểu thức chính quy. regex_match [/ regex /]

differs

Đúng Trả về FALSE nếu phần tử biểu mẫu không khác với phần tử trong tham số. khác nhau [form_item]

is_unique

Đúng Trả về FALSE nếu phần tử biểu mẫu không phải là duy nhất đối với bảng và tên trường trong tham số. Lưu ý - Quy tắc này yêu cầu bật Trình tạo truy vấn để hoạt động. is_unique [table.field]

min_length

Đúng Trả về FALSE nếu phần tử biểu mẫu ngắn hơn giá trị tham số. min_length [3]

max_length

Đúng Trả về FALSE nếu phần tử biểu mẫu dài hơn giá trị tham số. max_length [12]

exact_length

Đúng Trả về FALSE nếu phần tử biểu mẫu không phải là giá trị tham số chính xác. chính xác_ độ dài [8]

greater_than

Đúng Trả về FALSE nếu phần tử biểu mẫu nhỏ hơn hoặc bằng giá trị tham số hoặc không phải là số. great_than [8]

greater_than_equal_to

Đúng Trả về FALSE nếu phần tử biểu mẫu nhỏ hơn giá trị tham số hoặc không phải là số. great_than_equal_to [8]

less_than

Đúng Trả về FALSE nếu phần tử biểu mẫu lớn hơn hoặc bằng giá trị tham số hoặc không phải là số. less_than [8]

less_than_equal_to

Đúng Trả về FALSE nếu phần tử biểu mẫu lớn hơn giá trị tham số hoặc không phải là số. less_than_equal_to [8]

in_list

Đúng Trả về FALSE nếu phần tử biểu mẫu không nằm trong danh sách xác định trước. in_list [đỏ, lam, lục]

alpha

Không Trả về FALSE nếu phần tử biểu mẫu chứa bất kỳ thứ gì khác ngoài ký tự chữ cái.

alpha_numeric

Không Trả về FALSE nếu phần tử biểu mẫu chứa bất kỳ thứ gì khác ngoài ký tự chữ và số.

alpha_numeric_spaces

Không Trả về FALSE nếu phần tử biểu mẫu chứa bất kỳ thứ gì khác ngoài ký tự chữ và số hoặc khoảng trắng. Nên sử dụng sau khi trim để tránh khoảng trống ở đầu hoặc cuối

alpha_dash

Không Trả về FALSE nếu phần tử biểu mẫu chứa bất kỳ thứ gì khác ngoài ký tự chữ và số, dấu gạch dưới hoặc dấu gạch ngang.

numeric

Không Trả về FALSE nếu phần tử biểu mẫu chứa bất kỳ thứ gì khác ngoài ký tự số.

integer

Không Trả về FALSE nếu phần tử biểu mẫu chứa bất kỳ thứ gì khác ngoài số nguyên.

decimal

Không Trả về FALSE nếu phần tử biểu mẫu chứa bất kỳ thứ gì khác ngoài số thập phân.

is_natural

Không Trả về FALSE nếu phần tử biểu mẫu chứa bất kỳ thứ gì khác ngoài số tự nhiên - 0, 1, 2, 3, v.v.

is_natural_no_zero

Không Trả về FALSE nếu phần tử biểu mẫu chứa bất kỳ thứ gì khác ngoài số tự nhiên, nhưng không phải số 0 - 1, 2, 3, v.v.

valid_url

Không Trả về FALSE nếu phần tử biểu mẫu không chứa URL hợp lệ.

valid_email

Không Trả về FALSE nếu phần tử biểu mẫu không chứa địa chỉ email hợp lệ.

valid_emails

Không Trả về FALSE nếu bất kỳ giá trị nào được cung cấp trong danh sách được phân tách bằng dấu phẩy không phải là email hợp lệ.

valid_ip

Không Trả về FALSE nếu IP được cung cấp không hợp lệ. Chấp nhận tham số tùy chọn 'ipv4' hoặc 'ipv6' để chỉ định định dạng IP.

valid_base64

Không Trả về FALSE nếu chuỗi được cung cấp chứa bất kỳ thứ gì khác ngoài ký tự Base64 hợp lệ.

Khi xây dựng trang web, chúng tôi thường cần theo dõi hoạt động và trạng thái của người dùng và vì mục đích này, chúng tôi phải sử dụng session. CodeIgniter có lớp phiên cho mục đích này.

Khởi tạo phiên

Dữ liệu phiên có sẵn trên toàn cầu thông qua trang web nhưng để sử dụng những dữ liệu đó, trước tiên chúng ta cần khởi chạy phiên. Chúng ta có thể làm điều đó bằng cách thực hiện dòng sau trong hàm tạo.

$this->load->library('session');

Sau khi tải thư viện phiên, bạn chỉ cần sử dụng đối tượng phiên như hình dưới đây.

$this->session

Thêm dữ liệu phiên

Trong PHP, chúng tôi chỉ sử dụng $_SESSION mảng để thiết lập bất kỳ dữ liệu nào trong phiên như hình dưới đây.

$_SESSION[‘key’] = value;

Ở đâu 'key'là khóa của mảng và value được gán ở phía bên phải của dấu bằng.

Điều tương tự có thể được thực hiện trong CodeIgniter như hình dưới đây.

$this->session->set_userdata('some_name', 'some_value');

set_userdata()hàm nhận hai đối số. Đối số đầu tiên,some_name, là tên của biến phiên, theo đó, some_value sẽ được lưu trữ.

set_userdata() Hàm cũng hỗ trợ một cú pháp khác trong đó bạn có thể truyền mảng để lưu trữ các giá trị như hình dưới đây.

$newdata = array( 
   'username'  => 'johndoe', 
   'email'     => '[email protected]', 
   'logged_in' => TRUE
);  

$this->session->set_userdata($newdata);

Xóa dữ liệu phiên

Trong PHP, chúng ta có thể xóa dữ liệu được lưu trữ trong phiên bằng cách sử dụng unset() chức năng như hình dưới đây.

unset($_SESSION[‘some_name’]);

Việc xóa dữ liệu phiên trong CodeIgniter rất đơn giản như hình dưới đây. Phiên bản dưới đây củaunset_userdata() hàm sẽ chỉ xóa một biến khỏi phiên.

$this->session->unset_userdata('some_name');

Nếu bạn muốn xóa nhiều giá trị hơn khỏi phiên hoặc xóa toàn bộ mảng, bạn có thể sử dụng phiên bản bên dưới của unset_userdata() chức năng.

$this->session->unset_userdata($array_items);

Tìm nạp dữ liệu phiên

Sau khi thiết lập dữ liệu trong phiên, chúng ta cũng có thể lấy dữ liệu đó như hình dưới đây. Userdata()chức năng sẽ được sử dụng cho mục đích này. Hàm này sẽ trả vềNULL nếu dữ liệu bạn đang cố gắng truy cập không có sẵn.

$name = $this->session->userdata('name');

Thí dụ

Tạo một lớp điều khiển được gọi là Session_controller.php và lưu nó vào application/controller/Session_controller.php.

<?php 
   class Session_controller extends CI_Controller {
	
      public function index() { 
         //loading session library 
         $this->load->library('session'); //adding data to session $this->session->set_userdata('name','virat');
			
         $this->load->view('session_view'); } public function unset_session_data() { //loading session library $this->load->library('session');
			
         //removing session data 
         $this->session->unset_userdata('name'); $this->load->view('session_view'); 
      } 
		
   } 
?>

Tạo một tệp dạng xem có tên session_view.php và lưu nó vào application/views/session_view.php

<!DOCTYPE html> 
<html lang = "en">
 
   <head> 
      <meta charset = "utf-8"> 
      <title>CodeIgniter Session Example</title> 
   </head>
	
   <body> 
      Welcome <?php echo $this->session->userdata('name'); ?> 
      <br> 
      <a href = 'http://localhost:85/CodeIgniter-3.0.1/CodeIgniter3.0.1/index.php/sessionex/unset'>
         Click Here</a> to unset session data. 
   </body>
	
</html>

Thực hiện các thay đổi trong routes.php trong tập tin application/config/routes.php và thêm dòng sau vào cuối tệp.

$route['sessionex'] = 'Session_Controller';

Thực hiện ví dụ trên bằng cách sử dụng địa chỉ sau. Thay thếyoursite.com với URL của trang web của bạn.

http://yoursite.com/index.php/sessionex

Trong khi xây dựng ứng dụng web, chúng tôi cần lưu trữ một số dữ liệu chỉ một lần và sau đó chúng tôi muốn xóa dữ liệu đó. Ví dụ, để hiển thị một số thông báo lỗi hoặc thông báo thông tin. Trong PHP, chúng ta phải làm điều đó theo cách thủ công nhưng CodeIgniter đã làm cho công việc này trở nên đơn giản đối với chúng ta. Trong CodeIgniter, flashdata sẽ chỉ khả dụng cho đến khi có yêu cầu tiếp theo và nó sẽ tự động bị xóa.

Thêm Flashdata

Chúng ta có thể lưu trữ flashdata một cách đơn giản như hình bên dưới.

$this->session->mark_as_flash('item');
  • mark_as_flash()hàm được sử dụng cho mục đích này, chỉ nhận một đối số của giá trị được lưu trữ. Chúng ta cũng có thể truyền một mảng để lưu trữ nhiều giá trị.

  • set_flashdata()cũng có thể được sử dụng, hàm này có hai đối số, tên và giá trị, như được hiển thị bên dưới. Chúng ta cũng có thể truyền một mảng.

$this->session->set_flashdata('item','value');

Truy xuất Flashdata

Flashdata có thể được truy xuất bằng cách sử dụng hàm flashdata () để lấy một đối số của mục cần tìm nạp như hình dưới đây. Hàm flashdata () đảm bảo rằng bạn chỉ nhận được dữ liệu flash chứ không phải bất kỳ dữ liệu nào khác.

$this->session->flashdata('item');

Nếu bạn không vượt qua bất kỳ đối số nào, thì bạn có thể nhận được một mảng có cùng chức năng.

Thí dụ

Tạo một lớp có tên FlashData_Controller.php và lưu nó tại application/controller/FlashData_Controller.php.

<?php 
   class FlashData_Controller extends CI_Controller {
	
      public function index() { 
         //Load session library 
         $this->load->library('session');
			
         //redirect to home page 
         $this->load->view('flashdata_home'); } public function add() { //Load session library $this->load->library('session'); 
         $this->load->helper('url'); //add flash data $this->session->set_flashdata('item','item-value'); 
   
         //redirect to home page 
         redirect('flashdata'); 
      } 
   } 
?>

Tạo một tệp dạng xem có tên flashdata_home.php và lưu nó vào application/views/ flashdata_home.php

<!DOCTYPE html> 
<html lang = "en">
 
   <head> 
      <meta charset = "utf-8"> 
      <title>CodeIgniter Flashdata Example</title> 
   </head>
	
   <body> 
      Flash Data Example 
      <h2><?php echo $this->session->flashdata('item'); ?></h2> 
      <a href = 'flashdata/add'>Click Here</a> to add flash data. 
   </body>
	
</html>

Thực hiện các thay đổi trong routes.php trong tập tin application/config/routes.php và thêm dòng sau vào cuối tệp.

$route['flashdata'] = 'FlashData_Controller'; 
$route['flashdata/add'] = 'FlashData_Controller/add';

Thực hiện ví dụ trên bằng cách truy cập liên kết sau. Thay thế trang web của bạn bằng URL của trang web của bạn.

http://yoursite.com/index.php/flashdata

Sau khi truy cập vào URL trên, bạn sẽ thấy một màn hình như hình dưới đây.

Bấm vào "Click Here”Và bạn sẽ thấy một màn hình như hình dưới đây. Tại đây, trong màn hình này, bạn sẽ thấy một giá trị của biến dữ liệu flash. Làm mới trang một lần nữa và bạn sẽ thấy một màn hình như trên và biến dữ liệu flash sẽ tự động bị xóa.

Trong một số tình huống, khi bạn muốn xóa dữ liệu được lưu trữ trong phiên sau một khoảng thời gian cụ thể, điều này có thể được thực hiện bằng cách sử dụng tempdata chức năng trong CodeIgniter.

Thêm Tempdata

Để thêm dữ liệu dưới dạng tempdata, chúng ta phải sử dụng mark_as_tempdata()chức năng. Hàm này nhận hai mục đối số hoặc mục được lưu trữ dưới dạngtempdata và thời gian hết hạn của các mặt hàng đó như hình bên dưới.

// 'item' will be erased after 300 seconds(5 minutes) 
$this->session->mark_as_temp('item',300);

Bạn cũng có thể chuyển một mảng để lưu trữ nhiều dữ liệu. Tất cả các mục được lưu trữ bên dưới sẽ hết hạn sau 300 giây.

$this->session->mark_as_temp(array('item','item2'),300);

Bạn cũng có thể đặt thời gian hết hạn khác nhau cho từng mặt hàng như hình dưới đây.

// 'item' will be erased after 300 seconds, while 'item2' 
// will do so after only 240 seconds 

$this->session->mark_as_temp(array( 
   'item'=>300, 
   'item2'=>240 
));

Truy xuất Tempdata

Chúng tôi có thể truy xuất dữ liệu tạm thời bằng cách sử dụng tempdata()chức năng. Hàm này đảm bảo rằng bạn chỉ nhận được dữ liệu tạm thời chứ không phải bất kỳ dữ liệu nào khác. Hãy xem ví dụ dưới đây để biết cách truy xuất dữ liệu tạm thời.tempdata() hàm sẽ nhận một đối số của mục cần tìm nạp.

$this->session->tempdata('item');

Nếu bạn bỏ qua đối số, thì bạn có thể truy xuất tất cả các dữ liệu tạm thời hiện có.

Xóa Tempdata

Tempdata tự động bị xóa sau thời gian hết hạn nhưng nếu bạn muốn xóa tempdata trước đó, thì bạn có thể thực hiện như hình dưới đây bằng cách sử dụng unset_tempdata() hàm lấy một đối số của mục cần xóa.

$this->session->unset_tempdata('item');

Thí dụ

Tạo một lớp có tên Tempdata_controller.php và lưu nó vào application/controller/Tempdata_controller.php.

<?php 
   class Tempdata_controller extends CI_Controller {
	
      public function index() { 
         $this->load->library('session'); $this->load->view('tempdata_view'); 
      } 
  
      public function add() { 
         $this->load->library('session'); $this->load->helper('url'); 
   
         //tempdata will be removed after 5 seconds 
         $this->session->set_tempdata('item','item-value',5); 
   
         redirect('tempdata'); 
      } 
   } 
?>

Tạo một tệp có tên tempdata_view.php và lưu nó vào application/views/tempdata_view.php

<!DOCTYPE html> 
<html lang = "en">
 
   <head> 
      <meta charset = "utf-8"> 
      <title>CodeIgniter Tempdata Example</title> 
   </head>
	
   <body> 
      Temp Data Example 
      <h2><?php echo $this->session->tempdata('item'); ?></h2>
      <a href = 'tempdata/add'>Click Here</a> to add temp data. 
   </body>
	
</html>

Thực hiện các thay đổi trong routes.php tệp trong ứng dụng / config / route.php và thêm dòng sau vào cuối tệp.

$route['tempdata'] = "Tempdata_controller"; $route['tempdata/add'] = "Tempdata_controller/add";

Thực hiện ví dụ trên bằng cách truy cập liên kết sau. Thay thế trang web của bạn bằng URL của trang web của bạn.

http://yoursite.com/index.php/tempdata

Sau khi truy cập vào URL trên, bạn sẽ thấy một màn hình như hình dưới đây.

Bấm vào “Click Here” và bạn sẽ thấy một màn hình như hình dưới đây.

Ở đây, trong màn hình này, bạn sẽ thấy một giá trị của biến dữ liệu tạm thời. Làm mới lại cùng một trang sau năm giây vì chúng tôi đã đặt dữ liệu tạm thời trong năm giây và bạn sẽ thấy một màn hình như trên và biến dữ liệu tạm thời sẽ tự động bị xóa sau năm giây. Nếu bạn làm mới cùng một trang trước 5 giây, thì dữ liệu tạm thời sẽ không bị xóa vì khoảng thời gian này chưa kết thúc.

Hủy một phiên

Trong PHP, chúng tôi đang sử dụng session_destroy() hàm hủy phiên làm việc và trong CodeIgniter chúng ta có thể hủy hàm như hình bên dưới.

$this->session->sess_destroy();

Sau khi gọi hàm này, tất cả dữ liệu phiên bao gồm flashdatatempdata sẽ bị xóa vĩnh viễn và không thể lấy lại được.

Cookie là một phần dữ liệu nhỏ được gửi từ máy chủ web để lưu trữ trên máy tính của khách hàng. CodeIgniter có một người trợ giúp được gọi là "Trình trợ giúp Cookie" để quản lý cookie.

Syntax

set_cookie ( $ name [, $ value = '' [, $ expire = '' [, $ domain = '' [, $ path = '/' [, $ prefix = '' [, $ secure = FALSE [, $ httponly = FALSE ]]]]]]]])

Parameters

  • $name( hỗn hợp ) - Tên cookie hoặc mảng kết hợp của tất cả các tham số có sẵn cho hàm này

  • $value( string ) - Giá trị cookie

  • $expire( int ) - Số giây cho đến khi hết hạn

  • $domain( string ) - Miền cookie (thường là: .yourdomain.com)

  • $path( chuỗi ) - Đường dẫn cookie

  • $prefix( string ) - Tiền tố tên cookie

  • $secure( bool ) - Có chỉ gửi cookie qua HTTPS hay không

  • $httponly( bool ) - Có ẩn cookie khỏi JavaScript hay không

Return Type

vô hiệu

bên trong set_cookie(), chúng ta có thể chuyển tất cả các giá trị bằng hai cách. Theo cách đầu tiên, chỉ mảng có thể được truyền và theo cách thứ hai, các tham số riêng lẻ cũng có thể được truyền.

Syntax

get_cookie ( $ index [, $ xss_clean = NULL ]])

Parameters

  • $index( string ) - Tên cookie

  • $xss_clean( bool ) - Có áp dụng lọc XSS cho giá trị trả về hay không

Return

Giá trị cookie hoặc NULL nếu không tìm thấy

Return Type

Trộn

Các get_cookie() hàm được sử dụng để lấy cookie đã được thiết lập bằng cách sử dụng hàm set_cookie ().

Syntax

delete_cookie ( $ name [, $ domain = '' [, $ path = '/' [, $ prefix = '' ]]]])

Parameters

  • $name( string ) - Tên cookie

  • $domain( string ) - Miền cookie (thường là: .yourdomain.com)

  • $path( chuỗi ) - Đường dẫn cookie

  • $prefix( string ) - Tiền tố tên cookie

Return Type

vô hiệu

Các delete_cookie() hàm được sử dụng để xóa cookie ().

Thí dụ

Tạo một bộ điều khiển có tên Cookie_controller.php và lưu nó tại application/controller/Cookie_controller.php

<?php 
   class Cookie_controller extends CI_Controller { 
	
      function __construct() { 
         parent::__construct(); 
         $this->load->helper(array('cookie', 'url')); 
      } 
  
      public function index() { 
         set_cookie('cookie_name','cookie_value','3600'); 
         $this->load->view('Cookie_view'); } public function display_cookie() { echo get_cookie('cookie_name'); $this->load->view('Cookie_view');
      } 
  
      public function deletecookie() { 
         delete_cookie('cookie_name'); 
         redirect('cookie/display'); 
      } 
		
   } 
?>

Tạo một tệp dạng xem có tên Cookie_view.php và lưu nó tại application/views/Cookie_view.php

<!DOCTYPE html> 
<html lang = "en">
 
   <head> 
      <meta charset = "utf-8"> 
      <title>CodeIgniter View Example</title> 
   </head> 
	
   <body> 
      <a href = 'display'>Click Here</a> to view the cookie.<br> 
      <a href = 'delete'>Click Here</a> to delete the cookie. 
   </body>
	
</html>

Thay đổi tệp route.php trong application / config / lines.php để thêm tuyến đường cho bộ điều khiển ở trên và thêm dòng sau vào cuối tệp.

$route['cookie'] = "Cookie_controller"; $route['cookie/display'] = "Cookie_controller/display_cookie"; 
$route['cookie/delete'] = "Cookie_controller/deletecookie";

Sau đó, bạn có thể thực thi URL sau trong trình duyệt để thực thi ví dụ.

http://yoursite.com/index.php/cookie

Nó sẽ tạo ra một đầu ra như thể hiện trong ảnh chụp màn hình sau.

Các hàm thư viện CodeIgniter và các hàm trợ giúp cần được khởi tạo trước khi chúng được sử dụng nhưng có một số hàm phổ biến, không cần khởi tạo.

Các chức năng phổ biến này và mô tả của chúng được đưa ra dưới đây.

Cú pháp is_php ( $ phiên bản )
Thông số

$version( string ) - Số phiên bản

Trở về TRUE nếu phiên bản PHP đang chạy ít nhất là phiên bản được chỉ định hoặc FALSE nếu không
Loại trả lại vô hiệu
Sự miêu tả Xác định xem phiên bản PHP đang được sử dụng có lớn hơn số phiên bản được cung cấp hay không.
Cú pháp is_really_wuality ( $ file )
Thông số

$file( string ) - Đường dẫn tệp

Trở về TRUE nếu đường dẫn có thể ghi, FALSE nếu không
Loại trả lại bool
Sự miêu tả kiểm tra xem tệp có thể ghi được hay không.
Cú pháp config_item ( $ key )
Thông số

$key( string ) - Định cấu hình khóa mục

Trở về Giá trị khóa cấu hình hoặc NULL nếu không tìm thấy
Loại trả lại Trộn
Sự miêu tả Chức năng này được sử dụng để lấy mục cấu hình
Cú pháp set_status_header ( $ code [, $ text = '' ])
Thông số

$code( int ) - Mã trạng thái phản hồi HTTP

$text( chuỗi ) - Một thông báo tùy chỉnh để đặt với mã trạng thái

Trở về
Loại trả lại vô hiệu
Sự miêu tả Chức năng này cho phép bạn đặt tiêu đề trạng thái máy chủ theo cách thủ công.
Cú pháp remove_invisible_characters ( $ str [, $ url_encoded = TRUE ])
Thông số

$str( string ) - Chuỗi đầu vào

$url_encoded( bool ) - Có xóa cả các ký tự được mã hóa URL không

Trở về Chuỗi vệ sinh
Loại trả lại chuỗi
Sự miêu tả Hàm này ngăn chặn việc chèn ký tự NULL giữa các ký tự ASCII
Cú pháp html_escape ( $ var )
Thông số

$var( hỗn hợp ) - Biến để thoát (chuỗi hoặc mảng)

Trở về (Các) chuỗi thoát HTML
Loại trả lại Trộn
Sự miêu tả Hàm này hoạt động như một hàm htmlspecialchars () gốc của PHP.
Cú pháp get_mimes ()
Trở về Một mảng liên kết của các loại tệp
Loại trả lại mảng
Sự miêu tả Hàm này trả về một tham chiếu đến mảng MIMEs từ application / config / mimes.php .
Cú pháp is_https ()

Trở về TRUE nếu hiện đang sử dụng HTTP qua SSL, FALSE nếu không
Loại trả lại bool
Sự miêu tả Trả về TRUE nếu kết nối an toàn (HTTPS) được sử dụng và FALSE trong bất kỳ trường hợp nào khác (bao gồm cả các yêu cầu không phải HTTP).
Cú pháp is_cli ()
Trở về TRUE nếu hiện đang chạy dưới CLI, FALSE nếu không
Loại trả lại bool
Sự miêu tả Trả về TRUE nếu ứng dụng được chạy qua dòng lệnh và FALSE nếu không.
Cú pháp function_usable ( $ function_name )
Thông số

$function_name( string ) - Tên hàm

Loại trả lại bool
Sự miêu tả Trả về TRUE nếu một hàm tồn tại và có thể sử dụng được, nếu không thì trả về FALSE.

Dưới đây là một ví dụ minh họa tất cả các chức năng trên.

Thí dụ

Ở đây chúng tôi chỉ tạo một bộ điều khiển trong đó chúng tôi sẽ sử dụng các chức năng trên. Sao chép mã đã cho bên dưới và lưu tại application/controller/CommonFun_Controller.php.

<?php 
   class CommonFun_Controller extends CI_Controller { 
	
      public function index() {
         set_status_header(200); 
         echo is_php('5.3')."<br>"; 
         var_dump(is_really_writable('./Form.php')); 
			
         echo config_item('language')."<br>"; 
         echo remove_invisible_characters('This is a ‌test','UTF8')."<br>"; 
			
         $str = '< This > is \' a " test & string'; 
         echo html_escape($str)."<br>"; 
         echo "is_https():".var_dump(is_https())."<br>"; 
         echo "is_cli():".var_dump(is_cli())."<br>"; 
			
         var_dump(function_usable('test'))."<br>"; 
         echo "get_mimes():".print_r(get_mimes())."<br>"; 
      } 
  
      public function test() { 
         echo "Test function"; 
      } 
		
   } 
?>

Thay đổi routes.php tệp tại application / config / lines.php để thêm tuyến đường cho bộ điều khiển ở trên và thêm dòng sau vào cuối tệp.

$route['commonfunctions'] = 'CommonFun_Controller';

Nhập URL sau vào thanh địa chỉ của trình duyệt của bạn để thực thi ví dụ.

http://yoursite.com/index.php/commonfunctions

Lưu vào bộ nhớ đệm một trang sẽ cải thiện tốc độ tải trang. Nếu trang được lưu trong bộ nhớ cache, thì nó sẽ được lưu trữ ở trạng thái hiển thị đầy đủ. Lần tới, khi máy chủ nhận được yêu cầu cho trang đã lưu trong bộ nhớ cache, nó sẽ được gửi trực tiếp đến trình duyệt được yêu cầu.

Các tệp được lưu trong bộ nhớ cache được lưu trữ trong application/cachethư mục. Bộ nhớ đệm có thể được bật trên cơ sở mỗi trang. Trong khi bật bộ nhớ cache, chúng ta cần đặt thời gian, cho đến khi nó cần ở trong thư mục được lưu trong bộ nhớ cache và sau khoảng thời gian đó, nó sẽ tự động bị xóa.

Bật bộ nhớ đệm

Bộ nhớ đệm có thể được kích hoạt bằng cách thực hiện dòng sau trong bất kỳ phương thức nào của bộ điều khiển.

$this->output->cache($n);

Ở đâu $n là số minutes, bạn muốn trang vẫn được lưu trong bộ nhớ cache giữa các lần làm mới.

Tắt bộ nhớ đệm

Tệp bộ nhớ đệm sẽ bị xóa khi hết hạn nhưng khi bạn muốn xóa nó theo cách thủ công, thì bạn phải vô hiệu hóa nó. Bạn có thể tắt bộ nhớ đệm bằng cách thực hiện dòng sau.

// Deletes cache for the currently requested URI 
$this->output->delete_cache();
  
// Deletes cache for /foo/bar 
$this->output->delete_cache('/foo/bar');

Thí dụ

Tạo một bộ điều khiển có tên Cache_controller.php và lưu nó vào application/controller/Cache_controller.php

<?php 
   class Cache_controller extends CI_Controller { 
	
      public function index() { 
         $this->output->cache(1); 
         $this->load->view('test'); } public function delete_file_cache() { $this->output->delete_cache('cachecontroller'); 
      } 
   } 
?>

Tạo một tệp dạng xem có tên test.php và lưu nó vào application/views/test.php

<!DOCTYPE html> 
<html lang = "en">
 
   <head> 
      <meta charset = "utf-8"> 
      <title>CodeIgniter View Example</title> 
   </head>
	
   <body> 
      CodeIgniter View Example 
   </body>
	
</html>

Thay đổi routes.php trong tập tin application/config/routes.php để thêm tuyến đường cho bộ điều khiển trên và thêm dòng sau vào cuối tệp.

$route['cachecontroller'] = 'Cache_controller'; $route['cachecontroller/delete'] = 'Cache_controller/delete_file_cache';

Nhập URL sau vào trình duyệt để thực thi ví dụ.

http://yoursite.com/index.php/cachecontroller

Sau khi truy cập URL ở trên, bạn sẽ thấy rằng một tệp bộ đệm ẩn cho việc này sẽ được tạo trong application/cachethư mục. Để xóa tệp, hãy truy cập URL sau.

http://yoursite.com/index.php/cachecontroller/delete

Trong khi xây dựng ứng dụng web, chúng ta thường cần chuyển hướng người dùng từ trang này sang trang khác. CodeIgniter giúp chúng tôi thực hiện công việc này dễ dàng. Cácredirect() chức năng được sử dụng cho mục đích này.

Syntax

chuyển hướng ($uri = '', $method = 'auto', $ code = NULL )

Parameters

  • $uri( chuỗi ) - Chuỗi URI

  • $method( string ) - Phương thức chuyển hướng ('tự động', 'vị trí' hoặc 'làm mới')

  • $code( chuỗi ) - Mã phản hồi HTTP (thường là 302 hoặc 303)

Return type

vô hiệu

Đối số đầu tiên có thể có hai loại URI. Chúng tôi có thể chuyển URL đầy đủ của trang web hoặc các phân đoạn URI đến bộ điều khiển mà bạn muốn điều khiển.

Tham số tùy chọn thứ hai có thể có bất kỳ giá trị nào trong ba giá trị từ tự động, vị trí hoặc làm mới. Mặc định là tự động.

Tham số tùy chọn thứ ba chỉ khả dụng với chuyển hướng vị trí và nó cho phép bạn gửi mã phản hồi HTTP cụ thể.

Thí dụ

Tạo một bộ điều khiển có tên Redirect_controller.php và lưu nó vào application/controller/Redirect_controller.php

<?php 
   class Redirect_controller extends CI_Controller { 
	
      public function index() { 
         /*Load the URL helper*/ 
         $this->load->helper('url'); /*Redirect the user to some site*/ redirect('http://www.tutorialspoint.com'); } public function computer_graphics() { /*Load the URL helper*/ $this->load->helper('url'); 
         redirect('http://www.tutorialspoint.com/computer_graphics/index.htm'); 
      } 
  
      public function version2() { 
         /*Load the URL helper*/ 
         $this->load->helper('url'); 
   
         /*Redirect the user to some internal controller’s method*/ 
         redirect('redirect/computer_graphics'); 
      } 
		
   } 
?>

Thay đổi routes.php trong tập tin application/config/routes.php để thêm tuyến đường cho bộ điều khiển trên và thêm dòng sau vào cuối tệp.

$route['redirect'] = 'Redirect_controller'; 
$route['redirect/version2'] = 'Redirect_controller/version2'; $route['redirect/computer_graphics'] = 'Redirect_controller/computer_graphics';

Nhập URL sau vào trình duyệt để thực thi ví dụ.

http://yoursite.com/index.php/redirect

URL ở trên sẽ chuyển hướng bạn đến trang web tutorialspoint.com và nếu bạn truy cập vào URL sau, nó sẽ chuyển hướng bạn đến hướng dẫn đồ họa máy tính tại tutorialspoint.com.

http://yoursite.com/index.php/redirect/computer_graphics

Khi xây dựng một ứng dụng web, chúng tôi rất quan tâm đến hiệu suất của trang web về thời gian bộ điều khiển thực thi và bao nhiêu bộ nhớ được sử dụng. Không chỉ hiệu suất, mà chúng ta cũng cần xem thông tin chi tiết về dữ liệu như dữ liệu POST, dữ liệu của truy vấn cơ sở dữ liệu, dữ liệu phiên, v.v. cho mục đích gỡ lỗi trong khi phát triển một số ứng dụng. CodeIgniter đã giúp chúng tôi thực hiện công việc này dễ dàng hơn bằng cách lập hồ sơ ứng tuyển.

Bật hồ sơ

Để kích hoạt cấu hình ứng dụng của bạn, chỉ cần thực hiện lệnh dưới đây trong bất kỳ phương thức nào của bộ điều khiển của bạn.

$this->output->enable_profiler(TRUE);

Báo cáo của hồ sơ có thể được nhìn thấy ở cuối trang sau khi bật nó.

Tắt cấu hình

Để tắt cấu hình ứng dụng của bạn, chỉ cần thực hiện lệnh dưới đây trong bất kỳ phương thức nào của bộ điều khiển của bạn.

$this->output->enable_profiler(FALSE);

Bật / Tắt phần Hồ sơ

Hồ sơ có thể được thực hiện trên cơ sở phần. Bạn có thể bật hoặc tắt cấu hình của một phần bằng cách đặt giá trị Boolean TRUE hoặc FALSE. Nếu bạn muốn thiết lập hồ sơ trên ứng dụng thì bạn có thể thực hiện trong một tệp nằm trongapplication/config/profiler.php

Ví dụ: lệnh sau sẽ kích hoạt các truy vấn cấu hình cho toàn bộ ứng dụng.

$config['queries'] = TRUE;

Trong bảng sau, khóa là tham số, có thể được đặt trong mảng cấu hình để bật hoặc tắt một cấu hình cụ thể.

Chìa khóa Sự miêu tả Mặc định

benchmarks

Thời gian đã trôi qua của điểm Benchmark và tổng thời gian thực hiện THẬT

config

Biến CodeIgniterConfig THẬT

controller_info

Lớp Controller và phương thức được yêu cầu THẬT

get

Mọi dữ liệu GET được chuyển trong yêu cầu THẬT

http_headers

Các tiêu đề HTTP cho yêu cầu hiện tại THẬT

memory_usage

Dung lượng bộ nhớ được yêu cầu hiện tại sử dụng, tính bằng byte THẬT

post

Bất kỳ dữ liệu POST nào được chuyển trong yêu cầu THẬT

queries

Danh sách tất cả các truy vấn cơ sở dữ liệu được thực thi, bao gồm cả thời gian thực thi THẬT

uri_string

URI của yêu cầu hiện tại THẬT

session_data

Dữ liệu được lưu trữ trong phiên hiện tại THẬT

query_toggle_count

Số lượng truy vấn mà sau đó khối truy vấn sẽ mặc định là ẩn. 25

Bộ hồ sơ trong tệp trong application/config/profiler.php có thể được ghi đè bằng cách sử dụng set_profiler_sections() chức năng trong bộ điều khiển như hình dưới đây.

$sections = array( 
   'config'  => TRUE, 
   'queries' => TRUE 
); 
 
$this->output->set_profiler_sections($sections);

Đặt điểm chuẩn

Nếu bạn muốn đo thời gian thực hiện một tập hợp các dòng hoặc mức sử dụng bộ nhớ, bạn có thể tính bằng cách sử dụng Điểm chuẩn trong CodeIgniter. Có một “Benchmarking”Cho mục đích này trong CodeIgniter.

Lớp này được tải tự động; bạn không cần phải tải nó. Nó có thể được sử dụng ở bất kỳ đâu trong bộ điều khiển, chế độ xem và các lớp mô hình của bạn. Tất cả những gì bạn phải làm là đánh dấu điểm bắt đầu và điểm kết thúc, sau đó thực hiện lệnhelapsed_time() giữa hai điểm được đánh dấu này và bạn có thể nhận được thời gian cần thiết để thực thi mã đó như hình dưới đây.

<?php 
   $this->benchmark->mark('code_start'); // Some code happens here $this->benchmark->mark('code_end');
  
   echo $this->benchmark->elapsed_time('code_start', 'code_end'); 
?>

Để hiển thị mức sử dụng bộ nhớ, hãy sử dụng hàm memory_usage() như thể hiện trong đoạn mã sau.

<?php 
   echo $this->benchmark->memory_usage(); 
?>

Thí dụ

Tạo một bộ điều khiển có tên Profiler_controller.php và lưu nó vào application/controller/Profiler_controller.php

<?php 
   class Profiler_controller extends CI_Controller {
  
      public function index() {
	
         //enable profiler
         $this->output->enable_profiler(TRUE); $this->load->view('test'); 
      } 
  
      public function disable() {
	
         //disable profiler 
         $this->output->enable_profiler(FALSE); $this->load->view('test'); 
      }
		
   } 
?>

Tạo một tệp dạng xem có tên test.php và lưu nó tại application/views/test.php

<!DOCTYPE html> 
<html lang = "en">
 
   <head> 
      <meta charset = "utf-8"> 
      <title>CodeIgniter View Example</title> 
   </head>
	
   <body> 
      CodeIgniter View Example 
   </body>
	
</html>

Thay đổi tệp route.php tại application/config/routes.php để thêm tuyến đường cho bộ điều khiển trên và thêm dòng sau vào cuối tệp.

$route['profiler'] = "Profiler_controller"; $route['profiler/disable'] = "Profiler_controller/disable"

Sau đó, bạn có thể nhập URL sau vào thanh địa chỉ của trình duyệt để thực thi ví dụ.

http://yoursite.com/index.php/profiler

URL trên sẽ kích hoạt trình biên dịch và nó sẽ tạo ra một đầu ra như được hiển thị trong ảnh chụp màn hình sau.

Để vô hiệu hóa cấu hình, hãy thực thi URL sau.

http://yoursite.com/index.php/profiler/disable

Thêm tệp JavaScript và CSS (Cascading Style Sheet) trong CodeIgniter rất đơn giản. Bạn phải tạo thư mục JS và CSS trong thư mục gốc và sao chép tất cả các tệp .js trong thư mục JS và các tệp .css trong thư mục CSS như trong hình.

Ví dụ: giả sử bạn đã tạo một tệp JavaScript sample.js và một tệp CSS style.css. Bây giờ, để thêm các tệp này vào dạng xem của bạn, hãy tải trình trợ giúp URL trong bộ điều khiển của bạn như được hiển thị bên dưới.

$this->load->helper('url');

Sau khi tải trình trợ giúp URL trong bộ điều khiển, chỉ cần thêm các dòng nhất định bên dưới vào tệp chế độ xem, để tải tệp sample.js và style.css trong chế độ xem như được hiển thị bên dưới.

<link rel = "stylesheet" type = "text/css" 
   href = "<?php echo base_url(); ?>css/style.css">

<script type = 'text/javascript' src = "<?php echo base_url(); 
   ?>js/sample.js"></script>

Thí dụ

Tạo một bộ điều khiển có tên Test.php và lưu nó vào application/controller/Test.php

<?php 
   class Test extends CI_Controller {
	
      public function index() { 
         $this->load->helper('url'); 
         $this->load->view('test'); 
      } 
   } 
?>

Tạo một tệp dạng xem có tên test.php và lưu nó tại application/views/test.php

<!DOCTYPE html> 
<html lang = "en">
 
   <head> 
      <meta charset = "utf-8"> 
      <title>CodeIgniter View Example</title> 
      <link rel = "stylesheet" type = "text/css" 
         href = "<?php echo base_url(); ?>css/style.css"> 
      <script type = 'text/javascript' src = "<?php echo base_url(); 
         ?>js/sample.js"></script> 
   </head>
	
   <body> 
      <a href = 'javascript:test()'>Click Here</a> to execute the javascript function. 
   </body>
	
</html>

Tạo một tệp CSS có tên style.css và lưu nó tại css/style.css

body { 
   background:#000; 
   color:#FFF; 
}

Tạo một tệp JS có tên sample.js và lưu nó tại js/sample.js

function test() { 
   alert('test'); 
}

Thay đổi routes.php trong tập tin application/config/routes.php để thêm tuyến đường cho bộ điều khiển trên và thêm dòng sau vào cuối tệp.

$route['profiler'] = "Profiler_controller"; 
$route['profiler/disable'] = "Profiler_controller/disable"

Sử dụng URL sau trong trình duyệt để thực hiện ví dụ trên.

http://yoursite.com/index.php/test

Lớp ngôn ngữ trong CodeIgniter cung cấp một cách dễ dàng để hỗ trợ nhiều ngôn ngữ để quốc tế hóa. Ở một mức độ nào đó, chúng ta có thể sử dụng các tệp ngôn ngữ khác nhau để hiển thị văn bản bằng nhiều ngôn ngữ khác nhau.

Chúng tôi có thể đặt các tệp ngôn ngữ khác nhau trong thư mục ứng dụng / ngôn ngữ. Các tệp ngôn ngữ hệ thống có thể được tìm thấy tại thư mục hệ thống / ngôn ngữ, nhưng để thêm ngôn ngữ của riêng bạn vào ứng dụng của bạn, bạn nên tạo một thư mục riêng cho từng ngôn ngữ trong thư mục ứng dụng / ngôn ngữ.

Tạo tệp Ngôn ngữ

Để tạo một tệp ngôn ngữ, bạn phải kết thúc nó bằng _lang.php. Ví dụ: bạn muốn tạo một tệp ngôn ngữ cho tiếng Pháp, thì bạn phải lưu nó bằngfrench_lang.php. Trong tệp này, bạn có thể lưu trữ tất cả các văn bản ngôn ngữ của mình bằng tổ hợp khóa, giá trị trong$lang mảng như hình bên dưới.

$lang[‘key’] = ‘val’;

Đang tải tệp ngôn ngữ

Để sử dụng bất kỳ ngôn ngữ nào trong ứng dụng của bạn, trước tiên bạn phải tải tệp của ngôn ngữ cụ thể đó để truy xuất các văn bản khác nhau được lưu trữ trong tệp đó. Bạn có thể sử dụng mã sau để tải tệp ngôn ngữ.

$this->lang->load('filename', 'language');
  • filename- Đây là tên của tập tin bạn muốn tải. Không sử dụng phần mở rộng của tệp ở đây mà chỉ sử dụng tên của tệp.

  • Language - Nó là bộ ngôn ngữ chứa nó.

Tìm nạp văn bản ngôn ngữ

Để tìm nạp một dòng từ tệp ngôn ngữ, chỉ cần thực thi đoạn mã sau.

$this->lang->line('language_key');

Ở đâu language_key là tham số khóa được sử dụng để tìm nạp giá trị của khóa trong tệp ngôn ngữ đã tải.

Ngôn ngữ tự động tải

Nếu bạn cần một số ngôn ngữ trên toàn cầu, thì bạn có thể tự động tải nó bằng application/config/autoload.php như hình bên dưới.

| -----------------------------------------------------------------------
|  Auto-load Language files
| -----------------------------------------------------------------------
| Prototype:
|   $autoload['config'] = array('config1', 'config2');
|
| NOTE: Do not include the "_lang" part of your file. For example
| "codeigniter_lang.php" would be referenced as array('codeigniter');
|
*/
$autoload['language'] = array();

Đơn giản, chuyển các ngôn ngữ khác nhau để CodeIgniter tự động điền.

Thí dụ

Tạo một bộ điều khiển có tên Lang_controller.php và lưu nó vào application/controller/Lang_controller.php

<?php
   class Lang_controller extends CI_Controller {

      public function index(){
         //Load form helper
         $this->load->helper('form');

         //Get the selected language
         $language = $this->input->post('language');
		
         //Choose language file according to selected lanaguage
         if($language == "french") $this->lang->load('french_lang','french');
         else if($language == "german") $this->lang->load('german_lang','german');
         else
         $this->lang->load('english_lang','english'); //Fetch the message from language file. $data['msg'] = $this->lang->line('msg'); $data['language'] = $language; //Load the view file $this->load->view('lang_view',$data);
      }
   }
?>

Tạo một tệp dạng xem có tên lang_view.php và lưu nó tại application/views/ lang_view.php

<!DOCTYPE html>
<html lang = "en"> 

   <head>
      <meta charset = "utf-8">
      <title>CodeIgniter Internationalization Example</title>
   </head>
	
   <body>
      <?php
         echo form_open('/lang');
      ?>
		
      <select name = "language" onchange = "javascript:this.form.submit();">
         <?php
            $lang = array('english'=>"English",'french'=>"French",'german'=>"German");
				
            foreach($lang as $key=>$val) { if($key == $language) echo "<option value = '".$key."' selected>".$val."</option>"; else echo "<option value = '".$key."'>".$val."</option>"; } ?> </select> <br> <?php form_close(); echo $msg;
      ?>
		
   </body>
	
</html>

Tạo ba thư mục có tên tiếng Anh, tiếng Pháp và tiếng Đức bằng application/language như trong hình bên dưới.

Sao chép mã đã cho bên dưới và lưu vào english_lang.php trong tập tin application/language/english thư mục.

<?php
   $lang['msg'] = "CodeIgniter Internationalization example.";
?>

Sao chép mã đã cho bên dưới và lưu vào french_lang.php trong tập tin application/language/French thư mục.

<?php
   $lang['msg'] = "Exemple CodeIgniter internationalisation.";
?>

Sao chép mã đã cho bên dưới và lưu vào german_lang.php trong tập tin application/language/german thư mục.

<?php
   $lang['msg'] = "CodeIgniter Internationalisierung Beispiel.";
?>

Thay đổi routes.php trong tập tin application/config/routes.php để thêm tuyến đường cho bộ điều khiển trên và thêm dòng sau vào cuối tệp.

$route['lang'] = "Lang_controller";

Thực thi URL sau trong trình duyệt để thực thi ví dụ trên.

http://yoursite.com/index.php/lang

Nó sẽ tạo ra một đầu ra như thể hiện trong ảnh chụp màn hình sau. Nếu bạn thay đổi ngôn ngữ trong danh sách thả xuống, ngôn ngữ của câu được viết bên dưới danh sách thả xuống cũng sẽ thay đổi tương ứng.

Phòng chống XSS

XSS có nghĩa là kịch bản trang web chéo. CodeIgniter đi kèm với bảo mật lọc XSS. Bộ lọc này sẽ ngăn chặn bất kỳ mã JavaScript độc hại nào hoặc bất kỳ mã nào khác cố gắng chiếm đoạt cookie và thực hiện các hoạt động độc hại. Để lọc dữ liệu qua bộ lọc XSS, hãy sử dụngxss_clean() như hình dưới đây.

$data = $this->security->xss_clean($data);

Bạn chỉ nên sử dụng chức năng này khi bạn đang gửi dữ liệu. Tham số Boolean thứ hai tùy chọn cũng có thể được sử dụng để kiểm tra tệp hình ảnh cho cuộc tấn công XSS. Điều này rất hữu ích cho cơ sở tải lên tệp. Nếu giá trị của nó là true, có nghĩa là hình ảnh an toàn và không phải là khác.

SQL Injection Prevention

SQL injection là một cuộc tấn công được thực hiện trên truy vấn cơ sở dữ liệu. Trong PHP, chúng tôi đang sử dụngmysql_real_escape_string() chức năng ngăn chặn điều này cùng với các kỹ thuật khác nhưng CodeIgniter cung cấp các chức năng và thư viện có sẵn để ngăn chặn điều này.

Chúng ta có thể ngăn SQL Injection trong CodeIgniter theo ba cách sau:

  • Thoát truy vấn
  • Truy vấn Biding
  • Lớp ghi hoạt động

Thoát truy vấn

<?php
   $username = $this->input->post('username'); $query = 'SELECT * FROM subscribers_tbl WHERE user_name = '.
      $this->db->escape($email);
   $this->db->query($query);
?>

$this->db->escape() chức năng tự động thêm dấu ngoặc kép xung quanh dữ liệu và xác định kiểu dữ liệu để nó chỉ có thể thoát khỏi dữ liệu chuỗi.

Truy vấn Biding

<?php
   $sql = "SELECT * FROM some_table WHERE id = ? AND status = ? AND author = ?";
   $this->db->query($sql, array(3, 'live', 'Rick'));
?>

Trong ví dụ trên, dấu chấm hỏi (?) Sẽ được thay thế bằng mảng trong tham số thứ hai của hàm query (). Ưu điểm chính của việc xây dựng truy vấn theo cách này là các giá trị được thoát tự động, tạo ra các truy vấn an toàn. Công cụ CodeIgniter tự động làm điều đó cho bạn, vì vậy bạn không cần phải nhớ nó.

Lớp ghi hoạt động

<?php
   $this->db->get_where('subscribers_tbl',array
      ('status'=> active','email' => '[email protected]'));
?>

Sử dụng bản ghi hoạt động, cú pháp truy vấn được tạo bởi mỗi bộ điều hợp cơ sở dữ liệu. Nó cũng cho phép các truy vấn an toàn hơn, vì các giá trị tự động thoát.

Ẩn lỗi PHP

Trong môi trường sản xuất, chúng tôi thường không muốn hiển thị bất kỳ thông báo lỗi nào cho người dùng. Sẽ rất tốt nếu nó được kích hoạt trong môi trường phát triển cho mục đích gỡ lỗi. Các thông báo lỗi này có thể chứa một số thông tin mà chúng tôi không nên hiển thị cho người dùng trang web vì lý do bảo mật.

Có ba tệp CodeIgniter liên quan đến lỗi.

Mức báo cáo lỗi PHP

Môi trường khác nhau yêu cầu các mức báo cáo lỗi khác nhau. Theo mặc định, phát triển sẽ hiển thị lỗi nhưng thử nghiệm và phát trực tiếp sẽ ẩn chúng. Có một tệp được gọi làindex.phptrong thư mục gốc của CodeIgniter, được sử dụng cho mục đích này. Nếu chúng ta chuyển 0 làm đối số choerror_reporting() chức năng đó sẽ ẩn tất cả các lỗi.

Lỗi cơ sở dữ liệu

Ngay cả khi bạn đã tắt các lỗi PHP, lỗi MySQL vẫn mở. Bạn có thể tắt tính năng này trongapplication/config/database.php. Đặtdb_debug tùy chọn trong $db mảng đến FALSE như hình bên dưới.

$db['default']['db_debug'] = FALSE;

Nhật ký lỗi

Một cách khác là chuyển các lỗi sang tệp nhật ký. Vì vậy, nó sẽ không được hiển thị cho người dùng trên trang web. Đơn giản, hãy đặtlog_threshold giá trị trong $config mảng đến 1 trong application/cofig/config.php như hình bên dưới.

$config['log_threshold'] = 1;

Phòng chống CSRF

CSRF là viết tắt của từ giả mạo yêu cầu trên nhiều trang web. Bạn có thể ngăn chặn cuộc tấn công này bằng cách bật nó trongapplication/config/config.php như hình bên dưới.

$config['csrf_protection'] = TRUE;

Khi bạn đang tạo biểu mẫu bằng cách sử dụng form_open(), nó sẽ tự động chèn CSRF dưới dạng trường ẩn. Bạn cũng có thể thêm CSRF theo cách thủ công bằng cách sử dụngget_csrf_token_name()get_csrf_hash()chức năng. Cácget_csrf_token_name() hàm sẽ trả về tên của CSRF và get_csrf_hash() sẽ trả về giá trị băm của CSRF.

Mã thông báo CSRF có thể được tạo lại mọi lúc để gửi hoặc bạn cũng có thể giữ nguyên mã này trong suốt vòng đời của cookie CSRF. Bằng cách đặt giá trịTRUE, trong mảng cấu hình với khóa ‘csrf_regenerate’ sẽ tạo lại mã thông báo như hình dưới đây.

$config['csrf_regenerate'] = TRUE;

Bạn cũng có thể đưa các URL vào danh sách trắng khỏi tính năng bảo vệ CSRF bằng cách đặt nó trong mảng cấu hình bằng cách sử dụng khóa ‘csrf_exclude_uris’như hình bên dưới. Bạn cũng có thể sử dụng biểu thức chính quy.

$config['csrf_exclude_uris'] = array('api/person/add');

Xử lý mật khẩu

Nhiều nhà phát triển không biết cách xử lý mật khẩu trong các ứng dụng web, đó có lẽ là lý do tại sao rất nhiều tin tặc nhận thấy rất dễ dàng để xâm nhập vào hệ thống. Người ta nên ghi nhớ những điểm sau khi xử lý mật khẩu:

  • KHÔNG lưu trữ mật khẩu ở định dạng văn bản thuần túy.

  • Luôn luôn băm mật khẩu của bạn.

  • KHÔNG sử dụng Base64 hoặc mã hóa tương tự để lưu trữ mật khẩu.

  • KHÔNG sử dụng các thuật toán băm yếu hoặc bị hỏng như MD5 hoặc SHA1. Chỉ sử dụng các thuật toán băm mật khẩu mạnh như BCrypt, được sử dụng trong các chức năng băm mật khẩu của PHP.

  • KHÔNG bao giờ hiển thị hoặc gửi mật khẩu ở định dạng văn bản thuần túy.

  • KHÔNG đặt giới hạn không cần thiết cho mật khẩu của người dùng của bạn.