Bài viết gần đây

#1
Hooks – Tùy biến logic nghiệp vụ / Các hàm PHP tích hợp sẵn trong...
Bài viết cuối cùng bởi admin - T07 20, 2025, 11:08 SÁNG
Các hàm PHP tích hợp sẵn trong AppGini để phát triển ứng dụng

Chào mọi người, 
Mình đang tìm hiểu về AppGini và thấy nó cung cấp nhiều hàm PHP tích hợp rất hữu ích để làm việc với cơ sở dữ liệu, quản lý người dùng, và tùy chỉnh ứng dụng (đặc biệt khi xây API RESTful). Dưới đây là tóm tắt một số hàm chính, hy vọng hữu ích cho anh em!

1. Hàm cơ sở dữ liệu
  • sql($query, &$eo): Thực thi truy vấn SQL. 
    $query = "SELECT * FROM users WHERE id = 1";
    $result = sql($query, $eo);
    while ($row = db_fetch_assoc($result)) {
        echo $row['username'];
    }
  • sqlValue($query): Lấy giá trị duy nhất từ truy vấn. 
    $username = sqlValue("SELECT username FROM users WHERE id = 1");
    echo $username ? $username : "Không tìm thấy";
  • db_fetch_assoc($result): Lấy hàng dữ liệu dạng mảng liên kết. 
    $result = sql("SELECT * FROM users", $eo);
    while ($row = db_fetch_assoc($result)) {
        echo $row['username'] . " - " . $row['email'];
    }
  • db_insert_id(): Lấy ID của bản ghi vừa thêm. 
    sql("INSERT INTO users (username) VALUES ('john')", $eo);
    echo "ID mới: " . db_insert_id();

2. Hàm quản lý người dùng
  • getMemberInfo(): Lấy thông tin người dùng hiện tại. 
    $memberInfo = getMemberInfo();
    echo $memberInfo ? $memberInfo['username'] : "Chưa đăng nhập";
  • is_allowed($table, $id, $operation): Kiểm tra quyền truy cập. 
    if (is_allowed("users", 1, "edit")) {
        echo "Có quyền chỉnh sửa";
    } else {
        echo "Không có quyền";
    }

3. Hàm xử lý dữ liệu
  • makeSafe($string, $is_array = false): Làm sạch dữ liệu để chống SQL Injection. 
    $input = makeSafe($_POST['username']);
    $query = "SELECT * FROM users WHERE username = '$input'";
  • htmlSpecialChars($string): Ngăn XSS bằng cách mã hóa HTML. 
    $description = htmlSpecialChars($_POST['description']);
    echo $description;

4. Hàm khác
  • getTableList(): Lấy danh sách bảng. 
    $tables = getTableList();
    print_r($tables);
  • sendmail($options): Gửi email. 
    $options = [
        'to' => 'user@example.com',
        'subject' => 'Chào mừng',
        'message' => 'Chào mừng bạn!'
    ];
    sendmail($options);

Ví dụ sử dụng trong API RESTful
Dùng các hàm trên để xây API RESTful cho AppGini: 
require_once('../hooks/config.php');
header('Content-Type: application/json');

if ($_SERVER['REQUEST_METHOD'] == 'GET') {
    $memberInfo = getMemberInfo();
    if (!$memberInfo || !is_allowed("users", null, "view")) {
        http_response_code(403);
        echo json_encode(['error' => 'Access denied']);
        exit;
    }

    $query = "SELECT id, username, email FROM users";
    $result = sql($query, $eo);
    $users = [];
    while ($row = db_fetch_assoc($result)) {
        $users[] = $row;
    }
    http_response_code(200);
    echo json_encode($users);
}

Lưu ý
  • Dùng makeSafe() hoặc sqlValue() để bảo mật.
  • Kiểm tra biến $eo để xử lý lỗi truy vấn.
  • Xem thêm tài liệu tại bigprof.com/appgini.

Anh em có ai biết thêm hàm nào hay hoặc mẹo dùng AppGini không? Chia sẻ với mình nhé! 😄
#2
Cài đặt và khởi tạo dự án AppGini / Cài đặt và cấu hình WAMP Serve...
Bài viết cuối cùng bởi admin - T06 30, 2025, 11:29 CHIỀU
Cài đặt và cấu hình WAMP Server bảo mật, tối ưu cho AppGini


Mục đích:
Hướng dẫn cài đặt WAMP Server chuẩn, tối ưu và an toàn cho môi trường phát triển AppGini nội bộ, hỗ trợ hiển thị danh sách project, cấu hình phpMyAdmin bảo mật và giao diện landing page thân thiện.

index desktop.jpg

index from lan.jpg


1. Tải về các công cụ cần thiết

✔ Visual C++ Redistributable (All-in-One): 
https://www.techpowerup.com/download/visual-c-redistributable-runtime-package-all-in-one/

✔ WAMP Server: 
https://sourceforge.net/projects/wampserver/files/latest/download

✔ Notepad++: 
https://github.com/notepad-plus-plus/notepad-plus-plus/releases


2. Cài đặt WAMP Server

  • Giải nén file Visual-C-Runtimes-All-in-One*.zip, chuột phải vào install_all.bat → chọn Run as administrator.
  • Cài wampserver3.3.7_x64.exe bình thường → chọn "No" khi được hỏi.
  • Sau khi cài xong, khởi động WAMP → đợi icon chuyển màu xanh là OK.
  • Cài đặt Notepad++


3. Cấu hình PHP (file php.ini)

Mở file tại:
C:\wamp64\bin\php\php8.3.14\php.ini

