NTM Solutions

Facebook Youtube Google+

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.


Sau đây là danh sách các mục sẽ học trong bài viết này:

1.       Xử lý mật khẩu băm

·         Điều kiện cần có

·         Các hằng số

·         Hàm tham khảo

2.       Xử lý băm chuyên sâu

·         Điều kiện cần có

·         Hàm tham khảo

3.       Xử lý chuỗi dài

·         Điều kiện cần có

·         Hàm tham khảo

4.       Hàm tham khảo

·         Điều kiện cần có

·         Hàm tham khảo

1.Xử lý mật khẩu băm


Tập các hàm tương thích này cung cấp 01 “cổng sau” của tính năng xử lý mật khẩu băm vốn chỉ có từ phiên bản PHP 5.5.

Đường dẫn gốc: http://php.net/password

Điều kiện cần


·         PHP 5.3.7

·         CRYPT_BLOWFISH hỗ trợ cho crypt()


·         PASSWORD_BCRYPT

·         PASSWORD_DEFAULT

Hàm tham khảo


password_get_info($hash)

Tham số:
·         $hash (chuỗi) – mật khẩu đã băm
Giá trị trả về:
Thông tin về mật khẩu đã băm
Kiểu trả về:
Mảng

Xem thêm thông tin tại đây PHP manual for password_get_info().

password_hash($password, $algo[, $options = array()])

Tham số:
·         $password (chuỗi) – mật khẩu thuần
·         $algo (số nguyên) – thuật toán băm, mặc định là giá trị PASSWORD_DEFAULT
·         $options (mảng) – tùy chọn băm
Giá trị trả về:
Mật khẩu mã băm hoặc giá trị FALSE nếu sai
Kiểu trả về:
Chuỗi

Xem thêm thông tin tại đây trang hướng dẫn PHP manual for password_hash().

Ví dụ: password_hash('Lophocvitinh.COM',PASSWORD_DEFAULT);

è Mỗi lần băm cho ra kết quả khác nhau-> Chỉ nên lưu mật khẩu đã băm vào cơ sở dữ liệu để tránh người khác biết mật khẩu.

Ghi chú:

Nếu bạn không cung cấp thông số thuật giải băm an toàn(sha) riêng (và hợp lệ) của  bạn, hàm này có 01 điều kiện cần có khác trên 01 mã nguồn sẵn có CSPRNG. Mỗi hàm sau cần phải thỏa mãn: - mcrypt_create_iv() với MCRYPT_DEV_URANDOM - openssl_random_pseudo_bytes() - /dev/arandom - /dev/urandom

password_needs_rehash()

Tham số:
·         $hash (chuỗi) – mật khẩu đã băm
·         $algo (số nguyên) – thuật toán băm
·         $options (mảng) – tùy chọn băm
Giá trị trả về:
TRUE nếu chuỗi băm cần được băm lại cho khớp với các thuật toán và tùy chọn, FALSE nếu ngược lại.
Kiểu trả về:
Bool

Xem thêm thông tin tại đây PHP manual for password_needs_rehash().

password_verify($password, $hash)

Tham số:
·         $password (chuỗi) – mật khẩu thuần
·         $hash (chuỗi) – mật khẩu băm
Giá trị trả về:
TRUE nếu mật khẩu gốc trùng khớp chuỗi băm, FALSE nếu không trùng khớp
Kiểu trả về:
Bool

Xem thêm thông tin tại đây PHP manual for password_verify().

2.Xử lý băm chuyên sâu


Lớp tương thích này chứa các cổng sau cho hàm hash_equals() và hàm hash_pbkdf2() , vốn dĩ dùng trong PHP 5.6 và PHP 5.5

Điều kiện cần có


·         Không

Hàm tham khảo


hash_equals($known_string, $user_string)

Tham số:
·         $known_string (chuỗi) – chuỗi băm đã biết
·         $user_string (chuỗi) – chuỗi băm do người dùng cung cấp
Giá trị trả về:
TRUE nếu 02 chuỗi khớp, FALSE nếu không khớp
Kiểu trả về:
Chuỗi

Xem thêm thông tin tại đây PHP manual for hash_equals().

hash_pbkdf2($algo, $password, $salt, $iterations[, $length = 0[, $raw_output = FALSE]])

