Xây dựng ứng dụng login và đăng kí thành viên theo mô hình hướng đối tượng và MVC

Contents

Cài đặt project . 2

Config.php . 2

Tạo cơ sở dữ liệu: . 3

Connect.php . 3

Views/user/signup.phtml. 4

User/signup.php . 5

Models/user/model_user.php . 6

Update lại file User/signup.php . 7

Views/user/login.phtml . 7

Update user/login.php . 8

Bảo mật thông tin . 9

Quản lý phiên đăng nhập của người dùng . 10

Trangchu/Index.php . 10

Views/index/index.phtml. 11

Redirect link . 12

Chuyển từ trang index.php sang trang /trangchu/index.php . 12

Nếu người dùng chưa đăng nhập thì khi vào trang chủ sẽ chuyển sang trang đăng nhâp: . 12

Khi đăng nhập đúng thì chuyển sang trang chủ . 13

Khi đăng kí xong chuyển sang trang đăng nhập . 13

Vấn đề xử lý dữ liệu gửi đến từ người dùng: . 13

pdf14 trang | Chuyên mục: PHP | Chia sẻ: dkS00TYs | Lượt xem: 9776 | Lượt tải: 1download
Tóm tắt nội dung Xây dựng ứng dụng login và đăng kí thành viên theo mô hình hướng đối tượng và MVC, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
. Xây dựng ứng dụng login và đăng 
kı́ thành viên theo mô hı̀nh hướng đo i 
tượng và mvc 
Nghiêm Đình Mừng 
Contents 
Cài đặt project ......................................................................................................................................... 2 
Config.php ............................................................................................................................................... 2 
Tạo cơ sở dữ liệu: .................................................................................................................................... 3 
Connect.php ............................................................................................................................................ 3 
Views/user/signup.phtml........................................................................................................................ 4 
User/signup.php ..................................................................................................................................... 5 
Models/user/model_user.php ................................................................................................................ 6 
Update lại file User/signup.php .............................................................................................................. 7 
Views/user/login.phtml .......................................................................................................................... 7 
Update user/login.php ............................................................................................................................ 8 
Bảo mật thông tin ................................................................................................................................... 9 
Quản lý phiên đăng nhập của người dùng ............................................................................................ 10 
Trangchu/Index.php .............................................................................................................................. 10 
Views/index/index.phtml...................................................................................................................... 11 
Redirect link .......................................................................................................................................... 12 
Chuyển từ trang index.php sang trang /trangchu/index.php ........................................................... 12 
Nếu người dùng chưa đăng nhập thì khi vào trang chủ sẽ chuyển sang trang đăng nhâp: ............. 12 
Khi đăng nhập đúng thì chuyển sang trang chủ ................................................................................ 13 
Khi đăng kí xong chuyển sang trang đăng nhập ............................................................................... 13 
Vấn đề xử lý dữ liệu gửi đến từ người dùng: ........................................................................................ 13 
Cài đặt project 
Các bạn tạo project mới, ví dụ myweb và đặt ở thư mục htdocs với hệ thống file như sau: 
Vì mình mới tạo modul đầu tiên là user nên chỉ có thư mục user là controller của modul user, ngoài ra 
có controller trangchu với file index.php, trong model có 1 file connect.php để kết nối cơ sở dữ liệu, 
có thư mục user là model của module user. Tương tự trong view có file index.phtml là view của 
index, thư mục user là view của modul user và thư mục index là view của trangchu. 
Config.php 
File config.php là file để chúng ta cấu hình ứng dụng. Ví dụ như cớ sở dữ liệu, các hằng số... Bây giờ 
các bạn mở file config.php và code nội dung sau (giá trị của các hằng số các bạn có thể thay đổi cho 
phù hợp): 
Tạo cơ sở dữ liệu: 
Đầu tiên chúng ta tạo cơ sở dữ liệu ví dụ myweb trong phpmyadmin 
Các bạn lưu ý lên chọn bảng mã utf8_unicode_ci để ttránh lỗi font. 
Bây giờ tạo bảng user để lưu trữ thông tin người dùng: 
Bảng user có thể có nhiều thuộc tính khác , nhưng tạm thời chúng ta làm thế này đã. 
Connect.php 
File này dùng để kết nối cơ sở dữ liệu, các bạn mở file nên và code nội dung sau: 
 Các bạn có thể thấy chúng ta include file config.php để lấy thông tin về cơ sở dữ liệu, chúng ta tạo 1 