Tìm và sửa các dòng sau:

display_errors = On
post_max_size = 100M
upload_max_filesize = 100M
date.timezone = "Asia/Ho_Chi_Minh"

Tùy chọn này cho phép AppGini upload các file có dung lượng tối đa là 100MB, mỗi lần post tối đa 100MB, múi giờ Việt Nam và không hiển thị lỗi ra trình duyệt web.

4. Cấu hình Apache

✔ Mở file: 
C:\wamp64\bin\apache\apache2.4.62.1\conf\extra\httpd-vhosts.conf

Thay bằng nội dung sau:

<VirtualHost _default_:80>
  ServerName localhost
  DocumentRoot "${INSTALL_DIR}/www"
  DirectoryIndex index.php index.html index.htm

  <Directory />
    Require all denied
    Options None
    AllowOverride None
  </Directory>

  <Directory "${INSTALL_DIR}/www/">
    Options +FollowSymLinks +Indexes
    AllowOverride All
    Require all granted
  </Directory>

  <Directory "${INSTALL_DIR}/apps/phpmyadmin5.2.1/">
    Require local
  </Directory>
</VirtualHost>

✔ Mở file: 
C:\wamp64\bin\apache\apache2.4.62.1\conf\httpd.conf 
Chỉnh sửa:

ServerSignature Off
ServerTokens Prod


5. Đặt mật khẩu cho MySQL root

Mở: WAMP > MySQL > MySQL Console

mysql console.jpg

Khi được hỏi mật khẩu → nhấn Enter (vì mặc định chưa có mật khẩu) 
Sau đó gõ lệnh sau:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'YourStrongPassword';
FLUSH PRIVILEGES;

Thay "YourStrongPassword" bằng mật khẩu của bạn.
Áp dụng tương tự cho MariaDB nếu dùng.


6. Cấu hình phpMyAdmin (config.inc.php)

Mở file:
C:\wamp64\apps\phpmyadmin5.2.1\config.inc.php

Tìm và sửa (2 lần cho 2 CSDL MySQL và MariaDB):

$cfg['Servers'][$i]['AllowNoPassword'] = false;

Khi truy cập phpMyAdmin sẽ yêu cầu nhập username/password. User là root và mật khẩu mà bạn đã thiết lập ở bước 5.

Link truy cập phpmyadmin: http://localhost/phpmyadmin

7. Tạo giao diện trang chủ App Gallery

  • Xoá toàn bộ nội dung mặc định trong thư mục C:\wamp64\www
  • Tạo file index.php với giao diện đẹp sử dụng Tailwind CSS
  • Tự động liệt kê danh sách project và phân quyền theo IP:
    • Nếu truy cập từ máy cài WAMP → thấy phpMyAdmin + project
    • Nếu truy cập từ LAN → chỉ thấy project

Tải file index.zip trong phần đính kèm > giải nén và chép vào thư mục C:\wamp64\www\


8. Khởi động lại toàn bộ dịch vụ

Vào biểu tượng WAMP ở thanh taskbar → chọn: Restart All Services


9. Lưu ý bảo mật

  • Không để tài khoản root không có mật khẩu.
  • Hạn chế phpMyAdmin chỉ cho truy cập từ localhost.
  • Ẩn thông tin version Apache bằng cách tắt ServerSignature và ServerTokens.
  • Không public WAMP ra internet trừ khi cấu hình firewall/nginx reverse proxy an toàn.


Mọi thắc mắc – góp ý – bổ sung xin gửi vào chủ đề này!
#3
Khu vực Affiliate – Mua bản quyền / MUA BẢN QUYỀN APPGINI CHÍNH HÃ...
Bài viết cuối cùng bởi admin - T06 27, 2025, 09:19 CHIỀU
MUA BẢN QUYỀN APPGINI CHÍNH HÃNG – HỖ TRỢ NGƯỜI DÙNG VIỆT NAM

AppGini.vnsáng kiến độc lập tại Việt Nam với sự hỗ trợ chính thức từ BigProf Software – nhà phát triển AppGini từ năm 2002.

💡 Ưu đãi đặc biệt cho người dùng Việt:
Sử dụng mã giảm giá VIETNAM khi mua bản quyền AppGini để được giảm ngay 15% và đồng hành cùng cộng đồng AppGini Việt Nam.

gia phan mem.jpg

Link mua AppGini Pro:
→ Mua AppGini Pro + 1 năm cập nhật (15% OFF)

Các plugin mở rộng chính hãng (có hỗ trợ giảm giá):

Calendar Plugin – Lập lịch, quản lý sự kiện trực quan
DataTalk Plugin – Giao diện trò chuyện nội bộ theo dữ liệu
Mass Update Plugin – Cập nhật hàng loạt bản ghi tiện lợi
Messages Plugin – Gửi tin nhắn nội bộ giữa người dùng
Search Page Maker Plugin – Tạo trang tìm kiếm nâng cao dễ dàng
Summary Reports Plugin – Tạo báo cáo tổng hợp chuyên nghiệp

Lưu ý:

- Toàn bộ giao dịch được xử lý qua hệ thống thanh toán an toàn của FastSpring.
- Bạn sẽ nhận được key bản quyền và hướng dẫn cài đặt qua email ngay sau khi thanh toán.
- Cộng đồng AppGini Việt Nam luôn sẵn sàng hỗ trợ bạn cài đặt và sử dụng các plugin này.

Cảm ơn bạn đã lựa chọn sử dụng phần mềm bản quyền và ủng hộ cộng đồng phát triển AppGini tại Việt Nam!

