Cách tạo một ứng dụng Web với PHP và CodeIgniter

Vài tuần trước, tôi được giao làm một dự án mới. Theo yêu cầu, tôi phải tạo ra một chương trình nhỏ trong một khoảng thời gian ngắn. Phần mềm này phải được bảo mật, dung lượng nhỏ, chạy tốc độ nhanh. Đặc biệt, nhanh chóng thêm được các tính năng mới trong khoảng thời gian ngắn nhất.

Tôi đã tìm hiểu một vài PHP frameworks (như CodeIgniter3, Yii2, CakePHP vàLaravel) cùng với JS frameworks (như Reactjs). Và cuối cùng, tôi đã chọn CodeIgniter.

Nếu bạn là một nhà phát triển PHP, tôi nghĩ rằng không dưới một lần bạn nghe đến sự phổ biến của CodeIgniter đối với PHP frameworks. CodeIgniter ra đời từ năm 2006. Bản chính thức mới nhất là ra trong tháng 2 năm 2020, đó là CodeIgniter4. CodeIgniter4 là một sản phẩm mới và sẽ có nhiều bản vá các lỗi của các phiên bản trước. Nhưng bài viết này, tôi sử dụng CodeIgniter3 để giới thiệu đến các bạn. Và bây giờ chút ta bắt đầu thôi.

Cài đặt môi trường

Yêu cầu máy chủ

Trước khi cài đặt CodeIgniter3 , bạn cần kiểm tra xem máy chủ có đáp ứng được các yêu cầu dưới đây không nhé.

  • Với CodeIgniter 3 yêu cầu sử dụng PHP 5.6 hoặc các phiên bản PHP mới hơn

Tôi khuyến cáo các bạn nên sử dụng phiên bản PHP 7.x để tránh các vấn đề về bảo mật và gia tăng hiệu suất.

Tải về CodeIgniter3

Bạn hãy tải phiên bản hiên tại của CodeIgniter3 tại đường dẫn này.

Cài đặt CodeIgniter3 vào Website của bạn

Sau khi bạn đã tải CodeIgniter3 theo đường dẫn trên về máy tính, bạn hãy giải nén CodeIgniter3 và copy tất cả các file mà bạn đã giải nén lên thư mục gốc của Website của bạn. Dưới đây là các file bạn cần đưa lên :

  • Thư mục application
  • Thư mục system
  • Thư mục user_guide (Thông thường tôi sẽ xóa thư mục này, đây chỉ là các tài liệu hướng dẫn sử dụng)
  • .editorconfig
  • .gitignore
  • composer.json
  • contributing.md
  • index.php
  • license.txt
  • readme.rst

Tôi đang sử dụng FastPanel nên thư mục gốc của tôi là thư mục tên domain (theo hình bên dưới). Bạn có thể sử dụng máy chủ web bất kỳ mà bạn mong muốn. Ở đây, tôi Copy tất cả vào thư mục lab.vubaphuong.com

photo 10 001

Cấu hình ứng dụng CodeIgniter3 của bạn

Để cấu hình ứng dụng của bạn, bạn cần một trình soạn thảo mã nguồn. Ở đây, tôi dùng Sublime Text 3. Với phần mềm này, bạn có thể soạn thảo tất cả các mã nguồn mà bạn muốn.

Cài đặt đường dẫn base_url()

  • Bạn hãy mở file config.php theo đường dẫn application/config/config.php
  • Bạn cài đặt đường dẫn base URL tại dòng $config[‘base_url’]. Trong trường hợp này, tôi đã tạo và sử dụng domain là https://lab.vubaphuong.com. Vậy tôi sẽ thêm vào base_url() của tôi là $config[‘base_url’] = ‘https://lab.vubaphuong.com/’. Lưu ý : Bạn phải đặt dấu “/” ở cuối đường dẫn của mình.

