NTM Solutions

Facebook Youtube Google+

Thứ Ba, 18 tháng 12, 2018

Tự học CodeIgniter-Bài 24-Bảo mật web

#hoccodeigniter


Trang này mô tả vài “ví dụ kinh điển” liên quan đến bảo mật web, và các chi tiết của tính năng bảo mật trong CodeIgniter.
Ghi chú:
Nếu bạn muốn tìm liên hệ khi có vấn đề về bảo mật vui lòng tham khảo tại: user_guide/contributing/index.html
Bảo mật URI

CodeIgniter có khả năng hạn chế tốt các ký tự trong chuỗi URI nhằm giảm thiểu khả năng tác hại  của dữ liệu khi truyền vào ứng dụng của bạn. Các URIs chỉ có thể chứa các ký tự sau:
·         Chữ cái và số (chỉ ký tự latin)
·         Dấu ngã ~
·         Dấu phần trăm %
·         Dấu chấm .
·         Dấu hai chấm :
·         Dấu gạch dưới _
·         Dấu trừ -
·         Dấu cách khoảng

Thứ Hai, 17 tháng 12, 2018

Tự học CodeIgniter-Bài 23-Câu lệnh thay thế trong PHP cho tập tin View


#hoccodeigniter


Nếu bạn không sử dụng phần biểu mẫu của CodeIgniter (user_guide/libraries/parser.html) , bạn sẽ dùng PHP thuần túy cho các tập tin View. Để giảm thiểu tối đa mã PHP trong các tập tin này, và làm cho nó dễ dàng xác định các khối mã ,khuyến cáo bạn dùng cú pháp thay thế  PHP để điều khiển các cấu trúc và  and short tag echo statements. Nếu bạn không quen với kiểu cú pháp này , nó cho phép bạn loại trừ  các dấu ngoặc trong đoạn mã, và loại trừ câu lệnh “echo”.

Hỗ trợ tự động Short Tag

Ghi chú:

Nếu bạn tìm thấy cú pháp được mô tả trong bài viết này không hoạt động trên máy chủ của bạn, điều đó có thể là do tính năng “short tags” bị vô hiệu hóa trong tập tin ini của PHP. CodeIgniter sẽ tùy chọn ghi đè lên các short tags 01 cách nhanh chóng, cho phép bạn sử dụng cú pháp đó ngay cả khi máy chủ của bạn không hỗ trợ. Tính năng này có thể được kích hoạt trong tập tin config/config.php

Hãy chú ý rằng nếu bạn dùng tính năng này, một khi lỗi PHP xuất hiện trong các tập tin view của bạn, thông điệp lỗi và số thứ tự dòng mã sẽ hiện ra chính xác. Thay vào đó, tất cả lỗi sẽ hiển thị trong các lỗi eval()

Thứ Sáu, 14 tháng 12, 2018

Tự học CodeIgniter-Bài 22-Xử lý trên nhiều môi trường


#hoccodeigniter


Các lập trình viên thường muốn hệ thống hành xử tùy theo ứng dụng chạy hay phát triển trong môi trường cụ thể nào. Ví dụ, 01 thông báo lỗi xuất ra màn hình là rất cần thiết và hữu ích khi phát triển ứng dụng, nhưng điều đó có thể vô tình lộ thông tin về bảo mật một khi ứng dụng đã online.

Hằng số ENVIRONMENT

Mặc định, CodeIgniter có hằng số môi trường thiết lập để dùng các giá trị cung cấp trong biến $_SERVER['CI_ENV'], trái với mặc định trong môi trường phát triển ứng dụng. Trong tập tin index.php ở thư mục gốc, bạn sẽ thấy:

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

Biến Máy chủ này có thể được thiết lập trong tập tin .htaccess , hoặc phần cấu hình Apache dùng SetEnv. Các phương thức thay thế có sẵn cho máy chủ nginx và các msy chủ khác , hoặc bạn có thể xóa bỏ logic này hoàn toàn và thiết lập hằng dựa trên địa chỉ IP của máy chủ.

Để tạo thêm hiệu quả hơn nữa hành vi nào đó trong framework cơ bản (xem mục kế tiếp), bạn có thể dùng hằng số này trong môi trường phát triển của bạn để tách biệt môi trường mà bạn đang chạy.

Thứ Năm, 13 tháng 12, 2018

Tự học CodeIgniter-Bài 21-Quản lý ứng dụng

#hoccodeigniter

Mặc định giả dụ bạn chỉ có ý định dùng CodeIgniter để quản lý 01 ứng dụng mà bạn xây dựng trong thư mục application/ . Tuy nhiên, ta hoàn toàn có khả năng tạp ra 01 tập các ứng dụng chia sẽ chung 01 cài đặt CodeIgniter, hoặc thậm chí đổi tên hoặc thay đổi vị trí của thư mục application/