Đội ngũ AppGini.vn
#4
Cài đặt và khởi tạo dự án AppGini / Chia sẻ máy ảo Ubuntu tích hợp...
Bài viết cuối cùng bởi admin - T06 25, 2025, 07:54 CHIỀU
Chia sẻ máy ảo Ubuntu tích hợp sẵn AppGini – Sẵn sàng sử dụng

Chào các bạn,

Mình vừa hoàn thiện một bản máy ảo Ubuntu 24.04 Desktop đã được cấu hình sẵn để phục vụ cho việc học và phát triển ứng dụng với AppGini. Máy ảo được đóng gói dưới định dạng .ovf và có thể import dễ dàng bằng VMware Workstation hoặc VMware Player.

Bản này phù hợp cho:
  • Người mới làm quen với AppGini, chưa quen cài môi trường phát triển.
  • Doanh nghiệp muốn triển khai ứng dụng AppGini nội bộ mà không cần cài đặt từ đầu.
  • Đào tạo AppGini tại trường học, trung tâm hoặc nội bộ công ty.
  • Tester hoặc Dev cần môi trường AppGini nhanh chóng để thử nghiệm.

AGVN v2.1-2025-06-25-19-57-30.jpg

AGVN v2.1-2025-06-25-19-59-10.jpg

AGVN v2.1-2025-06-25-20-02-36.jpg

AGVN v2.1-2025-06-25-20-03-12.jpg



Phần mềm đã cài đặt sẵn:

  • Ubuntu 24.04 Desktop (64-bit)
  • WineHQ + PlayOnLinux: để chạy AppGini bản Windows
  • AppGini Free và Pro: chạy qua PlayOnLinux, đã test hoạt động ổn định
  • LibreOffice: Writer, Calc, Impress,... hỗ trợ công việc văn phòng
  • Visual Studio Code: cài sẵn một số extension hữu ích (Prettier, ESLint,...)
  • Nginx + PHP 8.3 + php8.3-fpm: chạy ứng dụng PHP/AppGini
  • MariaDB 10.11: hệ quản trị cơ sở dữ liệu phổ biến, tối ưu cho AppGini
  • phpMyAdmin: cài sẵn, chỉ cho phép truy cập từ localhost
  • Firefox và Chromium: phục vụ kiểm thử giao diện web
  • Anydesk: cài sẵn, phục vụ hỗ trợ từ xa khi cần
  • IBus-Unikey: hỗ trợ gõ tiếng Việt ngay sau khi khởi động máy



Tài khoản mặc định trong máy ảo:
Username: ladmin
Password: appginivn2025



Hướng dẫn sử dụng:

  • Import file .ovf vào VMware Workstation hoặc VMware Player.
  • Chọn chế độ mạng NAT và cấu hình NAT port 80 của VM ra port 8080 trên máy thật (qua Virtual Network Editor).
  • Khởi động máy ảo, đăng nhập vào hệ điều hành bằng tài khoản đã cung cấp.
  • Dùng AppGini để thiết kế ứng dụng → export mã nguồn → chép vào thư mục:
    /var/www/html
  • Truy cập ứng dụng từ trình duyệt trên máy thật:
    http://localhost:8080



Link tải máy ảo: https://drive.google.com/file/d/1qGJ2T4paYewTjW54kQhkLxTqXGQPfU-O/view?usp=sharing
Link tải VMware Workstation 17 : https://drive.google.com/file/d/1ZTIjoNJgEq0zSDNnct0-Yl_Z2LFbqVyn/view?usp=sharing



Ghi chú thêm:

- phpMyAdmin mặc định chỉ truy cập được từ trong VM (localhost), đảm bảo an toàn hơn khi triển khai nội bộ.
- Bộ gõ tiếng Việt đã được bật sẵn (IBus-Unikey). Có thể chuyển giữa tiếng Việt và tiếng Anh.



Mình sẽ tiếp tục cải tiến phiên bản này trong thời gian tới (có thể thêm Docker, script reset app, backup định kỳ,...). 
Nếu bạn có nhu cầu build phiên bản theo yêu cầu riêng hoặc có góp ý gì, vui lòng phản hồi tại topic này.

Thân mến, 
AppGini Việt Nam
#5
AJAX – API – Kết nối nâng cao / Ra mắt API AppGini v1 - Giải p...
Bài viết cuối cùng bởi admin - T06 21, 2025, 10:24 CHIỀU
Tiêu đề: Ra mắt API AppGini v1 - Giải pháp tích hợp ứng dụng di động và hệ thống khác

Chào cộng đồng AppGini Việt Nam,

Mình rất vui được chia sẻ một dự án mà mình đã phát triển nhằm mở rộng khả năng tích hợp của AppGini với các ứng dụng bên ngoài, đặc biệt là ứng dụng di động hoặc các hệ thống khác. Đây là phiên bản API v1, được xây dựng dựa trên PHP, MySQL, và sử dụng JWT (JSON Web Token) để xác thực an toàn.

api_tester.jpg

Mục đích:
API này cung cấp một giao diện RESTful để tương tác với cơ sở dữ liệu AppGini của bạn, bao gồm các chức năng:

Đăng nhập người dùng AppGini và cấp JWT.
Thực hiện các thao tác CRUD (Create, Read, Update, Delete) trên dữ liệu bảng.
Tích hợp hệ thống quyền hạn của AppGini (dựa trên quyền người dùng và nhóm).
Bảo mật bằng API Key và JWT.
Tính năng chính:

Xác thực người dùng:
Sử dụng tên người dùng và mật khẩu AppGini để đăng nhập.
Tạo và trả về JWT để các yêu cầu API sau này được xác thực.
Kiểm tra trạng thái isApprovedisBanned của người dùng.

API Key Bảo mật:
Mỗi yêu cầu đến API api.php đều phải kèm theo một X-API-KEY được định nghĩa trong config.php, cung cấp một lớp bảo mật cơ bản cho ứng dụng của bạn.

Hỗ trợ CRUD:
GET: Lấy dữ liệu từ một bảng (có thể lấy tất cả hoặc một bản ghi theo ID). Áp dụng bộ lọc quyền PERM_OWNERPERM_GROUP của AppGini.
POST: Thêm bản ghi mới vào một bảng. Tự động gán owner_memberID nếu cấu hình.
PUT: Cập nhật bản ghi hiện có theo ID.
DELETE: Xóa bản ghi theo ID.

Tích hợp hệ thống quyền hạn AppGini:
API tự động kiểm tra quyền allowInsert, allowView, allowEdit, allowDelete của người dùng hoặc nhóm cho từng bảng dựa trên các bảng membership_userpermissionsmembership_grouppermissions.
Lọc dữ liệu GET và kiểm tra quyền CRUD dựa trên PERM_ALL, PERM_GROUP, PERM_OWNER.

Cấu hình linh hoạt:
Dễ dàng cấu hình thông tin cơ sở dữ liệu, JWT Secret Key, thời gian hết hạn token và API Key trong file config.php.

Cấu trúc thư mục và cài đặt:

Để sử dụng API này, bạn cần tạo một thư mục mới trong thư mục gốc của dự án AppGini của mình (ví dụ: your-appgini-project/api/v1/) và sao chép tất cả các file sau vào đó:

your-appgini-project/
├── admin/
├── images/
├── hooks/
├── api/v1/
│   ├── api.php
│   ├── auth.php
│   ├── config.php
│   ├── db_connection.php
│   ├── login.php
│   └── permissions.php
└── ... (các file AppGini khác)

Các file chính và chức năng:

config.php: Chứa các hằng số cấu hình quan trọng như thông tin kết nối DB, JWT_SECRET_KEY, API_KEY, và các tên bảng/mã quyền của AppGini. Quan trọng: Hãy thay đổi các giá trị mặc định cho DB_PASSWORD, JWT_SECRET_KEY, và API_KEY thành các chuỗi mạnh và duy nhất của bạn!

db_connection.php: Xử lý việc kết nối đến cơ sở dữ liệu MySQL và cung cấp các hàm tiện ích như respondWithError()decodeJwt(). Lưu ý: Hàm decodeJwt() là một triển khai JWT cơ bản và không bao gồm đầy đủ các bước xác minh chữ ký. Trong môi trường PRODUCTION, bạn nên sử dụng thư viện JWT của bên thứ ba đáng tin cậy (ví dụ: composer require firebase/php-jwt) để giải mã và xác minh token.

auth.php: Chứa logic xác thực người dùng AppGini (loginUser()) và tạo/giải mã JWT. Nó cũng mô phỏng hàm password_match() của AppGini để kiểm tra mật khẩu.

permissions.php: Xử lý tất cả logic liên quan đến quyền hạn của AppGini. Bao gồm các hàm getUserTablePermissions(), checkPermission(), getOwnershipWhereClause(), và getOwnerFieldName(). Bạn cần tùy chỉnh hàm getOwnerFieldName() để ánh xạ đúng cột ID chủ sở hữu cho các bảng của bạn.

login.php: Endpoint để xử lý yêu cầu đăng nhập, xác thực thông tin người dùng và trả về JWT. Chỉ chấp nhận phương thức POST.

api.php: Endpoint chính cho các yêu cầu CRUD. Nó xác thực X-API-KEY, JWT, kiểm tra quyền của người dùng và thực hiện các thao tác trên cơ sở dữ liệu.

Cách dùng và thử nghiệm:

Bạn có thể dễ dàng kiểm tra API này bằng cách mở file test_api_v1.html trên trình duyệt của mình.