class DB_class để kêt nối với cơ sở dữ liệu và trong hàm khởi tạo của class này có lệnh mysqli để kết 
nối với cở sở dữ liệu, biến $db trả về là biến mà chúng ta dùng để tương tác với cơ sở dữ liệu. 
Views/user/signup.phtml 
Đây là file view của controller signup.php dùng để hiển thị form đăng kí người dùng. 
Chúng ta tạo một form để nhập thông tin người dùng. 
 User/signup.php 
Bây giờ chúng ta tạo controller cho view signup.phtml . 
Đầu tiên chúng ta phải xử lý nếu người dùng nhất nút submit thì tiến hành xử lý form bằng lênh 
isset(), sau đó kiểm tra xem người dùng nhập đủ thông tin chưa, nếu chưa thì báo lỗi, nếu đầy đủ 
thông tin thì xử lý thêm thành viên. 
Lưu ý các bạn có thể kiểm tra từng form input để thông báo đúng ô nhập thiếu. Minh chỉ minh họa 
nên gộp chung lại làm một. 
Sau khi xử lý xong thì chúng ta phải include view của controller bằng lệnh include_once(); 
Kết quả khi nhấn submit: 
 Models/user/model_user.php 
Đây là file chứa các hàm tương tác với cơ sở dữ liệu của controller user. Đầu tiên phải include file 
connect.php để có thể kết nối với cơ sở dữ liệu. 
Các bạn chú ý để sau này giải thích cho mình tại sao lại dùng lệnh: 
include "../models/connect.php"; 
mà không phải là 
include "../../connect.php" 
Trong class user có hai phương thức là signup dùng để đăng kí thành viên mới với đầu vào là một 
mảng thông tin user. Còn phương thức thứ hai là get_user_by_username dùng để lấy ra user khi biết 
tên đăng nhập của user đó. 
Update lại file User/signup.php 
Các bạn thay dòng chữ echo “xử lý thêm thành viên” bằng đoạn code sau: 
Đầu tiên ta tạo một đối tượng thuộc lớp User để có thể sử dụng các phương thức của lớp User . Do 
vậy các bạn phải thêm dòng code sau vào đầu trang signup.php 
Sau đó ta kiểm tra xem tên người dùng có bị trùng lặp hay không và cuối cùng là thêm thành viên mới 
vào cơ sở dữ liệu. 
Đến đây coi như xong phần chính của việc đăng kí thành viên, giờ đến làm trang đăng nhập: 
Views/user/login.phtml 
File này tương tự file singup.phtml dùng để hiển thị form đăng nhập: 
 Update user/login.php 
Ta tiến hành xử lý đăng nhập 
Tương tự như đăng kí thành viên. 
Đầu tiên chúng ta phải kiểm tra khi nào có người dùng đăng nhập để xử lý. 
 Khi có đăng nhập thì phải kiểm tra xem đầy đủ thông tin chưa. 
 Khi đã đầy đủ rồi thì ta kiểm tra xem người dùng đó có tồn tại hay không 
Nếu có thì kiểm tra xem mật khẩu người dùng đó có đúng hay không 
Sau đây là toàn bộ code login.php 
Bảo mật thông tin 
Giả sử khi hacker có thể lấy được dữ liệu ở cơ sở dữ liệu của ta thì có thể thấy được tài khoản và mật 
khẩu. Câu hỏi đặt ra là làm thế nào để mã hóa mật khẩu để hacker không thể biết 
Rất may là php đã hỗ trợ chúng ta phương thứ md5() để mã hóa theo kiểu md5, do vấy trước khi chèn 
vào cơ sở dữ liệu các bạn sửa : 
 Đây là một hàm mã hóa 1 chiều, tức là không có giải mã, vậy làm thế nào để biết được mật khẩu 