Đổi tên thư mục Application

Nếu bạn muốn đổi tên thư mục application bạn có thể làm được điều này khi mở tập tin index.php trong thư mục gốc của CI và đổi giá trị trong biến $application_folder

$application_folder = 'application';

Thứ Tư, 12 tháng 12, 2018

Tự học CodeIgniter-Bài 20-Chạy chương trình bằng dòng lệnh CLI


#hoccodeigniter


Cũng giống như việc gọi 01 ứng dụng Controllers thông qua đường dẫn URL trên trình duyệt , chúng cũng có thể  được tải thông qua giao diện command-line (CLI).

Trước khi thực hành bài này các bạn phải thiết lập biến môi trường dẫn đến thư mục chứa tập tin php.exe bằng các bước sau:

·         Nhấp phải chuột vào My Compter (hoặc This PC) -> chọn Properties

·         Trong tab Advanced-> bấm nút Environment Variables…

·         Bấm nút New để tạo mới 01 đường dẫn và Dán vào đường dẫn đến thư mục chứa tập tin php.exe (trong hình dưới đây là phiên bản php5.6.35)

Thứ Ba, 11 tháng 12, 2018

Tự học CodeIgniter-Bài 19-Tính năng Profiling


#hoccodeigniter


Lớp Profiler sẽ hiển thị các kết quả điểm chuẩn (benchmark), các truy vấn bạn chạy, và dũ liệu trong $_POST ở cuối các trang. Thông tin này có thể hữu dụng suốt quá trình phát triển nhằm mục đích hỗ trợ cho việc biên dịchtối ưu hóa.

Khởi tạo lớp

Điểm quan trọng:

Lớp này KHÔNG cần được khởi tạo. Nó được tải tự động bởi thư viện Output nếu tính năng profiling được kích hoạt như được nêu dưới đây.

Thứ Hai, 10 tháng 12, 2018

Tự học CodeIgniter-Bài 18-Caching trang web


#hoccodeigniter


CodeIgniter cho phép bạn lưu cache các trang nhằm mục đích đạt tối ưu hóa hiệu năng.

Mặc dù CodeIgniter hoạt động khá là nhanh, lưu lượng thông tin động mà bạn hiển thị trong các trang sẽ liên quan trực tiếp đến tài nguyên máy chủ, bộ nhớ, và chu kỳ của tiến trình , là những thứ sẽ ảnh hưởng đến tốc độ tải trang. Bằng cách caching các trang,do đó chúng sẽ không phải tải lại toàn bộ, vì thế bạn có thể đạt hiệu năng gần như là các trang tĩnh.

Chủ Nhật, 9 tháng 12, 2018

Tự học CodeIgniter-Bài 17-Xử lý lỗi


#hoccodeigniter


CodeIgniter cho phép bạn xây dựng báo cáo lỗi trong ứng dụng của bạn bằng cách dùng các hàm được đề cập dưới đây. Hơn nữa, nó còn có 01 lớp dùng ghi nhật ký lỗi cho phép các thông điệp biên dịch và lỗi được lưu lại thành các tập tin.

Ghi chú:

Mặc định, CodeIgniter hiển thị tất cả lỗi PHP. Rất có thể bạn sẽ muốn thay đổi thuộc tính này 01 khi việc phát triển hoàn thành (vì lí do bảo mật chẳng hạn). Bạn sẽ tìm thấy hàm error_reporting() tại tập tin index.php trong thư mục gốc. Vô hiệu hóa tính năng báo cáo lỗi sẽ KHÔNG ngăn các tập tin nhật ký được ghi lại mỗi khi ứng dụng phát sinh lỗi.

Không giống như hầu hết các hệ thống trong CodeIgniter, các hàm xử lý lỗi đơn giản là các thể hiện dạng thủ tục đơn giản có phạm vi toàn cục trên toàn ứng dụng. Phạm vi này cho phép ta có thể đặt bẫy các thông điệp lỗi mà không cần quan tâm về phạm vi lớp/hàm.

CodeIgniter cũng trả về 01 mã trạng thái bất cứ lúc nào 01 phần trong lõi hệ thống gọi hàm  exit(). Mã trạng thái exit này khác với mã trạng thái HTTP, và nó phục vụ cho việc ghi chú cho các tiến trình khác đang chờ xem đoạn mã xử lý xong hoàn toàn chưa, nếu chưa , sẽ xuát hiện 01 dạng lỗi gây ra việc hủy tiến trình. Những giá trị này được xác định trong tập tin application/config/constants.php. Trong khi các mã trạng thái exit rất hữu dụng trong các thiết lập CLI, trả về các mã giúp đỡ phù hợp giúp phần mềm máy chủ lưu trữ dấu vết các đoạn mã của bạn và tình trạng sức khỏe phần mềm của bạn.

