Nếu bạn là một developer đang đau đầu với việc “bảo vệ đứa con tinh thần” của mình trước làn sóng người dùng xài chùa, thì bài viết này sẽ giúp bạn tạo một hệ thống license key trong WordPress vừa bảo mật vừa dễ thực hiện. Hãy cùng khám phá nhé, đảm bảo bài viết sẽ vừa cung cấp kiến thức vừa khiến bạn phì cười!
1. License Key Là Gì?
License Key là một dãy ký tự giống như mật mã giúp kiểm tra xem sản phẩm của bạn có được sử dụng hợp pháp hay không. Nó giống như kiểm tra vé vào cửa rạp phim vậy – ai có vé thì vào, ai không có thì… ra ngoài ngồi hóng.
Ví dụ:
- License hợp lệ: ABC-123-XYZ
- License “giả nai”: ABC-PHISHING-420
Nếu bạn chưa có hệ thống license key, hãy cẩn thận, vì rất có thể sản phẩm của bạn đã bị sử dụng mà chính bạn cũng không biết.
2. Vì Sao Cần License Key?
- Chống vi phạm bản quyền: Bạn đầu tư cả tháng trời làm plugin mà người khác “copy-paste” trong vài phút thì có tức không?
- Tăng doanh thu: Chỉ những người trả tiền mới sử dụng được sản phẩm.
- Quản lý người dùng: Bạn biết ai đang dùng, bao giờ hết hạn để upsell thêm.
3. Cách Tạo Hệ Thống License Key Trong WordPress
Chúng ta sẽ triển khai một hệ thống cơ bản bao gồm:
- Tạo bảng cơ sở dữ liệu để lưu key.
- Tạo giao diện quản lý key qua Admin Panel.
- API kiểm tra tính hợp lệ của key.
- Mã hóa key để tăng bảo mật.
Bước 1: Tạo Bảng Cơ Sở Dữ Liệu
Hãy bắt đầu bằng việc “xây nền móng” – tạo bảng trong database để lưu license key.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
function create_license_key_table() { global $wpdb; $table_name = $wpdb->prefix . 'license_keys'; if ($wpdb->get_var("SHOW TABLES LIKE '$table_name'") != $table_name) { $charset_collate = $wpdb->get_charset_collate(); $sql = "CREATE TABLE $table_name ( id mediumint(9) NOT NULL AUTO_INCREMENT, license_key varchar(255) NOT NULL, status varchar(50) DEFAULT 'active', created_at datetime DEFAULT CURRENT_TIMESTAMP NOT NULL, PRIMARY KEY (id) ) $charset_collate;"; require_once(ABSPATH . 'wp-admin/includes/upgrade.php'); dbDelta($sql); } } add_action('after_setup_theme', 'create_license_key_table'); |
Giải thích vui:
- Tạo bảng: Đây là nơi chứa toàn bộ “vé vào cửa” (license key).
- Trạng thái (status): Giống như đèn giao thông – active là “đèn xanh”, inactive là “đèn đỏ”.
Bước 2: Tạo API Kiểm Tra License Key
Bây giờ chúng ta sẽ tạo một endpoint API để xác minh license key. Đoạn mã dưới đây sẽ giúp bạn làm điều đó:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
add_action('rest_api_init', function () { register_rest_route('license/v1', '/validate', array( 'methods' => 'POST', 'callback' => 'validate_license_key', )); }); function validate_license_key(WP_REST_Request $request) { $key = $request->get_param('key'); global $wpdb; $table_name = $wpdb->prefix . 'license_keys'; $result = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM $table_name WHERE license_key = %s AND status = 'active'", $key ) ); if ($result) { return rest_ensure_response(array( 'status' => 'success', 'message' => 'License key is valid.' )); } else { return rest_ensure_response(array( 'status' => 'error', 'message' => 'Invalid license key.' )); } } |
Cách hoạt động:
- Website gửi POST request đến endpoint API https://yourwebsite.com/wp-json/license/v1/validate.
- API kiểm tra key trong cơ sở dữ liệu.
- Trả về kết quả: Hợp lệ hoặc Không hợp lệ.
Bước 3: Quản Lý License Key Qua Admin Panel
Hãy làm mọi thứ dễ quản lý hơn với giao diện quản trị. Sử dụng Custom Post Type:
1 2 3 4 5 6 7 8 9 10 11 |
function register_license_key_cpt() { $args = array( 'label' => 'License Keys', 'public' => false, 'show_ui' => true, 'menu_icon' => 'dashicons-admin-network', 'supports' => array('title', 'custom-fields'), ); register_post_type('license_key', $args); } add_action('init', 'register_license_key_cpt'); |
Giải thích:
- Custom Post Type (CPT): Tạo mục quản lý “License Keys” trong WordPress Dashboard.
- Bạn có thể thêm các trường như trạng thái (Active/Inactive) hoặc ngày hết hạn.
Bước 4: Mã Hóa License Key
Để tăng tính bảo mật, hãy mã hóa license key trước khi lưu:
1 2 3 4 |
function hash_license_key($key) { $secret = 'your-secret-key'; // Thay bằng chuỗi bí mật return hash_hmac('sha256', $key, $secret); } |
Khi kiểm tra key, bạn chỉ cần mã hóa key nhập vào và so sánh với giá trị lưu trong cơ sở dữ liệu.
4. Kết Luận
Hệ thống license key không chỉ bảo vệ sản phẩm của bạn mà còn tăng tính chuyên nghiệp. Đừng để những người “xài chùa” làm tổn hại đến công sức của bạn!
“Nếu bạn không bảo vệ sản phẩm của mình, chẳng khác nào bạn đưa chìa khóa nhà cho người lạ.” – một lập trình viên đau lòng.
Hãy thử áp dụng và bảo vệ sản phẩm của mình ngay hôm nay nhé! Nếu bạn gặp khó khăn, đừng ngại để lại câu hỏi – mình luôn sẵn sàng giúp bạn.
- Cách Đo Lường Hiệu Quả Chiến Dịch Marketing Nội Dung
- Hướng dẫn code chức năng chia sẻ File Google Drive Woocomerce
- Chiến Lược Phát Triển SEO Top 1 Google 2025 Dành Cho Người Mới
- Hướng Dẫn Tạo Hệ Thống Quản Lý Video Giống Youtube trên WordPress Bằng Mã PHP
- Cách Code Fake Số Lượng Hàng Đã Bán Trong Woocommerce (Không Cần Plugin)