[BÀI 34] HƯỚNG DẪN VIẾT MỘT TRANG WEB CƠ BẢN (PHẦN 3: THỰC HIỆN CÁC CHỨC NĂNG USER)

Việc quản lý tài khoản là cực kỳ quan trọng, gần như trang web nào cũng cần đến việc quản lý đăng nhập của người dùng, chỉ những ai có quyền quản  trị mới có quyền quản trị trang web. Ở bài trước chúng ta tự thêm tài khoản vào database, trong thực tế không ai làm như vậy cả. Việc thêm/sửa/xóa người dùng nên thực hiện trên chính trang web của chúng ta.

Tạo trang thêm người dùng:

Ở phần quản lý người dùng, tôi có xây dựng giao diện để thực hiện một số chức năng với user:

quan-ly-user

Chức năng đầu tiên tôi sẽ hướng dẫn các bạn là chức năng thêm tài khoản:

Ở bài trước, tôi có thực hiện nhầm một số chỗ ở file admin/layout/layout.php, hôm nay tôi tiến hành sửa lại như sau:

Trang admin/layout/layout.php:

Theo đó thì tôi sửa lại trang admin/index.php như sau:

 

Tạo thư mục users trong admin/view/ để lưu giao diện các trang quản lý người dùng.

Tiếp tục tạo file add.php ở trong admin/view/users/ (trang thêm người dùng).

Ở phần thêm người dùng này, tôi chỉ cho phép thêm tài khoản là email, mật khẩu và họ tên người dùng.

Sau đó tôi viết controller cho trang thêm user này, tôi tạo file controller_users.php ở admin/controller/

  • Lưu ý: file controller_users.php là tôi đã đặt theo quy chuẩn mà tôi đã đặt ra, bằng cách: ví dụ tôi truyền lên url là: http://localhost:8080/devpro/project_mvc/admin/index.php?controller=users&act=add , lúc này biến controller của tôi có giá trị là “users”. Nên tôi phải đặt tên controller của tôi là controller_users.php
  • Tại sao tôi lại đặt tên file như vậy? Cùng xem lại đoạn code sau ở trang admin/layout/layout.php:

  • Bởi vì tôi đã có lệnh gọi file controller phù hợp dựa vào biến controller được truyền lên url.
  • File controller tôi gọi luôn nằm trong admin/controller/ và luôn có tên là controller_***.php , trong đó 3 dấu * là giá trị của biến controller được truyền lên url

Trong file admin/controller/controller_users.php tôi viết như sau:

Lưu và quay lại thử thêm người dùng, bạn sẽ thêm được người dùng.

Tạo chức năng hiển thị danh sách người dùng:

Sau khi đã thêm một số người dùng vào csdl, tôi tiến hành lấy thông tin của những người này để hiển thị ra:

Trong thư mục admin/view/users/ tôi tạo một file có tên là danhsach_users.php (để hiển thị danh sách các tài khoản người dùng).

và ở phần “danh sách tài khoản” tôi sẽ sửa link lại thành: index.php?controller=users&act=danhsach_users

quan-ly-user

Trong file admin/view/users/danhsach_users.php tôi viết như sau:

Tạo controller xử lý trang danh sách vừa rồi:

Vẫn trong file admin/controller/controller_users.php, tôi viết tiếp như sau:

Quay lại trang: admin/view/users/danhsach_users.php, bây giờ tôi đổ dữ liệu của người dùng vào giao diện này:

 

Ở bước này tôi đã hoàn tất việc đổ dữ liệu người dùng hiển thị ra màn hình, ví dụ như dữ liệu của tôi khi hiển thị ra sẽ là như thế này:

 

Viết chức năng đổi mật khẩu:

Tại giao diện sau:

quan-ly-user

Tôi muốn khi nhấn vào “hồ sơ cá nhân”, sẽ hiển thị ra các thông tin cơ bản của tôi, và tôi có thể đổi mật khẩu ở đấy, để làm được điều này tôi tạo file hoso.php ở trong thư mục admin/view/users/ để viết giao diện đổi mật khẩu:

Viết xử lý đổi mật khẩu:

Vẫn ở file admin/controller/controller_users.php , tôi viết tiếp như sau để lấy thông tin của người dùng đang đăng nhập:

Quay lại file  admin/view/users/hoso.php tôi viết tiếp như sau:

Đến đây, tôi đã đổ được dữ liệu người dùng đang đăng nhập hiển thị ra màn hình, tiếp theo, tôi sẽ thực hiện đổi mật khẩu khi người dùng nhấn thay đổi mật khẩu:

file admin/controller/controller_users.php tôi viết tiếp như sau:

 

Kết quả sẽ đổi được mật khẩu, bạn hãy thử đăng xuất và đăng nhập lại để chắc chắn rằng mật khẩu đã được thay đổi thành công!

Viết chức năng xóa người dùng:

Quay lại mục “danh sách tài khoản”

del-nguoi-dung

Tôi muốn, khi tôi nhấn vào nút xóa thì tài khoản sẽ bị xóa đi. Cùng nhìn lại link của nút xóa, tôi viết link của nút xóa có dạng: index.php?controller=users&act=danhsach_users&do=del&id=… , việc làm của tôi đơn giản là kiểm tra xem biến $_GET[“do”] có tồn tại và bằng “del” không, sau đó tôi kiểm tra xem biến $_GET[“id”] có tồn tại hay không, nếu tồn tại tôi sẽ lấy giá trị của biến id để tiến hành xóa tài khoản theo id (trước khi xóa tôi tiến hành kiểm tra xem id có tồn tại không, nếu tồn tại thì mới thực hiện xóa). Chi tiết tôi sẽ viết tiếp ở file admin/controller/controller_users.php:

Kết thúc bước này bạn sẽ xóa tài khoản thành công. Tải toàn bộ mã nguồn và sql của bài hôm nay tại đây!

Xem video hướng dẫn chi tiết bài hôm nay: