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.

Thứ Sáu, 30 tháng 11, 2018

Tự học CodeIgniter-Bài 10-Tạo các lớp lõi hệ thống


#hoccodeigniter


Mỗi lần CodeIgniter chạy, có nhiều lớp nền bên dưới tự động khởi tạo như là 01 phần của phần lõi framework. Tuy nhiên chúng ta hoàn toàn có thể hoán đổi bất kỳ các lớp lõi hệ thống bằng phiên bản riêng của người dùng hoặc thậm chí có thể làm một phiên bản “độ” của các lớp lõi.

Hầu hết người dùng sẽ không bao giờ có nhu cầu “độ” lại , nhưng tùy chọn thay thế hoặc mở rộng chúng vẫn tồn tại cho những ai muốn tạo dấu ấn quan trọng lên phần lõi CodeIgniter.

Ghi chú:

Dính vào 01 lớp lõi hệ thống có nhiều thứ liên quan nhau, vì thế hãy chắc chắn bạn hiểu rõ những gì mình làm trước khi thực hiện.

Thứ Năm, 29 tháng 11, 2018

Tự học CodeIgniter-Bài 09-Sử dụng CodeIgniter Drivers


#hoccodeigniter


Drivers là 01 thể loại đặc biệt của Thư viện có 01 lớp cha và 01 số bất kỳ các lớp con tiềm năng nào. Các lớp con truy cập vào lớp cha, nhưng không thuộc nhánh con nào. Drivers cung cấp 01 cú pháp tao nhã trong controllers của bạn để truy cập các thư viện từ các yêu cầu  đến các lớp rời rạc.

Các drivers đặt ở thư mục system/libraries/ , bên trong các thư mục con có tên trùng với lớp thư viện cha. Và cũng trong thư mục đó là 01 thư mục con có tên là drivers, thư mục này sẽ chứa tất cả các tập tin lớp con.

Để dùng 01 driver bạn sẽ khởi tạo nó bên trong 01 controller bằng phương thức khởi tạo sau:

$this->load->driver('ten_lop');

Thứ Tư, 28 tháng 11, 2018

Tự học CodeIgniter-Bài 08-Tạo thư viện


#hoccodeigniter


Khi chúng ta đụng tới “Thư viện” nghĩa là chúng ta đang đề cập đến các lớp đặt ở thư mục của thư viện và được mô tả trong phần Class Reference của user guide. Trong trường hợp này, tuy nhiên thay vào đó chúng ta sẽ mô tả cách tạo các thư viện bên trong thư mục application/libraries nhằm mục đích tách riêng 02 phần: thư viện do lập trình viên tạo và thư viện toàn cục của framework.

Giá trị cộng thêm ở đây là CodeIgniter cho phép các thư viện của bạn có thể thừa kế các lớp gốc có sẵn nếu bạn đơn giản chỉ muốn thêm vào thư viện tính năng mới nào đó. Hoặc bạn có thể thay thế thư viện gốc chỉ bằng cách đặt các phiên bản cùng tên trong thư mục application/libraries

Túm lại:

Thứ Hai, 26 tháng 11, 2018

Tự học CodeIgniter-Bài 06-Hàm Helper

#hoccodeigniter


Helpers, như cái tên gọi, chúng sẽ giúp bạn làm các tác vụ. Mỗi tập tin helper đơn giản là 01 bộ sưu tập các hàm trong 01 mục chuyên biệt.
Ta có các URL Helpers, dùng hỗ trợ trong việc tạo liên kết,
Ta có  các Form Helpers dùng hỗ trợ trong việc tạo các phần tử biểu mẫu ,
Ta có các Text Helpers dùng thao tác định dạng văn bản thông dụng ,
Ta có các Cookie Helpers dùng thiết lập và đọc các cookies,
Ta có các File Helpers dùng xử lý tập tin và …

Thứ Sáu, 23 tháng 11, 2018

Tự học CodeIgniter-Bài 05-Models

#hoccodeigniter

Các Models là tùy chọn có sẵn cho những ai muốn hướng đến dùng mô hình MVC.


Nội dung bài viết:
·         Model là gì?
·         Giải phẫu 01 Model
·         Tải Model
·         Tự động tải Models
·         Kết nối cơ sở dữ liệu

Thứ Năm, 22 tháng 11, 2018

Tự học CodeIgniter-Bài 04-Views

#hoccodeigniter

01 view đơn giản là 01 trang web, hoặc 01 phần trong 01 trang như phần header, footer, sidebar,... Nói nào ngay, các views có thể được nhúng vào bên trong các views khác nếu bạn cần dạng hệ thống phân cấp.

Các Views không bao giờ được gọi trực tiếp, chúng phải được tải bởi 01 controller. Hãy nhớ rằng trong 01 framework MVC, Controller đóng vai cảnh sát giao thông , vì thế nó có nhiệm vụ nạp vào 01 view thích hợp. Bạn cần đọc: bài 02-Controllers trước khi đọc tiếp bài này.
Ta sử dụng lại controller Blog đã tạo trong bài 02-controller và bây giờ ta thêm vào view cho nó.

Thứ Tư, 21 tháng 11, 2018

Tự học CodeIgniter-Bài 03-Tên riêng có sẵn

