Bài đăng

Dùng Ajax để phân trang trong Datatable

Hình ảnh
Datatables là plugin rất phổ biến cho những trang trang admin muốn quản lý dữ liệu. Ở bài hướng dẫn này mình sẽ bỏ qua phần giới thiệu về plugin này. Các bạn có thể vào trang chủ của nó để đọc nhé. Link: https://datatables.net/ Thường thường mình thấy các bạn dùng datatables thường get hết dữ liệu ra 1 lần rồi bỏ vào để nó tự phân trang. Cách làm này mới đầu thì nhìn có vẻ nhanh và tiện. Nhưng theo thời gian, dữ liệu của database nhiều lên. Mỗi lần bạn get all như vậy sẽ khiến trang web của mình rất chậm or có thể ko thể load trang vì dữ liệu quá lớn. Datatables có support lấy dữ liệu bằng ajax rất nhanh và tiện. Các bạn có thể xem ở đây: https://datatables.net/examples/data_sources/server_side.html Hoặc xem ở bài viết này của mình nhé. Ở đây mình dùng laravel 5 cùng vs jquery nhé. Về phần html thì mình sẽ không đưa vào đây vì nếu ai đã sử dụng datatable thì việc này quá dễ dàng rồi. chỉ cần đặt tên class or id rồi gọi từ js là xong. Mình tạo file example_datatables_with_ajax.j

Mã hóa dữ liệu trong Database