Thứ Bảy, 8 tháng 12, 2018

Tự học CodeIgniter-Bài 16-Định hướng URI


#hoccodeigniter


Thông thường, mỗi quan hệ giữa 01 chuỗi URLvà lớp controller/phương thức tương ứng là 1-1. Các phân đoạn trong 01 URI thường theo kiểu mẫu như sau:

example.com/lớp/hàm/id/

Trong 01 vài trường hợp, bạn có thể muốn thay đổi mối tương quan này  ví dụ như 01 lớp/phương_thức khác có thể được gọi thay vì như mặc định trong đường dẫn URL.

Thứ Sáu, 7 tháng 12, 2018

Tự học CodeIgniter-Bài 15-Hàm tương thích


#hoccodeigniter


CodeIgniter cung cấp 01 tập các hàm thích hợp cho phép bạn dùng các hàm thay thế các hàm có sẵn trong PHP, nhưng với phiên bản cao hơn hoặc tùy theo 01 phần mở rộng xác định.

Là các thực thi tùy chọn, các hàm này cũng sẽ có tập hợp các phụ thuộc riêng nào đó , nhưng vẫn hữu ích nếu các thiết lập PHP của bạn không yêu cầu các hàm nội bộ.

Ghi chú:

Giống như các hàm thông thường, các hàm thích hợp cũng luôn sẵn có để xài và các điều kiện phụ thuộc của chúng cũng trùng khớp.

Thứ Tư, 5 tháng 12, 2018

Tự học CodeIgniter-Bài 13-Tự động tải tài nguyên


#hoccodeigniter


CodeIgniter có 01 tính năng “Tự động tải” cho phép các thư viện , helpers, và models được khởi tạo tự động mỗi khi hệ thống chạy. Nếu bạn cần tài nguyên nào đó trên phạm vi toàn cục trong ứng dụng của bạn bạn nên xem xét việc dùng tính năng tự động tải chúng cho tiện.

Các mục sau có thể tự động tải:

·         Các lớp trong thư mục libraries/

·         Các tập tin Helper tìm thấy trong thư mục helpers/

·         Các tập tin tùy chọn cấu hình lưu trong thư mục config/

·         Các tập tin Ngôn Ngữ đặt trong thư mục system/language/

·         Các Models trong thư mục models/

Để tự động tải các tài nguyên, mở tập tin application/config/autoload.php và thêm mục mà bạn muốn tải vào mảng autoload. Bạn sẽ tìm thấy hướng dẫn trong tập tin đó tương ứng với từng thể loại.

Thứ Ba, 4 tháng 12, 2018

Tự học CodeIgniter-Bài 12-Hooks – Mở rộng  lõi Framework

#hoccodeigniter


Tính năng Hooks của CodeIgniter cung cấp 01 phương tiện để chọt vào và chỉnh sửa bên trong phương thức hoạt động của framework mà không phải can thiệp các tập tin hệ thống lõi . Khi CodeIgniter chạy, nó đều tuân theo 01 quá trình nhất định, được phác đồ tại đây: user_guide/overview/appflow.html . Cũng có thể có các trường hợp riêng , tuy nhiên, nơi bạn muốn tạo hành động nào đó diễn ra tại 01 trang chỉ định trong quá trình thực hiện. Ví dụ, bạn có thể muốn chạy 01 đoạn script ngay trước khi các controllers của bạn tải xong, hoặc ngay sau khi tải xong, hoặc bạn có thể muốn đặt các đoạn scripts ở nơi nào đó.

Kích hoạt Hooks

Tính năng hooks có thể được kích hoạt/hủy kích hoạt trên phamk vi toàn cục bởi thiết lập trong mục sau tại tập tin application/config/config.php

$config['enable_hooks'] = TRUE;

Thứ Hai, 3 tháng 12, 2018

Tự học CodeIgniter-Bài 11-Tạo lớp Phụ Trợ

#hoccodeigniter


Trong 01 vài trường hợp bạn muốn phát triển các lớp tồn tại độc lập với các controllers của bạn nhưng có khả năng sử dụng tất cả tài nguyên của CodeIgniter. Rồi bạn sẽ thấy điều này sẽ thực hiện rất là dễ.
get_instance()

get_instance()

Giá trị trả về: tham khảo tùy từng controller

Kiểu trả về: CI_Controller

Bất kỳ lớp nào được khởi tạo bên trong các phương thức của bạn đều có thể truy cập các tài nguyên có sẵn của CodeIgniter 01 cách đơn giản bằng cách dùng hàm get_instance() . Hàm này trả về đối tượng chính của CodeIgniter.
Thông thường, để gọi bất kỳ phương thức có sẵn, CodeIgniter buộc bạn phải dùng cấu trúc lệnh $this như vầy:
$this->load->helper('url');

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

$this->config->item('base_url');

// v.v.