tích hợp ckeditor và ckfinder vào website sử dụng php

tích hợp ckeditor và ckfinder vào website php

2021-01-16 2758 lượt xem
Vũ minh đạo

thông thường bạn sử dụng php thì folder public là folder tĩnh của hệ thống. Nếu folder tĩnh của bạn khác thì bạn cứ bõ vào đó. Nếu bạn dùng laravel thì đọc bài này thì sẽ chuẩn hơn nhé: tích hợp ckeditor và ckfinder vào website laravel

bước 1 - download ckfinder

vào đường dẫn sau download và giải nén ckfinder download trực tiếp từ website ckfinder đường link này

Bước 2 - Giải nén bõ vào folder tĩnh của hệ thống

sau khi giải nén ta có thư mục ckfinder đã nằn trong folder code tĩnh của hệ thống như sau: 

Điều này hoàn toàn không sai, nhưng bạn sẽ cần quan tâm đến các vấn đề bảo mật, vì ckfinder là code php, nếu ai đó chiếm quyền ckfinder của bạn cũng đồng nghĩa với việc hình ảnh trong website sẽ không cánh mà bay. 

=> Bạn cần bảo mật với ckfinder, chỉ khi là admin thì mới sử dụng được. 

bước 3- Bảo mật với ckfinder.

Config cho bộ ckfinder nằm trong /ckfinder/config.php. Bạn chú ý mở file này lên đôi khi sẽ có hàm CheckAuthentication hoặc nếu không sẽ có hàm như hình dưới

Hàm CheckAuthentication ( hoặc $config['authentication'] ) là một hàm được sử dụng để cho phép người dùng hiện tại có quyền được sử dụng ckfinder hay là không. Thông thường để kiểm tra quyền thì ta sẽ dùng Session, tức là bạn sẽ  tạo SESSION  dùng để cho phép sử dụng ckfinder hay là không. 

lưu ý, khi sử dụng session thì nhớ bật session_start lên kẻo nó lỗi đó. Thêm đoạn này vào code để không bị lỗi.

if (session_id() == '') {
    @session_start();
    /* or Session:start(); */
}

bước 4 - Quản Lý file

Khi sử dụng ckfinder, ở phần config bạn chú ý đến Resource Types. Bạn sẽ có 2 đối tượng cần quan tâm gồm ImagesFilesKiểu như này: 

Bạn có thể thêm đối tượng khác như Flash. Và mình không muốn quản lý đối tượng File thì cứ xoá đi thôi. 

bước 5- Phân quyền Sử dụng AccessControl

AccessControl là trình điều khiển phân quyền trong ckfinder, biến này nằm trong file config.php và tên đầy đủ là $AccessControl

$config['accessControl'][] = array(
    'role'                => '*',
    'resourceType'        => '*',
    'folder'              => '/',

    'FOLDER_VIEW'         => true,
    'FOLDER_CREATE'       => true,
    'FOLDER_RENAME'       => true,
    'FOLDER_DELETE'       => true,

    'FILE_VIEW'           => true,
    'FILE_CREATE'         => true,
    'FILE_RENAME'         => true,
    'FILE_DELETE'         => true,

    'IMAGE_RESIZE'        => true,
    'IMAGE_RESIZE_CUSTOM' => true
);

 bạn thấy key role nếu bạn muốn thêm role cứ copy và thêm 1 role mới vào.

ví dụ sau mình check nếu là supper admin thì đc full quyền

// Nếu không phải là admin
if (!empty($_SESSION['is_supper_admin']) || $_SESSION['is_supper_admin'])
{
    $config['accessControl'][] = array(
        'role'                => '*',
        'resourceType'        => '*',
        'folder'              => '/',
    
        'FOLDER_VIEW'         => true,
        'FOLDER_CREATE'       => true,
        'FOLDER_RENAME'       => true,
        'FOLDER_DELETE'       => true,
    
        'FILE_VIEW'           => true,
        'FILE_CREATE'         => true,
        'FILE_RENAME'         => true,
        'FILE_DELETE'         => true,
    
        'IMAGE_RESIZE'        => true,
        'IMAGE_RESIZE_CUSTOM' => true
    );
}else{
    $config['accessControl'][] = array(
        'role'                => '*',
        'resourceType'        => '*',
        'folder'              => '/',
    
        'FOLDER_VIEW'         => true,
        'FOLDER_CREATE'       => true,
        'FOLDER_RENAME'       => true,
        'FOLDER_DELETE'       => true,
    
        'FILE_VIEW'           => true,
        'FILE_CREATE'         => true,
        'FILE_RENAME'         => false,/// không cho đổi tên
        'FILE_DELETE'         => false,/// không cho xoá 
    
        'IMAGE_RESIZE'        => false,/// không cho thay đổi kích thước
        'IMAGE_RESIZE_CUSTOM' => false
    );
}

bước 6- Sau cùng nhớ Remove file ckfinder.html

Đây chính là then chốt của vấn đề. Bạn đổi tên file ckfinder.html thành ckfinder.php. Khi thay đổi thành ckfinder.php thì các URL khi kết hợp ckeditor phải chuyển thành ckfinder.php thay vì ckfinder.html nhé

những tag