Đôi lúc vì một số lý do bảo mật mà bạn muốn các dữ liệu lưu trong database phải được mã hóa trước khi được lưu vào. Data Encryption and Decryption sử dụng AES (Advanced Encryption Standard) là phương thức phổ biến để thực hiện. Ở trong bài này, mình sẽ hướng dẫn cách sử dụng kĩ thuật này nhằm giúp cho database của bạn luôn luôn được mã hóa. Ví dụ: Tạo bảng user vs email và address sẽ luôn được mã hóa.  - Cấu trúc của table khi không được mã hóa: CREATE TABLE `user` ( `id` INT NOT NULL AUTO_INCREMENT , `email` VARCHAR(100) NOT NULL , `address` VARCHAR(100) NOT NULL , PRIMARY KEY (`id`) ENGINE = InnoDB DEFAULT CHARACTER SET = utf8 COLLATE = utf8_general_ci - Cấu trúc của table khi email và address được mã hóa CREATE TABLE `user` ( `id` INT NOT NULL AUTO_INCREMENT , `email` VARBINARY(116) NOT NULL , `address` VARBINARY(116) NOT NULL , PRIMARY KEY (`id`) ENGINE = InnoDB DEFAULT CHARACTER SET = utf8 COLLATE = utf8_general_ci Sự khá

Upload và remove hình ảnh trong laravel

Trong bài này mình sẽ hướng dẫn các bạn viết 1 class dùng để upload và remove hình ảnh trong laravel.  - Đầu tiên ta tạo class Gallery và tạo 2 biến dùng để khai báo đường dẫn và nơi lưu trữ file. class Gallery { private $uploadDir; private $uploadFolder;  - Tiếp theo tạo hàm khởi tạo để set giá trị cho 2 biến trên. Ở đây mình sẽ lưu trong folder uploads: public function __construct() { $this->uploadDir = public_path('uploads'); $this->uploadFolder = 'uploads/'; } - Tiếp theo mình sẽ viết 1 số hàm cần thiết trong việc upload và xóa file. // Lay filename cua file khong chua phan dinh dang file private function getFileNamewithoutExtension($originalFileName, $extensionFileName) { return substr($originalFileName, 0, strlen($originalFileName) - (strlen($extensionFileName) + 1)); } //Kiem tra file ton tai hay khong private function isExistedFile($originalFileName) { return

Cách để hình ảnh scale full màn hình bằng CSS

Hình ảnh
Làm cách nào để mọi trình duyệt và thiết bị với các tỷ lệ màn hình khác nhau. Bức ảnh luôn được phủ tràn màn hình. Ở đây mình sẽ sử dụng CSS để xử lý tình huống này. 1. Chưa xử lý CSS .menus #site-user-profile { background : url('../img/placeholders/menu/bg_user_profile.png'); } Ở đây mình đã khoanh tròn bức hình khi chưa xử lí, vì độ rộng của hình ảnh nhỏ hơn so với màn hình nên hình ảnh đã bị lặp lại theo mặc định của thuộc tính background-image trong CSS. 2. Đã xử lý CSS .menus #site-user-profile { background : url('../img/placeholders/menu/bg_user_profile.png') no-repeat center center; -webkit-background-size: cover; -moz-background-size: cover; -o-background-size: cover; background-size: cover; } Lúc này hình ảnh đã tự scale fullscreen.

Loại bỏ kí tự # trong AngularJS

Nếu bạn đã và đang lập trình với AngularJS. Chắc hẳn bạn sẽ thấy kí tự "#" trong toàn bộ các URL của mình. Mặc định trong AngularJS sẽ điều hướng các URL vs kí tự này. Ví dụ: http://localhost:8000/#/ http://localhost:8000/#/home http://localhost:8000/#/login Vô tình kí tự "#" làm cho các url của bạn ko được đẹp và nhìn cũng khá là "gai mắt". Sau đây mình sẽ hướng dẫn các bạn cách loại bỏ kí tự "#" trong AngularJS. Có 2 bước để thực hiện: 1. Cấu hình lại $locationProvider  Ở đây chúng ta sử dụng $locationProvider.html5Mode(true) sau khi đã định nghĩa  và cấu hình các routes xong. $routeProvider .when('/', { controller: 'HomeController', templateUrl: 'components/home/home.view.html', controllerAs: 'vm' }) .when('/login', { controller: 'AuthController', templateUrl: 'components/login/login.view.html', controllerAs: 'vm

Chuyển đổi HTML sang PDF sử dụng Javascript

Ngày này Javascript đang càng ngày càng phát triển rộng. Nó không còn đơn thuần chỉ dùng để làm những thứ cơ bản trên client-side. Mà giờ đây javascript còn có thể làm những thứ mà tưởng như chỉ có phía server-side (PHP, ASP.NET,..) mới làm được. Ở trong bài đăng này, mình sẽ hướng dẫn các bạn xuất 1 file từ định dạng HTML sang PDF. Ở đây mình sẽ dùng một số thư viện như: - Bootstrap ( https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css ) - Jquery ( https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js ) - https://github.com/MrRio/jsPDF ( Dùng để tạo ra file PDF) - https://github.com/niklasvh/html2canvas ( Chuyển đổi HTML sang dạng hình ảnh, sau đó encode nó về dạng base64 như 1 kiểu string rôì dùng jsPDF chuyển ra file pdf). FULL Code : https://jsfiddle.net/CuongNguyen/y7uj5ns1/3/ HTML Code <body> <div id='area-print' class='container'> <div id='back-label'> <div class='row

Lấy vị trí thông qua IP Address bằng PHP

PHP đã trang bị tính năng nhằm lấy được thông tin của người dùng như trình duyệt đăng sử dụng, IP Address, host name và 1 số đặc điểm khác. Để lấy được IP Address, PHP đã tạo ra biến REMOTE_ADDR. Có nhiều cách để lấy được IP Address. Sau đây là 1 số ví dụ: $ip = $_SERVER['REMOTE_ADDR']; Hoặc: $ip = $REMOTE_ADDR; Hoặc: $ip = $_SERVER['REMOTE_ADDR']; Hoặc: $ip = getenv('HTTP_CLIENT_IP'); Sau khi đã lấy được ip của người dùng. Ta sẽ sử dụng IP Geolocation API để lấy vị trí http://ip-api.com/json/<ip_address>. Ví dụ: $ip = 101.99.10.180 Truyền $ip vào api:  http://ip-api.com/json/101.99.10.180 Dữ liệu trả về dưới dạng JSON với đầy đủ thông tin và bạn có thể lấy những giá trị mình muốn: { "as":"AS45903 CMC Telecom Infrastructure Company", "city":"Hanoi", "country":"Vietnam", "countryCode":"VN", "isp":"CMC Tel