#hoccodeigniter
XEM MỤC LỤC CÁC BÀI VIẾT CODE IGNITER
Để hỗ trợ chúng ta, CodeIgniter có sẵn 01 loạt các hàm, phương thức, lớp và tên biến trong các hoạt động của nó. Vì lẽ đó, lập trình viên không được dùng các tên này. Sau đây là danh sách các tên riêng đã có sẵn trong Code Igniter.
Tên Controller

Bởi vì các lớp controller của bạn sẽ thừa kế controller chính của chương trình nên bạn phải cẩn thận tránh đặt tên các phương thức trùng với tên đã có của lớp controller cha bằng không chúng sẽ chạy đè (override) . Sau đây là các tên controller cần tránh đặt trùng:
  • CI_Controller
  • Default
  • index

Thứ Ba, 20 tháng 11, 2018

Tự học CodeIgniter-Bài 02-Controllers

#hoccodeigniter


Controllers là “trái tim” trong ứng dụng web của bạn, vì chúng quyết định cách xử lý các yêu cầu HTTP.
Nội dung bài viết:
  • Controller là gì?
  • Thử tạo controller: Xin chào!
  • Các phương thức
  • Phân đoạn URI truyền tham số vào phương thức
  • Sửa Controller mặc định
  • Gọi phương thức Remap
  • Xuất dữ liệu
  • Phương thức ẩn
  • Sắp xếp các Controllers vào thư mục con
  • Khởi tạo lớp
  • Tên các phương thức tạo sẵn

Ghi chú: nếu các bạn chạy ứng dụng web cài đặt trên localhost-> thay thế tất cả đường dẫn example.com -> http://localhost/thư_mục_CI


01 Controller đơn giản là 01 tập tin chứa lớp có tên trùng với 01 URI.

Thứ Hai, 19 tháng 11, 2018

Tự học CodeIgniter-Bài 01-CodeIgniter URLs

#hoccodeigniter

Mặc định, URLs trong CodeIgniter được thiết kế thân thiện với các bộ máy tìm kiếm và người dùng, thay vì dạng “truy vấn” mặc định của hệ thống tự sinh ra, CodeIgniter dùng liên kết dạng “phân đoạn

example.com/news/article/my_article

Chú ý:
URLs dạng truy vấn vẫn có tùy chọn để kích hoạt lại (xem trong phần sau) .

Phân đoạn trong URI

Chủ Nhật, 11 tháng 11, 2018

Tự học Microsoft Word-Bài 09: Sử dụng Mail Merge

#vitinhvanphong
#hocwinword

XEM MỤC LỤC CÁC BÀI VIẾT MICROSOFT WORD


Mail Merge là tính năng trộn thư trong WinWord-> ta dùng khi cần gửi một bức thư có nội dung giống nhau cho nhiều người, các phần khác nhau nằm tại 01 vị trí cố định (ví dụ: thư mời họp, thư mời đám cưới,…)

Trước khi thực hành tính năng này các bạn kiểm tra Microsoft Outlook có OK không nhé.

03 bước chính cần phải có khi làm Mail Merge:

1.       Tạo danh sách ->nhất định phải có thông tin email (vì không có địa chỉ email thì không thể gửi thư được)

2.       Chèn Merge Field trong thư.

3.       Gửi thư theo danh sách.

Ghi chú: vì WinWord nằm trong bộ Microsoft Office nên hiển nhiên tính năng Mail Merge sẽ được gửi đi bằng Microsoft Outlook.

Ví dụ: gửi thư báo lương cho 05 nhân viên hàng tháng.

Bước 01: mở Excel nhập danh sách 05 nhân viên và lưu lại với tên danhsach.xlsx

Họ
Tên
Lương
Email
Phòng ban
Nguyễn
Hùng
5.000.000
Nhân sự
Trần Văn
Lâm
5.500.000
Công nhân
Hoàng
Vân
6.000.000
Lễ tân
Phan Kim
Khánh
2.000.000
Phó giám đốc
Tiến sĩ
M
9.000.000
Giám đốc


Thứ Bảy, 10 tháng 11, 2018

Tự học Microsoft Word-Bài 07: Định dạng cột, chèn TAB

#vitinhvanphong
#hocwinword

XEM MỤC LỤC CÁC BÀI VIẾT MICROSOFT WORD

1.    Định dạng cột

Các bạn gõ vào đoạn văn sau:
HẠ VỀ


Đêm đó, như bao đêm mùa hạ hững hờ, Lan Ngọc đang say giấc nồng trong căn hộ cao cấp chỉ mình nàng. “Cộc cộc cộc!!!”. Âm thanh khô khốc vang lên từ cánh cửa gỗ sồi màu nâu sậm phá bĩnh bầu không khí tĩnh mịch của buổi đêm hè yên ả.
Bất chợt một cảm giác lành lạnh mơn man chạy dọc theo sống lưng nàng rồi dừng lại nơi chiếc eo mềm thon gọn. Ký ức trong Lan Ngọc bỗng chốc ùa về tràn ngập tâm trí cô gái đang tuổi đôi mươi trăng tròn. Những ký ức đẹp về chàng nhà văn nơi vùng quê biển nắng gió ấy như vừa mới hôm qua tươi rói.


Tác giả: #tiensim
Các bạn quét khối từ “Đêm đó, như bao đêm..” đến “…hôm qua tươi rói.”
Sau đó ta vào TAB PAGE LAYOUT -> chọn nút Columns -> Chọn More Columns…