intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Tài liệu tự học: PHP & MySQL căn bản

Chia sẻ: Trinh Tam | Ngày: | Loại File: PDF | Số trang:112

177
lượt xem
52
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Tài liệu tự học: PHP & MySQL căn bản là tài liệu tương đối đầy đủ giúp cho các bạn mới tiếp xúc hoặc cần tìm tài liệu có thể dễ dàng tiếp cận với ngôn ngữ lập trình này. Tài liệu gồm có 4 chương chính. Mời các bạn cùng tìm hiểu và tham khảo nội dung thông tin tài liệu.

Chủ đề:
Lưu

Nội dung Text: Tài liệu tự học: PHP & MySQL căn bản

  1. Biên soạn: Trịnh Thanh Tâm Email: contact.tamsoft@gmail.com Facebook: https://www.facebook.com/tam.trinh.779857
  2. Lời nói đầu - Đây là tài liệu học PHP và MySQL căn bản tương đối đầy đủ và chi tiết. Giúp các bạn mới tiếp xúc hoặc cần tìm tài liệu học có thể dễ dàng tiếp cận với ngôn ngữ lập trình này. Nội dung gồm 4 chương chính – 105 trang sắp xếp từ căn bản đến cao nhất. - Trong quá trình học nếu có thắc mắc hoặc cần hướng dẫn trực tiếp vui lòng liên hệ email hoặc facebook cá nhân. Email: contact.tamsoft@gmail.com Facebook: https://www.facebook.com/tam.trinh.779857
  3. Mục Lục Chương 1. Các công cụ hỗ trợ lập trình ......................................................................1 1.1 Download, Cài Đặt, Quản Lý Xampp. Môi Trường Localhost .......................... 1 1.1.1 Localhost là gì? ......................................................................................... 1 1.1.2 Localhost vận hành như thế nào? ............................................................. 1 1.1.3 Lưu ý trước khi cài đặt ..............................................................................1 1.1.4 Hướng dẫn cài đặt Localhost ....................................................................2 1.1.5 Thao tác trên localhost ..............................................................................7 1.1.6 Cách đổi cổng mạng cho Localhost .......................................................... 9 1.2 Sublime Text 3 – công cụ lập trình tuyệt vời.................................................... 11 1.2.1 Cài đặt .....................................................................................................11 1.2.2 Quản lý Project ....................................................................................... 11 1.2.3 Thay đổi màu sắc highlight .....................................................................11 1.2.4 Các plugin ............................................................................................... 11 1.2.5 Một số plugin thông dụng .......................................................................13 Chương 2. Các thành phần cơ bản trong php ........................................................... 14 2.1 Căn Bản Về PHP ............................................................................................... 14 2.1.1 Cấu trúc cơ bản: ...................................................................................... 14 2.1.2 Xuất giá trị ra trình duyệt:.......................................................................14 2.2 Biến, Hằng, Các biến toàn cục - superglobal trong php ...................................16 2.2.1 Biến trong PHP. ...................................................................................... 16 2.2.2 Khái niệm về hằng trong PHP ................................................................ 16 2.2.3 Các biến toàn cục - superglobal trong php .............................................17 2.3 Các Kiểu Dữ Liệu ............................................................................................. 26 2.4 Một Số Hàm Xử Lý Kiểu Số ............................................................................27 2.4.1 Khái niệm Kiểu số ..................................................................................27 2.4.2 Một số hàm xử lý số thường dùng .......................................................... 27
  4. 2.5 Chuỗi và Một Số Hàm Xử Lý Kiểu Chuỗi ....................................................... 31 2.5.1 Khái niệm về chuỗi: ................................................................................31 2.5.2 Quy tắc trong chuỗi: ...............................................................................31 2.5.3 Một số hàm xử lý chuỗi thường dùng ..................................................... 32 2.6 Mảng, Các Hàm Xử Lý Trong Mảng................................................................ 36 2.6.1 Định nghĩa mảng trong PHP: ..................................................................36 2.6.2 Khái niệm mảng kết hợp trong PHP ....................................................... 36 2.6.3 Phép lặp trong mảng: ..............................................................................36 2.6.4 Một số hàm hỗ trợ Mảng trong PHP....................................................... 37 2.7 Một Số Hàm Xử Lý File Trong PHP ................................................................ 39 2.7.1 Mở file.....................................................................................................39 2.7.2 Ghi file ....................................................................................................40 2.7.3 Đọc file....................................................................................................40 2.7.4 Đóng File ................................................................................................ 41 2.7.5 Các hàm xử lý file khác ..........................................................................42 2.8 Toán Tử và Biểu Thức Trong PHP ...................................................................44 2.8.1 Biểu thức là gì? ....................................................................................... 44 2.8.2 Toán tử gán (Assignment Operator) ....................................................... 44 2.8.3 Biểu thức số học...................................................................................... 44 2.8.4 Toán tử quan hệ ...................................................................................... 44 2.8.5 Toán tử luận lý ........................................................................................ 45 2.8.6 Độ ưu tiên toán tử luận lý .......................................................................45 2.8.7 Độ ưu tiên các toán tử .............................................................................46 2.9 Regular Expression Và Các Quy Tắc ............................................................... 47 2.9.1 Regular Expression là gì? .......................................................................47 2.9.2 Các quy tắc Regular Expression căn bản ................................................47 2.9.3 None Capturing Group Regular Expression ...........................................57
  5. 2.10 Hàm Isset() và Empty() Trong PHP .............................................................. 59 2.10.1 Hàm isset trong PHP ...............................................................................59 2.10.2 Vậy khi nào thì sử dụng hàm isset()? ..................................................... 59 2.10.3 Hàm empty() trong PHP .........................................................................60 2.10.4 Vậy khi nào nên sử dụng hàm empty()? .................................................61 2.11 CURL Trong PHP ......................................................................................... 62 2.11.1 Viết chương trình PHP CURL đầu tiên ..................................................62 2.11.2 Hàm curl_setopt trong CURL PHP ........................................................ 63 2.11.3 Danh sách các thông số cấu hình của hàm curl_setopt PHP ..................63 Chương 3. Cấu trúc điều khiển trong php.................................................................65 3.1 Lệnh Điều Kiện If, Else .................................................................................... 65 3.1.1 Câu lệnh điều kiện là gì ?........................................................................65 3.1.2 Câu lệnh điều kiện if ...............................................................................65 3.1.3 Câu lệnh If else trong php .......................................................................66 3.1.4 Kết hợp nhiều câu lệnh if else trong php ................................................68 3.1.5 Câu lệnh if else lồng nhau.......................................................................69 3.2 Lệnh Rẽ Nhánh Switch, Case ...........................................................................71 3.2.1 Câu lệnh switch trong PHP .....................................................................71 3.2.2 Switch và if ............................................................................................. 73 3.2.3 Switch lồng nhau .................................................................................... 73 3.4 Vòng lặp for trong php ...................................................................................... 75 3.4.1 Vòng lặp for ............................................................................................ 75 3.4.2 Vòng lặp for lồng nhau ...........................................................................76 3.4.3 Vòng lặp for kết hợp với mảng ............................................................... 77 3.5 Vòng Lặp While Và Do While .........................................................................79 3.5.1 Cấu trúc vòng lặp while ..........................................................................79 3.5.2 Cấu trúc vòng lặp do while .....................................................................81
  6. 3.5.3 Một bài toán có thể giải ở cả ba vòng lặp không? ..................................82 3.5.4 Khi nào thì sử dụng vòng lặp for, while, do while? ............................... 82 3.5.5 Vòng lặp while, do while lồng nhau ....................................................... 83 3.5.6 Vòng lặp while, do while trong việc truy xuất mảng ............................. 83 3.6 Break, Continue, Goto, Die, Exit ......................................................................85 3.6.1 Câu lệnh break ........................................................................................ 85 3.6.2 Câu lệnh continue ...................................................................................85 3.6.3 Câu lệnh goto .......................................................................................... 86 3.6.4 Lệnh die và exit....................................................................................... 86 3.7 Hàm PHP. Cách Khai Báo Và Sử Dụng Hàm ..................................................87 3.7.1 Hàm là gì? ............................................................................................... 87 3.7.2 Cách sử dụng hàm trong PHP .................................................................87 3.7.3 Cấu trúc của một hàm Trong PHP .......................................................... 87 3.7.4 Biến toàn cục và biến cục bộ ..................................................................90 3.7.5 Biến tĩnh ..................................................................................................91 3.7.6 Các cách gọi hàm trong PHP ..................................................................92 3.7.7 Các quy tắc và phạm vi của hàm ............................................................ 93 3.8 Giải Thuật Đệ Quy ............................................................................................ 95 3.8.1 Giải thuật đệ quy là gì ? ..........................................................................95 3.8.2 Đệ quy tuyến tính .................................................................................... 95 3.8.3 Đệ quy nhị phân ...................................................................................... 96 3.8.4 Đệ quy phi tuyến ..................................................................................... 97 3.8.5 Đệ quy hổ tương ..................................................................................... 98 3.8.6 Khử đệ quy .............................................................................................. 99 Chương 4. Cơ sở dữ liệu – MySQL ........................................................................100 4.1 Giới thiệu về MySQL ..................................................................................... 100 4.1.1 Những định nghĩa cơ bản ......................................................................100
  7. 4.1.2 Những cú pháp cơ bản ..........................................................................101 4.2 Mối liên hệ giữa PHP và MySQL ...................................................................104 4.3 Các hàm cơ bản sử dụng MySQL trong PHP .................................................105 4.3.1 Kết nối cơ sở dữ liệu: ............................................................................105 4.3.2 Lựa chọn cơ sở dữ liệu: ........................................................................105 4.3.3 Thực thi câu lệnh truy vấn: ...................................................................105 4.3.4 Đếm số dòng dữ liệu trong bảng:.......................................................... 105 4.3.5 Lấy dữ liệu từ bảng đưa vào mảng: ...................................................... 105 4.3.6 Lấy dữ liệu từ bảng đưa vào biến: ........................................................ 105 4.3.7 Đóng kết nối cơ sở dữ liệu: ...................................................................105
  8. Khóa lập trình PHP Onlile Chương 1. Các công cụ hỗ trợ lập trình 1.1 Download, Cài Đặt, Quản Lý Xampp. Môi Trường Localhost 1.1.1 Localhost là gì? - Localhost là từ ghép của hai chữ “local” và “host“. Local dịch theo nghĩa IT là máy tính của bạn, Host theo nghĩa IT là máy chủ. Vậy localhost nghĩa là một máy chủ được vận hành trên máy tính của bạn. - Localhost bao gồm nhiều ứng dụng đi kèm với nhau và tất cả các ứng dụng đó sẽ kết hợp với nhau để tạo ra một môi trường có thể chạy mã nguồn WordPress trên máy tính của chính bạn bao gồm: - Phần mềm Webserver tên Apache, đây là webserver thông dụng nhất. - Phần mềm PHP để xử lý mã PHP vì WordPress viết bằng ngôn ngữ PHP. - Phần mềm MySQL Server để lưu trữ và xử lý cơ sở dữ liệu, do WordPress sử dụng MySQL làm nền tảng cơ sở dữ liệu. Cơ sở dữ liệu thường được mình viết theo chữ tiếng Anh là database. - Phần mềm PHPMyAdmin để xem và quản lý cơ sở dữ liệu MySQL. - Như vậy, đối chiếu với yêu cầu cơ bản của một website WordPress thì localhost đã hoàn toàn đáp ứng được. 1.1.2 Localhost vận hành như thế nào? - Khi cài đặt Localhost vào máy tính rồi, thì máy tính của bạn đã có một phần mềm Webserver để chạy ứng dụng website với địa chỉ là http://127.0.0.1. Đây là địa chỉ IP dạng localhost, ngoài ra bạn cũng có thể chạy localhost với đường dẫn là http://localhost. - Thông thường khi cài localhost, mỗi khi cần sử dụng bạn sẽ cần mở bảng điều khiển của localhost lên và kích hoạt cho nó khởi động các ứng dụng đi kèm. 1.1.3 Lưu ý trước khi cài đặt - Xoá toàn bộ ứng dụng liên quan tới localhost: Nếu bạn có cài đặt các phần mềm liên quan đến việc làm localhost như PHP, MySQL thì hãy xoá hết. Và bạn không nên cài XAMPP trên Windows Server đã cài đặt IIS. - Lưu ý nếu bạn dùng Skype: Nếu máy bạn đang cài đặt phần mềm Skype thì localhost sẽ không hoạt động được do Skype đã chiếm quyền sử dụng cổng mạng 80, đây là cổng mặc định của webserver. Do đó, bạn hãy mở Skype -> Tools -> Connection Options - HD: Trịnh Thanh Tâm Email: contact.tamsoft@gmail.com Page 1
  9. Khóa lập trình PHP Onlile > và bỏ chọn phần “Use port 80 and 443…..” rồi nhập một cổng bất kỳ để Skype sử dụng. Sửa xong, hãy khởi động lại máy để hoàn tất. - Tắt tường lửa: Nếu máy bạn có cài đặt tường lửa từ Windows hay từ một phần mềm Antivirus nào khác thì hãy tắt nó đi vì có thể nó sẽ chặn cổng 80 hoặc các ứng dụng webserver. - Tắt UAC trên Windows: Nếu máy của bạn đang dùng Windows và có bật chức năng User Account Control thì hãy tắt nó đi khi dùng localhost để tránh các vấn đề bị giới hạn quyền. 1.1.4 Hướng dẫn cài đặt Localhost - Để cài Localhost chúng ta có rất nhiều cách và phần mềm, tuy nhiên nếu bạn là người mới thì mình khuyến khích các bạn dùng phần mềm XAMPP để cài localhost vì: + XAMPP hoàn toàn miễn phí. + Dễ sử dụng. + Hỗ trợ các hệ điều hành thông dụng như Windows, Mac, Linux. Tuy nhiên trong bài này mình chỉ hướng dẫn cho hệ điều hành Windows. - Để tải XAMPP, đầu tiên bạn truy cập vào địa chỉ: HD: Trịnh Thanh Tâm Email: contact.tamsoft@gmail.com Page 2
  10. Khóa lập trình PHP Onlile https://www.apachefriends.org/download.html và chọn phiên bản XAMPP phù hợp với hệ điều hành của máy tính bạn đang sử dụng, và bạn nên chọn phiên bản PHP 5.4.31. Lưu ý là XAMPP chỉ có phiên bản cho hệ điều hành 32bit nhưng 64bit vẫn hoạt động bình thường. * Lưu ý: Hiện nay XAMPP đã ra bản mới hơn hỗ trợ MariaDB nhưng bị lỗi rất nhiều, bạn nên dùng phiên bản XAMPP 1.8.3 có thể tải tại đây. Nếu bạn dùng Mac thì tải tại đây. - Sau khi tải file cài đặt về xong, hãy chạy nó, sau đó chọn Next. - Ở phần chọn đường dẫn, bạn hãy chọn đường dẫn cần lưu cài đặt của XAMPP. Lưu ý rằng đường dẫn này bạn phải nhớ vì khi cài đặt web lên localhost, bạn phải truy cập vào thư mục này. Bạn nên để mặc định là C:\xampp. Tiếp tục ấn Next. HD: Trịnh Thanh Tâm Email: contact.tamsoft@gmail.com Page 3
  11. Khóa lập trình PHP Onlile - Ở trang kế tiếp, bạn bỏ chọn phần “Learn more about Bitnami for XAMPP“. Và ấn Next 2 lần nữa để bắt đầu quá trình cài đặt XAMPP. HD: Trịnh Thanh Tâm Email: contact.tamsoft@gmail.com Page 4
  12. Khóa lập trình PHP Onlile - Sau khi cài xong, ấn nút Finish để kết thúc cài đặt và mở bảng điều khiển của XAMPP. Tuy nhiên, hãy khởi động lại máy sau khi cài đặt xong để tránh tình trạng không khởi động được localhost. - Khởi động Localhost - Bây giờ bạn hãy vào thư mục C:\xampp và mở file xampp-panel.exe lên để bật bảng điều khiển của XAMPP. Bảng điều khiển của XAMPP - Bạn để ý sẽ thấy hai ứng dụng Apache và MySQL có nút Start, đó là dấu hiệu bảo 2 ứng dụng này chưa được khởi động, hãy ấn vào nút Start của từng ứng dụng để khởi động Webserver Apache và MySQL Server lên thì mới chạy được localhost. HD: Trịnh Thanh Tâm Email: contact.tamsoft@gmail.com Page 5
  13. Khóa lập trình PHP Onlile Nếu cả hai ứng dụng chuyển sang màu xanh như hình dưới là đã khởi động thành công. - Sau khi khởi động xong, bạn hãy truy cập vào website với địa chỉ là http://localhost sẽ thấy nó hiển thị ra trang giới thiệu XAMPP như hình dưới. - Bạn có thể ấn vào nút English phía bên dưới để truy cập vào trang quản lý localhost. HD: Trịnh Thanh Tâm Email: contact.tamsoft@gmail.com Page 6
  14. Khóa lập trình PHP Onlile 1.1.5 Thao tác trên localhost 1.1.5.1 - Làm việc với thư mục và tập tin + Vùng làm việc của mình sẽ nằm ở C:\xampp\htdocs .Đây sẽ là nơi lưu trữ code + Bây giờ bạn thử copy một tập tin nào đó vào trong thư mục C:\xampp\htdocs rồi chạy tên miền http://localhost, bạn sẽ thấy nó liệt kê file mà bạn vừa copy vào. + Nếu bạn click vào file ảnh đó thì trình duyệt sẽ hiển thị ảnh với đường dẫn là http://localhost/tên-tập-tin. Đây được xem là một link ảnh trong website của bạn. + Tương tự, hãy thử tạo một thư mục bất kỳ rồi copy một tập tin nào đó vào, thì bây giờ bạn có thể truy cập xem ảnh với đường dẫn là http://localhost/tên-folder/tên-tập- tin. Như vậy bạn có thể hiểu, cái đường dẫn trên website nó sẽ phân thứ cấp tùy theo cấu trúc thư mục và file trong đó. 1.1.5.2 Tạo cơ sở dữ liệu MySQL (Database) - Khi nhắc đến database, bạn phải nhớ là nó bao gồm các thành phần chính là: + Tên user của database. + Mật khẩu của user database. + Tên database. + Database Host (thường thì điền là localhost, bất kể là bạn dùng ở localhost hay host bình thường). HD: Trịnh Thanh Tâm Email: contact.tamsoft@gmail.com Page 7
  15. Khóa lập trình PHP Onlile - Bạn hãy tưởng tượng rằng, user của database sẽ có nhiệm vụ đọc và ghi dữ liệu vào database nên khi sử dụng các mã nguồn PHP, bạn phải khai báo cùng lúc cả user của database và tên database. - Đối với localhost, bạn không cần tạo user cho database mà sẽ sử dụng thông tin user như sau: + Tên user database: root + Mật khẩu: bỏ trống Do vậy, chúng ta chỉ cần tạo database là đủ. - Để tạo database, bạn hãy truy cập vào localhost với đường dẫn http://localhost/phpmyadmin. Sau đó bạn nhấp vào menu Databases. - Sau đó ở phần Create databsae, bạn nhập tên database cần tạo vào ô Database name, phần Collation bạn hãy chọn là utf8_unicode_ci như hình dưới rồi ấn nút Create kế bên. HD: Trịnh Thanh Tâm Email: contact.tamsoft@gmail.com Page 8
  16. Khóa lập trình PHP Onlile - Tạo xong hãy nhìn bên menu tay trái, nếu nó xuất hiện tên database vừa tạo là thành công. Vậy bây giờ, chúng ta tạm có một databse với các thông tin như: + Database Host: localhost + Database user: root + Database password: trống + Database name: thachphamblog Tới đây bạn đã có một cái localhost sử dụng địa chỉ dạng http://localhost/ hoặc http://127.0.0.1/ rồi. 1.1.6 Cách đổi cổng mạng cho Localhost - Mặc định Localhost sẽ sử dụng cổng 80, bởi vì khi bạn gõ tên miền như http://localhost thì tức là nó đã sử dụng cổng 80 để đọc các dữ liệu web trong localhost. Tuy nhiên nếu như bạn đã dùng cổng 80 cho một ứng dụng khác, hoặc đơn giản là không khởi động Apache được thì bạn nên thiết lập cho Apache trong Localhost sử dụng một cổng khác, như 8080 chẳng hạn. Trước khi đổi, mình cần các bạn lưu ý là sau khi đổi xong thì bạn phải truy cập vào website với tên miền http://localhost:8080 thay vì chỉ là http://localhost. Để đổi cổng, bạn mở bảng điều khiển XAMPP lên và chọn nút Config của Apache, sau đó chọn Apache (httpd.conf). HD: Trịnh Thanh Tâm Email: contact.tamsoft@gmail.com Page 9
  17. Khóa lập trình PHP Onlile - Sau đó bạn tìm dòng “Listen 80” đổi thành “Listen 8080” - Sau đó bạn Stop cái Apache và Start lại rồi thử truy cập vào localhost theo đường dẫn http://localhost:8080, nếu truy cập được thì bạn đã làm thành công. Và cũng nên lưu ý rằng, sau khi đổi cổng thì mỗi khi truy cập bạn phải sử dụng đường dẫn có kèm theo số cổng bạn vừa đổi sang vì mặc định nếu không điền thì nó sẽ sử dụng cổng 80. HD: Trịnh Thanh Tâm Email: contact.tamsoft@gmail.com Page 10
  18. Khóa lập trình PHP Onlile 1.2 Sublime Text 3 – công cụ lập trình tuyệt vời - Sublime text là một editor khá mới, nhưng theo đánh giá của mình thì nó khá mạnh với nhiều plugin hữu ích, có thể cài đặt 1 cách dễ dàng trực tiếp. Cung cấp một hiệu suất làm việc với các tính năng rất tuyệt vời. Trong bài hôm này, mình sẽ giới thiệu với các bạn về cách sử dụng cơ bản và chuyên sâu về sublime text 3. 1.2.1 Cài đặt - Bản mới nhất của Sublime text tại thời điểm bài viết là bản 3 - Có các phiên bản cho Window, Ubuntu, OSX 1.2.2 Quản lý Project - Chức năng Project cho phép chúng ta quản lý dự án 1 cách dễ dàng hơn. - Thêm 1 project mới vào Sublime text bằng cách vào menu Project > Add folder to project - Sau khi thêm, danh sách các file trong dự án sẽ được liệt kê ở cột bên trái, cho phép chúng ta chọn nhanh các file. 1.2.3 Thay đổi màu sắc highlight - Highlight code cho ta cái nhìn trực quan và dễ nhìn hơn. Sublime text có rất nhiều color scheme. Bạn có thể thay đổi tùy thích trong Preferences > Color Scheme 1.2.4 Các plugin - Sublime có rất nhiều plugin, có thể cài đặt trực tiếp mà không cần lên Web tải về để cài đặt. HD: Trịnh Thanh Tâm Email: contact.tamsoft@gmail.com Page 11
  19. Khóa lập trình PHP Onlile - Cách làm như sau: Các bạn nhấn tổ hợp phím Ctrl + ` sau đó paste đoạn code sau và nhấn Enter: import urllib.request,os,hashlib; h = '7183a2d3e96f11eeadd761d777e62404' + 'e330c659d4bb41d3bdf022e94cab3cd0'; pf = 'Package Control.sublime-package'; ipp = sublime.installed_packages_path(); urllib.request.install_opener( urllib.request.build_opener( urllib.request.ProxyHandler()) ); by = urllib.request.urlopen( 'http://sublime.wbond.net/' + pf.replace(' ', '%20')).read(); dh = hashlib.sha256(by).hexdigest(); print('Error validating download (got %s instead of %s), please try manual install' % (dh, h)) if dh != h else open(os.path.join( ipp, pf), 'wb' ).write(by) - Đây là plugin package control, bây giờ bạn đã có thể cài trực tiếp plugin thông qua tổ hợp phím Ctrl + Shift + p , sau đó nhấn Install, nhấn Enter và tìm plugin thích hợp. Mọi công việc cài đặt sẽ được tự động. HD: Trịnh Thanh Tâm Email: contact.tamsoft@gmail.com Page 12
  20. Khóa lập trình PHP Onlile - Chọn plugin để cài: 1.2.5 Một số plugin thông dụng - Sublime Prefixr (Ctrl+Alt+X) - Sublime Alignment (Ctrl+Alt+A) - Jquery - Jquery snippets - Nettuts Fetch - Sublime CodeIntel - Tag - Prefixr - Google search - WordPress - HTML5 - Indent Guides. HD: Trịnh Thanh Tâm Email: contact.tamsoft@gmail.com Page 13
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2