Sao chép test_api_v1.html: Đặt file này ở bất kỳ đâu trên máy tính của bạn (không cần đặt trong thư mục dự án web).
Mở trên trình duyệt: Mở test_api_v1.html bằng trình duyệt Chrome hoặc bất kỳ trình duyệt hiện đại nào.
Cấu hình API:
URL gốc API: Nhập URL mà bạn đã đặt các file API PHP của mình (ví dụ: http://localhost/api/v1).
API Key: Nhập API_KEY mà bạn đã định nghĩa trong file config.php.
Đăng nhập:
Nhập tên người dùng và mật khẩu của một tài khoản AppGini hợp lệ.
Nhấn nút "Đăng nhập". Nếu thành công, bạn sẽ nhận được một JWT.
Gửi yêu cầu API:
Chọn phương thức HTTP (GET, POST, PUT, DELETE).
Nhập tên bảng (ví dụ: members, products).
Nếu là GET/PUT/DELETE một bản ghi cụ thể, nhập "ID bản ghi".
Đối với POST/PUT, nhập JSON body vào textarea.
Nhấn "Gửi yêu cầu". Phản hồi API sẽ hiển thị bên dưới.
Ví dụ về cách test_api_v1.html kết nối đến API:

File test_api_v1.html là một công cụ đơn giản dựa trên JavaScript để gửi các yêu cầu HTTP đến các endpoint login.phpapi.php. Nó sẽ thêm X-API-KEY vào header và Authorization: Bearer <JWT_TOKEN> sau khi bạn đăng nhập thành công.

Lưu ý quan trọng:

Bảo mật: Đây là phiên bản khởi đầu. Để sử dụng trong môi trường production, hãy đảm bảo:
JWT_SECRET_KEYAPI_KEY của bạn là RẤT MẠNH VÀ DUY NHẤT.
Cân nhắc sử dụng HTTPS trên server của bạn để mã hóa tất cả lưu lượng truy cập.
Nâng cấp hàm decodeJwt() để sử dụng thư viện JWT chính thức để xác minh chữ ký đầy đủ.
Thực hiện validation đầu vào nghiêm ngặt hơn cho tất cả dữ liệu nhận được từ người dùng để ngăn chặn các cuộc tấn công SQL Injection hoặc XSS (mặc dù prepared statements đã giảm thiểu SQL Injection).
Mở rộng: Bạn có thể mở rộng API này để hỗ trợ các chức năng phức tạp hơn như tìm kiếm nâng cao, phân trang, sắp xếp, hoặc tích hợp các trường lookup/cha-con của AppGini.
Tùy chỉnh getOwnerFieldName(): Hãy chắc chắn rằng bạn đã cập nhật hàm getOwnerFieldName() trong permissions.php với các tên bảng và cột chủ sở hữu chính xác từ cơ sở dữ liệu AppGini của bạn.
Hy vọng API này sẽ hữu ích cho cộng đồng và là một khởi đầu tốt để tích hợp AppGini với thế giới bên ngoài! Mọi phản hồi và đóng góp đều được hoan nghênh.
#6
Cài đặt và khởi tạo dự án AppGini / Hướng Dẫn Cài Đặt Môi Trường P...
Bài viết cuối cùng bởi admin - T06 08, 2025, 02:27 CHIỀU
Hướng Dẫn Cài Đặt Môi Trường Phát Triển AppGini Fullstack
AppGini là công cụ RAD (Rapid Application Development) giúp bạn tạo ứng dụng web dựa trên MySQL/MariaDB mà không cần viết nhiều mã. Để sử dụng AppGini hiệu quả, bạn cần cài đặt đầy đủ các công cụ sau:


1. Tải và cài đặt AppGini

Truy cập trang chủ: https://bigprof.com/appgini/download

Tải phiên bản mới nhất (file .exe, dung lượng khoảng 20MB). Lưu ý: đây là phiên bản trial.

Chạy file để cài đặt.

Sau khi cài xong, bạn có thể mở AppGini từ Start Menu.

2. Cài đặt WAMP Server (Web server + MySQL + PHP)
AppGini tạo ra mã PHP nên bạn cần môi trường để chạy thử web app:

Truy cập https://www.wampserver.com/en/#download-wrapper

Chọn bản phù hợp hệ điều hành (64-bit thường dùng): Wampserver 64 bits

Yêu cầu đã cài Visual C++ Redistributable (sẽ nói ở bước kế tiếp)

Cài đặt theo mặc định, thư mục sẽ là: C:\wamp64

Sau khi cài xong, bật WAMP => biểu tượng ở taskbar sẽ chuyển sang màu xanh.

3. Cài All-in-One C++ Redistributable
WAMP và một số phần mềm PHP/MySQL cần C++ Redistributable mới nhất.

Tải gói tổng hợp tại: https://www.techpowerup.com/download/visual-c-redistributable-runtime-package-all-in-one/

Giải nén và chạy file install_all.bat dưới quyền Administrator

Sau khi cài xong, bạn có thể cài WAMP mà không gặp lỗi thiếu DLL.

4. Cài đặt Visual Studio Code (VS Code)
Để chỉnh sửa mã PHP, HTML, JS hiệu quả:

Truy cập https://code.visualstudio.com/

Tải và cài bản Windows (User Installer hoặc System Installer đều được)

Cài các extension sau trong VS Code:

PHP Intelephense: hỗ trợ code PHP

Prettier: format code

Live Server: xem file HTML nhanh

SQLTools: kết nối và chạy lệnh SQL nếu cần

5. Cấu hình ban đầu

Tạo thư mục chứa project trong C:\wamp64\www\ten_project

Export project từ AppGini vào thư mục đó

Mở trình duyệt, truy cập: http://localhost/ten_project để chạy ứng dụng

Dùng phpMyAdmin (http://localhost/phpmyadmin) để tạo CSDL nếu cần

6. Gợi ý cấu hình php.ini (nếu cần dùng tính năng nâng cao)

Mở C:\wamp64\bin\php\php8.x.x\php.ini

Bật các dòng sau (xóa dấu ; nếu có):


extension=mysqli
extension=mbstring
extension=pdo_mysql

Kết luận
Với 4 bước cài đặt trên (AppGini + WAMP + Redis + VSCode), bạn đã có một môi trường phát triển đầy đủ để tạo ứng dụng web nội bộ, CRM, quản lý kho, nhân sự,... chỉ trong vài giờ.

Hãy bắt đầu với một dự án mẫu và thực hành từng phần để nắm rõ cách AppGini sinh mã và tùy biến nhé.
#7
Cài đặt và khởi tạo dự án AppGini / Tạo ứng dụng quản lý nhiều ngư...
Bài viết cuối cùng bởi admin - T06 06, 2025, 10:29 CHIỀU
Tạo ứng dụng quản lý nhiều người dùng trong vài phút với AppGini

Video gốc: Create a Multi-User Business Application In Minutes with AppGini (YouTube)


Trong video hướng dẫn chính thức này, tác giả trình bày cách tạo một ứng dụng quản lý kho hàng (Inventory Management) bằng AppGini chỉ trong vài phút, từ thiết kế đến triển khai và sử dụng thực tế.

1. Mục tiêu chính của ứng dụng mẫu:
Tạo một hệ thống gồm các bảng dữ liệu để:
  • Quản lý sản phẩm
  • Ghi nhận hàng nhập kho
  • Ghi nhận hàng xuất kho
  • Tự động tính tồn kho theo thời gian thực

2. Các bảng dữ liệu và trường chính:

• products: product_name, description, SKU (mã sản phẩm – khóa chính), stock_level (số lượng tồn). 
• stocks_received: SKU (lookup), quantity_received, date_received, person_received. 
• stocks_withdrawn: tương tự bảng nhập kho, nhưng để ghi nhận hàng xuất.

→ Trường stock_level là trường tính toán (calculated field), dùng công thức SQL để tính:
Tồn kho = Tổng số hàng nhập - Tổng số hàng xuất

3. Các tính năng được cấu hình trong AppGini:

  • Thiết lập khóa chính, kiểu dữ liệu, bắt buộc nhập, giới hạn số âm
  • Tự động điền tên người nhập liệu thông qua "created by username"
  • Tạo lookup để liên kết bảng
  • Sử dụng SQL để tính toán tồn kho tự động theo từng SKU

4. Sinh mã nguồn và triển khai ứng dụng:

  • Nhấn "Generate App" để tạo mã nguồn PHP/MySQL
  • Upload ứng dụng lên server bằng uploader tích hợp trong AppGini
  • Cấu hình kết nối FTP và tạo tài khoản admin trên giao diện setup ban đầu
  • Ứng dụng sẵn sàng sử dụng và phân quyền cho nhiều người dùng

5. Nhập liệu và kiểm thử thực tế:

  • Thêm 2 sản phẩm mẫu: Laptop và Smartphone
  • Nhập kho 10 chiếc Laptop → Tồn kho hiển thị: 10
  • Xuất kho 2 chiếc Laptop → Tồn kho cập nhật: 8
  • Cho phép import danh sách sản phẩm qua CSV để tiết kiệm thời gian nhập

6. Chỉnh sửa và cập nhật ứng dụng:

AppGini cho phép bạn cập nhật ứng dụng rất nhanh:

  • Thay đổi theme → chọn giao diện tối (dark theme)
  • Thêm trường "photo" vào bảng sản phẩm để cho phép upload ảnh
  • Generate lại app và chỉ upload những file thay đổi → cập nhật nhanh chóng

7. Kết luận:

Video minh họa rõ ràng cách dùng AppGini để:
  • Tạo ứng dụng web đa người dùng trong vài phút
  • Tự động hóa nghiệp vụ mà không cần viết nhiều code
  • Dễ dàng chỉnh sửa, mở rộng, và tái triển khai

Nếu bạn chưa từng dùng AppGini, đây là video rất nên xem để hiểu tổng quan và bắt đầu tạo ứng dụng đầu tiên của mình.

Liên hệ nếu bạn cần hỗ trợ triển khai hoặc mua bản quyền AppGini tại Việt Nam: support@appgini.vn

– Ban Quản Trị Diễn đàn AppGini Việt Nam
#8
Thông báo – Hướng dẫn diễn đàn / Hướng dẫn các chuyên mục trên ...
Bài viết cuối cùng bởi admin - T06 06, 2025, 10:12 CHIỀU
HƯỚNG DẪN SỬ DỤNG CÁC CHUYÊN MỤC TRÊN DIỄN ĐÀN APPGINI VIỆT NAM

Kính chào Quý thành viên,

Để hỗ trợ việc tìm kiếm, đăng bài và trao đổi thuận tiện hơn, diễn đàn AppGini Việt Nam được tổ chức thành các chuyên mục (category)box nội dung (board) theo từng chủ đề cụ thể. Dưới đây là hướng dẫn sử dụng và định hướng nội dung cho từng chuyên mục chính.

1. Khu vực chung

• Thông báo – Hướng dẫn diễn đàn: 
Nơi Ban Quản Trị cập nhật thông báo mới nhất, nội quy, hướng dẫn sử dụng diễn đàn. Thành viên mới nên đọc kỹ các bài viết tại đây trước khi tham gia thảo luận.

• Giới thiệu AppGini – Hỏi đáp tổng quan: 
Chia sẻ tổng quan về AppGini, các câu hỏi cơ bản, so sánh với các công cụ khác, giới thiệu về cộng đồng AppGini tại Việt Nam.


2. Dành cho người mới bắt đầu

• Cài đặt và khởi tạo dự án AppGini: 
Hướng dẫn tải phần mềm, cài đặt, tạo database, deploy ứng dụng lần đầu.

• Làm quen với cấu trúc AppGini: 
Giới thiệu các file hệ thống AppGini sinh ra, vai trò của từng file, hướng dẫn đọc và chỉnh sửa.

• Hướng dẫn cơ bản bằng tiếng Việt: 
Video, tài liệu, bài viết tiếng Việt dành cho người chưa biết code hoặc mới tiếp cận lập trình.


3. Thảo luận kỹ thuật

• Hooks – Tùy biến logic nghiệp vụ: 
Trao đổi về các hook trong AppGini như _init, _before_insert, _after_update, chia sẻ các đoạn mã mẫu.

• Template – Giao diện & bố cục: 
Thảo luận về chỉnh sửa HTML, CSS, template AppGini, cải thiện UI/UX và responsive layout.

• AJAX – API – Kết nối nâng cao: 
Hỏi – đáp về việc sử dụng AJAX, custom page, gọi API ngoài, JSON, async/await,...

• Tối ưu hiệu năng & bảo mật: 
Kinh nghiệm tối ưu truy vấn SQL, xử lý dữ liệu lớn, kiểm soát quyền truy cập và bảo mật ứng dụng.


4. Tích hợp & Mở rộng

• Kết nối AppGini với hệ thống khác: 
Tích hợp với Odoo, Google Sheets, Email, Zalo, hệ thống ERP/CRM khác.

• Tạo trang riêng & báo cáo tùy chỉnh: 
Tạo file PHP riêng, viết custom SQL, xuất PDF, xây dựng dashboard hoặc biểu đồ.


5. Ứng dụng mẫu & Tài nguyên

• Showcase ứng dụng thực tế: 
Chia sẻ project đã triển khai thành công bằng AppGini, kèm hình ảnh, demo và phân tích nghiệp vụ.

• Kho template mẫu & snippets code: 
Giao diện dựng sẵn, các đoạn mã JS, PHP hữu ích khi lập trình AppGini.

• Tài liệu học lập trình – AppGini: 
Tài nguyên học PHP, SQL, cấu trúc dữ liệu, giúp củng cố kiến thức nền cho việc sử dụng AppGini hiệu quả.


6. Cộng đồng & Cơ hội

• Việc làm & hợp tác freelance: 
Tuyển dụng, tìm đối tác làm dự án AppGini, chia sẻ cơ hội nghề nghiệp.

• Khu vực Affiliate – Mua bản quyền: 
Hướng dẫn mua bản quyền AppGini chính hãng, chương trình giảm giá và hỗ trợ cộng đồng.

• Khu vực tiếng Anh – English Corner: 
Thảo luận kỹ thuật hoặc giao tiếp bằng tiếng Anh chuyên ngành lập trình.


7. Café Dev – Góc thư giãn

• Chuyện nghề & phát triển bản thân: 
Chia sẻ trải nghiệm nghề nghiệp, học tập, kỹ năng mềm và định hướng phát triển lâu dài.

• Góp ý & phản hồi về diễn đàn: 
Góp ý cách vận hành, bố cục diễn đàn, báo lỗi kỹ thuật hoặc đề xuất chuyên mục mới.


8. Thư viện tải về

• Phiên bản AppGini & Công cụ hỗ trợ: 
Link tải AppGini, các tiện ích hỗ trợ phát triển, script kiểm tra lỗi,...

• Video & Slide đào tạo: 
Tổng hợp video hướng dẫn, slide bài giảng, tài liệu đào tạo AppGini tiếng Việt.


Mọi câu hỏi chưa rõ về việc chọn chuyên mục phù hợp, Quý thành viên vui lòng đăng tại Góp ý & phản hồi hoặc liên hệ email support@appgini.vn để được hỗ trợ.

Trân trọng, 
Ban Quản Trị Diễn đàn AppGini Việt Nam
#9
Thông báo – Hướng dẫn diễn đàn / Nội quy diễn đàn AppGini Việt ...
Bài viết cuối cùng bởi admin - T06 06, 2025, 10:04 CHIỀU
NỘI QUY DIỄN ĐÀN APPGINI VIỆT NAM

Áp dụng từ ngày 01/07/2025

Diễn đàn AppGini Việt Nam (appgini.vn) là không gian cộng đồng để trao đổi, học hỏi và phát triển các ứng dụng web sử dụng công cụ AppGini. Để đảm bảo môi trường sinh hoạt tích cực, văn minh và chuyên môn, tất cả thành viên tham gia diễn đàn cần tuân thủ các quy định sau:


I. QUY ĐỊNH CHUNG

1. Tôn trọng lẫn nhau. Không sử dụng ngôn từ xúc phạm, khiêu khích, mỉa mai hoặc gây mất đoàn kết trong cộng đồng.

2. Không đăng tải nội dung vi phạm pháp luật Việt Nam hoặc trái với thuần phong mỹ tục. Bao gồm nhưng không giới hạn: chính trị, tôn giáo, bạo lực, đồi trụy, phát ngôn thù hận.

3. Không spam hoặc quảng cáo trái phép. Bao gồm các bài viết, chữ ký, tin nhắn riêng có nội dung quảng cáo không liên quan đến AppGini hoặc chưa được Ban Quản Trị chấp thuận.

4. Không đăng thông tin sai lệch hoặc gây hiểu nhầm. Khi chia sẻ kiến thức kỹ thuật cần ghi rõ nguồn hoặc nêu rõ đó là quan điểm cá nhân.

5. Không chia sẻ phần mềm vi phạm bản quyền hoặc nội dung crack, bẻ khóa. Diễn đàn chỉ hỗ trợ sử dụng phần mềm AppGini chính hãng hoặc bản trial từ nhà phát triển BigProf.


II. QUY ĐỊNH KHI THAM GIA THẢO LUẬN

1. Tiêu đề bài viết rõ ràng, đúng trọng tâm. Không đặt tiêu đề mơ hồ như "Help", "Gấp lắm rồi", "Lỗi nè",...

2. Nội dung bài viết cần trình bày cụ thể, có ngữ cảnh rõ ràng, nêu rõ vấn đề, mã nguồn liên quan (nếu có).

3. Tìm kiếm trước khi đăng bài mới. Đảm bảo câu hỏi chưa được trả lời hoặc giải đáp ở bài viết khác.

4. Chọn đúng chuyên mục và gắn tag phù hợp. Nhằm giúp quản lý và tìm kiếm dễ dàng hơn cho cả cộng đồng.

5. Không "đào mộ" các bài viết cũ nếu không có giá trị bổ sung. Khi cần, hãy tạo chủ đề mới và dẫn lại link cũ nếu cần tham chiếu.


III. QUY ĐỊNH VỀ THÔNG TIN CÁ NHÂN

1. Không sử dụng tên tài khoản phản cảm hoặc gây hiểu nhầm. Các tài khoản vi phạm có thể bị khóa mà không cần báo trước.

2. Không chia sẻ thông tin cá nhân của người khác khi chưa được sự đồng ý.

3. Tôn trọng quyền riêng tư của thành viên khác. Không khai thác, lưu trữ hoặc sử dụng thông tin của người dùng trái phép.


IV. CHẾ TÀI XỬ LÝ VI PHẠM

1. Tùy theo mức độ vi phạm, thành viên có thể bị:
  • Nhắc nhở công khai hoặc qua tin nhắn riêng
  • Tạm khóa tài khoản từ 1–7 ngày
  • Khóa vĩnh viễn tài khoản và cấm truy cập IP

2. Ban Quản Trị có toàn quyền xử lý mà không cần thông báo trước trong các trường hợp vi phạm nghiêm trọng hoặc tái phạm nhiều lần.


V. KHEN THƯỞNG – ĐÓNG GÓP

1. Diễn đàn luôn hoan nghênh các thành viên:
  • Chia sẻ bài viết chất lượng, hướng dẫn chi tiết
  • Đóng góp tài nguyên, ứng dụng mẫu hoặc công cụ hữu ích
  • Giúp đỡ người dùng mới một cách tận tâm

2. Các thành viên tích cực sẽ được gắn huy hiệu, tăng quyền truy cập, và có thể được mời tham gia ban điều hành nếu phù hợp.


Mọi thắc mắc hoặc góp ý về nội quy, vui lòng liên hệ Ban Quản Trị qua chuyên mục Góp ý & Phản hồi hoặc email: support@appgini.vn

Ban Quản Trị Diễn đàn AppGini Việt Nam
#10
Thông báo – Hướng dẫn diễn đàn / Lời chào mừng từ Ban Quản Trị ...
Bài viết cuối cùng bởi admin - T06 06, 2025, 09:57 CHIỀU
Lời chào mừng từ Ban Quản Trị Diễn đàn AppGini Việt Nam

Kính gửi Quý thành viên,

Chào mừng Quý vị đến với diễn đàn AppGini Việt Nam (appgini.vn) – nền tảng cộng đồng dành cho những người quan tâm và đang sử dụng AppGini để phát triển ứng dụng quản lý cho cá nhân, tổ chức và doanh nghiệp tại Việt Nam.

Diễn đàn được thành lập với các mục tiêu trọng tâm như sau:

  • Lan tỏa việc sử dụng AppGini – một công cụ phát triển ứng dụng web mạnh mẽ, dễ sử dụng và tiết kiệm thời gian.
  • Xây dựng một cộng đồng người dùng AppGini tại Việt Nam nhằm chia sẻ kinh nghiệm, hỗ trợ kỹ thuật và phát triển kỹ năng lập trình.
  • Cung cấp tài nguyên học tập, ứng dụng mẫu, và hướng dẫn chuyên sâu để người dùng từ cơ bản đến nâng cao có thể tiếp cận và triển khai hiệu quả.
  • Thúc đẩy việc sử dụng bản quyền AppGini chính hãng, đồng thời hỗ trợ cộng đồng thông qua chương trình hợp tác và khuyến mại riêng cho thị trường Việt Nam.


Hướng dẫn sử dụng diễn đàn hiệu quả

1. Đọc kỹ nội quy và hướng dẫn chuyên mục trước khi tham gia thảo luận. 
Việc tuân thủ giúp tạo ra một môi trường học tập và trao đổi văn minh, hiệu quả. 
Xem tại: Nội quy diễn đànHướng dẫn chuyên mục.

2. Sử dụng chức năng tìm kiếm trước khi đặt câu hỏi mới. 
Diễn đàn đã có nhiều nội dung được giải đáp. Việc tìm kiếm giúp tiết kiệm thời gian và tránh trùng lặp thông tin.

3. Đặt tiêu đề bài viết rõ ràng, nội dung cụ thể, có ví dụ minh họa nếu có thể. 
Ví dụ nên viết: Lỗi undefined variable trong hook _before_insert() thay vì Giúp với lỗi này.

4. Gắn thẻ phân loại chủ đề khi đăng bài. 
Ví dụ: hooks, template, ajax, báo lỗi, ứng dụng mẫu, người mới,... 
Việc này giúp phân loại và tìm kiếm dễ dàng hơn.


Một số liên kết tham khảo quan trọng



Cam kết của Ban Quản Trị

Chúng tôi cam kết duy trì diễn đàn như một không gian trao đổi chuyên môn, thực tế, tích cực và không quảng cáo tràn lan.

Mọi thắc mắc, phản hồi hoặc đề xuất, Quý thành viên vui lòng gửi tại chuyên mục Góp ý & Phản hồi hoặc liên hệ trực tiếp qua email: support@appgini.vn

Trân trọng cảm ơn và hân hạnh được đồng hành cùng Quý vị trong hành trình phát triển ứng dụng AppGini tại Việt Nam.

Ban Quản Trị Diễn đàn AppGini Việt Nam