Cài đặt cơ sở dữ liệu (Database)

  • Bạn hãy mở file config.php theo đường dẫn application/config/database.php
  • Bạn thiết lập trong cài đặt Database tại mảng $db[‘default’]. Tôi đang sử dụng cơ sở dữ liệu là MariaDB với hostname của tôi là “localhost:3307“. Nếu bạn sử dụng MySQL, hostname của bạn sẽ là “localhost“. Nếu bạn sử dụng cơ sở dữ liệu khác, bạn cần kiểm tra thông tin về hostname và cổng kết nối của cơ sở dữ liệu đó là gì.
$db['default'] = array(
	'dsn'	=> '',
	'hostname' => 'localhost:3307',
	'username' => 'root',
	'password' => '',
	'database' => 'ci3_tutorial',
	'dbdriver' => 'mysqli',
	'dbprefix' => '',
	'pconnect' => FALSE,
	'db_debug' => (ENVIRONMENT !== 'production'),
	'cache_on' => FALSE,
	'cachedir' => '',
	'char_set' => 'utf8',
	'dbcollat' => 'utf8mb4_general_ci',
	'swap_pre' => '',
	'encrypt' => FALSE,
	'compress' => FALSE,
	'stricton' => FALSE,
	'failover' => array(),
	'save_queries' => TRUE
);

Lưu ý : Ứng dụng CodeIgniter3 có thể kết nối nhiều cơ sở dữ liệu và sử dụng cùng trên một ứng dụng.

Tăng cường bảo mật bằng cách thay đổi cấu trúc của ứng dụng

Theo mặc định, hai thư mục application system sẽ nằm ở ngay tại thư mục gốc của ứng dụng. Cả hai thư mục này đều có tệp .htaccess riêng để ngăn chặn việc truy cập trực tiếp từ trình duyệt. Tuy nhiên, có thể có một số trường hợp cấu hình máy chủ web thay đổi hoặc không tuân theo tệp .htaccess.

Vì vậy, bạn có di chuyển hai thư mục application system được đặt phía trên thư mục gốc hoặc một vị trí bất kỳ bạn mong muốn. Ngoài ra, bạn cũng có thể di chuyển thư mục view trong thư mục application  ra vị trí khác ngoài thư mục đó vào thư mục gốc và có thể đổi tên nó thành “pubic” chẳng hạn. Trình duyệt vẫn có thể truy cập thư mục view sau khi di chuyển thư mục application  ra ngoài vào thư mục gốc . Bạn cũng không nhất thiết cần đổi tên thành “public” vì đó là sở thích cá nhân của tôi. Bạn có thể đổi tên khác tùy bạn mong muốn.

Tiếp theo, sau khi bạn di chuyển thư mục application, system và thư mục view. Bạn cần thiết lập đường dẫn liên kết trong tệp index.php tại thư mục gốc. Bạn nên thiết lập đường dẫn đầy đủ.

Trước khi di chuyển thư mục application, system và thư mục view :

  • Thư mục gốc (public_html hoặc public hoặc www – Tên các thư mục phụ thuộc vào cài đặt hosting của bạn)
    • application folder
    • system folder
    • index.php
    • etc

Sau khi di chuyển thư mục application, system và thư mục view :

  • application folder
  • system folder
  • Thư mục gốc (public_html hoặc public hoặc www – Tên các thư mục phụ thuộc vào cài đặt hosting của bạn)
    • thư mục public (thư mục view)
    • index.php
    • etc

Sau đây là thiết lập đường dẫn cho các thư mục application, system và thư mục view :

Bạn hãy sửa giá trị các biến $system_path$application_folder và $view_folder với đường dẫn đầy đủ. Bạn cần tìm đường dẫn đầy đủ hosting của mình là gì.

  • Bạn mở file index.php
  • Thay đổi giá trị biến $system_path là “/www/yourdomainname/system
  • Thay đổi giá trị biến $application_folder là “/www/yourdomainname/application
  • Thay đổi giá trị biến $view_folder là “/www/yourdomainname/public

Cấu hình cài đặt tùy thuộc vào nhu cầu hiện tại của bạn