người dùng nhập có đúng hay không? Rất đơn giản là khi so sánh mật khẩu người dùng nhập với cơ 
sở dữ liệu chỉ cần thêm md5() vào, vậy là ok: 
Quản lý phiên đăng nhập của người dùng 
Như bài trước đã hướng dẫn, để quản lý phiên đăng nhập của người dùng chúng ta dùng biến session. 
Để có thể dùng được các biến session các bạn thêm câu lệnh sau vào đầu từng trang php 
(login.php,index.php,signup.php), lưu ý là phải đầu tiên: 
Sau khi người dùng đăng nhập thì chúng ta dùng một biến session để lưu trữ thông tin người dùng, để 
kiểm tra người dùng có đăng nhập hay không ta chỉ cần kiểm tra xem biến này có tồn tại hay không 
Trangchu/Index.php 
Tại trang chủ khi người dùng đăng nhập vào thì sẽ có lời chào đến người dùng đó. Như vậy ta phải 
dựa vào biến session để lấy thông tin người dùng, truy vấn cơ sở dữ liệu và hiển thị tên người dùng 
đó. 
 Views/index/index.phtml 
Index.phtm là view của index.php để hiển thị nội dung trang chủ các bạn phải code vào view này: 
Kết quả: 
Đăng xuất 
Các bạn tạo file logout.php trong thư mục user. 
 Trên trang chủ tạo link đăng xuất trong file views/index/index.phtml 
Redirect link 
Chuyển trang là vấn đề thường gặp trong website. Php có hỗ trợ hàm header(“tham sô”); để giúp ta 
làm việc này. 
Chuyển từ trang index.php sang trang /trangchu/index.php 
Khi bạn truy cập đến website thì file đầu tiên được yêu cầu là index.php vì vậy bạn phải chuyển từ 
trang này đến trang trangchu/index.php. Các bạn sửa file index.php. 
Nếu người dùng chưa đăng nhập thì khi vào trang chủ sẽ chuyển sang trang 
đăng nhâp: 
Các bạn sửa lại file /trangchu/index.php như sau: 
 Khi đăng nhập đúng thì chuyển sang trang chủ 
Các bạn thêm đoạn code header() vào sau lệnh tạo session: 
Khi đăng kí xong chuyển sang trang đăng nhập 
Các bạn thêm đoạn code sau vào sau đoạn xử lý đăng kí thành công 
Vấn đề xử lý dữ liệu gửi đến từ người dùng: 
Giả sử người dùng tạo tên đăng nhập là Vankhoa thì khi lần sau người đó đăng nhập thì các username 
kiểu VanKhoa hoặc vankhoa sẽ không đúng. Vậy cách đơn giản la chúng ta chuyển hết dữ liệu từ 
người dùng sang dạng chữ thường. 
Giả sử người dùng đăng kí họ tên là Nguyễn Văn Nam thì khi hiển thị ra ta đã vô tình hiển 
thị cả thể html làm cấu trúc trang web bị thay đổi như các bạn thấy. Có thể khắc phục bằng cách 
loại bỏ các thẻ html hoặc chuyển sang kí tự html đặc biệt. 
 Hoặc nếu nguy hiểm hơn là người dùng đăng kí họ tên kiểu ‘DELETE.user’ khi truy vấn cơ sở dữ liệu 
có thể gây xóa toàn bộ dữ liệu trong bảng ( tấn công SQL injection). Có thể khác phục bằng cách 
chuyển thành xâu và loại bỏ ký tự đặc biệt trước khi truy vấn cơ sở dữ liệu, ví dụ: select ‘ user 
thành“select \’ user” rồi mới truy vấn cơ sở dữ liệu. 
Vấn đề đặt ra cho các bạn là xây dựng các hàm để xử lý các vấn đề trên. 

File đính kèm:

  • pdfXây dựng ứng dụng login và đăng kí thành viên theo mô hình hướng đối tượng và mvc.pdf
Tài liệu liên quan