Tham số:
·         $algo (chuỗi) – giải thuật băm
·         $password (chuỗi) – mật khẩu
·         $salt (chuỗi) – thuật giải băm an toàn -sha
·         $iterations (số nguyên) – Số vòng lặp thực thi trong qua trình tính toán đạo hàm
·         $length (số nguyên) – Xuất chiều dài chuỗi
·         $raw_output (bool) – trả ra dữ liệu thô nhị phân hay không.
Giá trị trả về:
Khóa của Mật khẩu đã đạo hàm hoặc FALSE nếu thất bại
Kiểu trả về:
chuỗi

Xem thêm thông tin tại đây PHP manual for hash_pbkdf2().

3.Xử lý chuỗi dài


Tập các hàm tương thích hỗ trợ có giới hạn cho phần mở rộng Multibyte String của PHP. Bởi vì các giải pháp thay thế là có giới hạn, chỉ 01 vài hàm là có sẵn.

Ghi chú:

Khi 01 tham số là tập các ký tự bị thiết sót, biến $config['charset'] sẽ được dùng.


·         iconv phần mở rộng

Điểm quan trọng:

·         Điều kiện cần có này là 01 tùy chọn và những hàm này sẽ luôn được khai báo. Nếu phần mở rộng iconv không có sẵn, chúng SẼ quay về gọi phiên bản không dùng cho chuỗi dài.

·         Nơi 01 bộ mã ký tự được áp dụng, nó phải được hỗ trợ bởi iconv và trong 01 định dạng mà nó có thể nhận biết.

Ghi chú:

Để kiểm tra các điều kiện cần có của riêng bạn trên phần mở rộng mbstring thật, sử dụng hằng MB_ENABLED


mb_strlen($str[, $encoding = NULL])

Tham số:
·         $str (chuỗi) – chuỗi nhập vào
·         $encoding (chuỗi) – bộ mã ký tự
Giá trị trả về:
Số các ký tự trong chuỗi nhập vào hoặc FALSE nếu có lỗi
Kiểu trả về:
Chuỗi

Xem thêm thông tin tại đây PHP manual for mb_strlen().

mb_strpos($haystack, $needle[, $offset = 0[, $encoding = NULL]])

Tham số:
·         $haystack (chuỗi) – chuỗi gốc để tìm kiếm
·         $needle (chuỗi) – chuỗi cần tìm
·         $offset (số nguyên) – khoảng tìm kiếm
·         $encoding (chuỗi) – bộ mã ký tự
Giá trị trả về:
Số thứ tự  vị trí chuỗi cần tìm hoặc FALSE nếu không tìm thấy
Kiểu trả về:
Hỗn hợp

Xem thêm thông tin tại đây PHP manual for mb_strpos().

mb_substr($str, $start[, $length = NULL[, $encoding = NULL]])

Tham số:
·         $str (chuỗi) – chuỗi nhập vào
·         $start (số nguyên) – vị trí của ký tự bắt đầu cắt
·         $length (số nguyên) – số ký tự tối đa
·         $encoding (chuỗi) – bộ mã ký tự
Giá trị trả về:
01 phần chuỗi $str với vị trí bắt đầu cắt là $start và $length là chiều dài cần cắt hoặc trả về giá trị FALSE nếu có lỗi.
Kiểu trả về:
chuỗi

Xem thêm thông tin tại đây PHP manual for mb_substr().


Tập các hàm tương thích này đề xuất hỗ trợ 01 vài hàm tiêu chuẩn trong PHP đòi hỏi 01 phiên bản PHP mới hơn để dùng được.


·         Không


array_column(array $array, $column_key[, $index_key = NULL])

Tham số:
·         $array (mảng) – Mảng nạp kết quả vào.
·         $column_key (hỗn hợp) – Khóa của cột trả giá trị về
·         $index_key (hỗn hợp) – Khóa dùng cho việc trả về giá trị
Giá trị trả về:
01 mảng các giá trị thể hiện 01 cột đơn từ mảng nhập vào
Kiểu trả về:
Mảng

Để biết thêm thông tin các bạn tham khảo PHP manual for array_column().

hex2bin($data)

Tham số:
·         $data (mảng) – dữ liệu dạng hệ thập lục
Giá trị trả về:
Dữ liệu dạng hệ nhị phân
Kiểu trả về:
Chuỗi

Để biết thêm thông tin các bạn tham khảo PHP manual for hex2bin().

Nếu vẫn chưa rõ các bạn xem thêm video clip sau:




By #tiensim

Nguồn: User Guide – General Topics