Khi bạn xây dựng ứng dụng, bạn thường phát triển trên localhost của mình. Trên máy chủ nội bộ, bạn có thể bật báo cáo lỗi PHP và bất kỳ chức năng phát triển nào khác mà bạn muốn.

Trong CodeIgniter, bạn có thể cấu hình cài đặt tùy thuộc vào nhu cầu hiện tại của bạn. CodeIgniter cung cấp 3 môi trường (phát triển, thử nghiệm, sản phẩm) làm mặc định. Tuy nhiên, bạn có thể thiết lập nhiều môi trường hơn mà bạn muốn.

Trong tệp index.php, bạn có thể thiết lập môi trường mà bạn muốn làm việc. Bạn chỉ cần thiết lập giá trị của biến $ _SERVER [‘CI_ENV’] thành phát triển, thử nghiệm hoặc sản xuất. Theo mặc định, nếu $ _SERVER [‘CI_ENV’] không được thiết lập giá trị thì môi trường mặc định là phát triển.

Đoạn mã trong tệp index.php sẽ như thế này.

/*
 *---------------------------------------------------------------
 * APPLICATION ENVIRONMENT
 *---------------------------------------------------------------
 *
 * You can load different configurations depending on your
 * current environment. Setting the environment also influences
 * things like logging and error reporting.
 *
 * This can be set to anything, but default usage is:
 *
 *     development
 *     testing
 *     production
 *
 * NOTE: If you change these, also change the error_reporting() code below
 */
define('ENVIRONMENT', isset($_SERVER['CI_ENV']) ? $_SERVER['CI_ENV'] : 'development');

/*
 *---------------------------------------------------------------
 * ERROR REPORTING
 *---------------------------------------------------------------
 *
 * Different environments will require different levels of error reporting.
 * By default development will show errors but testing and live will hide them.
 */
switch (ENVIRONMENT) {
	case 'development':
		error_reporting(-1);
		ini_set('display_errors', 1);
		break;

	case 'testing':
	case 'production':
		ini_set('display_errors', 0);
		if (version_compare(PHP_VERSION, '5.3', '>=')) {
			error_reporting(E_ALL & ~E_NOTICE & ~E_DEPRECATED & ~E_STRICT & ~E_USER_NOTICE & ~E_USER_DEPRECATED);
		} else {
			error_reporting(E_ALL & ~E_NOTICE & ~E_STRICT & ~E_USER_NOTICE);
		}
		break;

	default:
		header('HTTP/1.1 503 Service Unavailable.', TRUE, 503);
		echo 'The application environment is not set correctly.';
		exit(1); // EXIT_ERROR
}

Lưu ý : Trong lệnh chuyển đổi, bạn có thể tạo thêm môi trường hoặc chỉnh sửa một số cài đặt liên kết với môi trường mặc định.

Chạy thử ứng dụng CodeIgniter3

Bây giờ, bạn đã có thể xem ứng dụng của mình trên trình duyệt. Tại địah chỉ trình duyệt của bạn, hãy nhập đường dẫn URL của bạn và nhấn Enter. Với trường hợp của tôi, đường dẫn URL của tôi là “https: //lab.vubaphuong.com/”. Kết quả tôi thấy trên trình duyệt của mình là :

photo 10 002
Ứng dụng đầu tiên của CodeIgniter3 

Xử lý sự cố với CodeIgniter3

Nếu bạn gặp bất kỳ vấn đề nào với REQUEST_URI, bạn có thể cần thêm dấu chấm hỏi vào URL của mình như bên dưới.

  • Mở file /config/config.php
  • Thay đổi $config[‘index_page’] = “index.php”; thành $config [‘index_page’] = “index.php?”;

Tổng kết

Trong hướng dẫn CodeIgniter3 này, chúng ta tìm hiểu cách tải xuống và cài đặt ứng dụng CodeIgniter tại thư mục gốc. Chúng ta cũng đã tìm hiểu cách thiết lập cấu hình base_url() và cơ sở dữ liệu. Ngoài ra, chúng ta còn học cách thiết lập cấu trúc tệp để bảo mật trong thực tế tốt nhất.