Viết ứng dụng đăng nhập bằng PHP và MYSQL
(Blogtamsu) - Đăng nhập bằng PHP và MYSQL Ở những bài trước chúng ta đã học qua các kiến thức trọng yếu về PHP . Tuy nhiên, để có thể xây dựng một we....
Công Nghệ Webblog - Chuyên nhận rip, thiết kế, cung cấp: Template blogspot, template blogger chuẩn SEO, Tối ưu website, tích hợp tin tức, giỏ hàng cho blogger bán hàng...
Đăng nhập bằng PHP và MYSQL
Ở những bài trước chúng ta đã học qua các kiến thức trọng yếu về PHP.
Tuy nhiên, để có thể xây dựng một website hoàn chỉnh bằng những kiến
thức đó
thì quả thật không đơn giản. Bởi vì các kiến thức qua sách vở và
tài liệu dù sao cũng chỉ là những kiến thức tổng quát và thiếu tính
khách quan thực tiến. Nên khi người học lập trình bước vào giai đoạn
viết ứng dụng thì thường rất lúng túng. Đó cũng là lý do tôi viết bài
này để hưỡng dẫn các bạn dần làm quen với cách tiếp cận một ứng dụng PHP và MYSQL như thế nào.
Trước hết chúng ta phải thiết kế và xây dựng mô hình cơ sở dữ liệu ứng với từng lệnh bên dưới (xem lại bài ngôn ngữ SQL và MYSQL Căn Bản) sau đó mới tiến hành triển khai lập trình.
1 | mysql -hlocalhost -uroot -proot |
2 | mysql> create database project; |
4 | mysql> create table user ( id INT (10) UNSIGNED NOT NULL AUTO_INCREMENT, username VARCHAR (50) NOT NULL , password CHAR (50) NOT NULL , level CHAR (1) NOT NULL , PRIMARY KEY (id)); |
5 | mysql> insert into user (username, password , level ) values ( "admin" , "12345" , "2" ) ( "abc" , "12345" , "1" ); |
Vậy là chúng ta đã có cơ sở dữ liệu như mô hình trên. Tiếp đến chúng ta tạo file login.php và thiết kế Form HTML để có màn hình đăng nhập khi người dùng truy cập.
Tiếp đến chúng ta tiến hành kiểm tra dữ liệu từ form
02 | if (isset( $_POST [ 'ok' ])) |
05 | if ( $_POST [ 'username' ] == NULL) |
07 | echo "Please enter your username " ; |
11 | $u = $_POST [ 'username' ]; |
13 | if ( $_POST [ 'password' ] == NULL) |
15 | echo "Please enter your password " ; |
19 | $p = $_POST [ 'password' ]; |
Đoạn code ở trên sẽ kiểm tra xem người
dùng có tiến hành nhấn nút đăng nhập hay không. Và nếu có thì chúng ta
sẽ xét tiếp tình trạng người dùng có để trống các ô username và password
hay không. Nếu có chúng ta sẽ thông báo lỗi ở bên trên form, để người
sử dụng tiến hành nhập liệu. Vì phiên bản PHP 5.3 trở lên sẽ yêu cầu ta
khai báo biến trước khi sử dụng. Vì thế mặc định ban đầu ta khởi tạo 2
biến $u và $p mang giá trị là rỗng.
Kế đến chúng ta kiểm tra xem có tồn tại hai biến $u và $p (chỉ khi
người dùng đăng nhập thành công thì mới có thể tạo ra 2 biến đó). Tiếp
đến chúng ta tiến hành kết nối cơ sở dữ liệu (xem lại bài kết hợp PHP & MYSQL trong ứng dụng web).
2 | $conn =mysql_connect( "localhost" , "root" , "root" ) or die ( "can't connect this database" ); |
3 | mysql_select_db( "project" , $conn ); |
Và tiến hành kiểm tra xem username và password người sử dụng vừa nhập
có trùng khớp với thông tin có trong cơ sở dữ liệu hay không ?. Nếu
không thì chúng ta sẽ báo lỗi ngay. Ngược lại sẽ tiến hành lấy dữ liệu
từ bảng và gán vào session. Để có thể quản lý phiên làm việc một cách hiệu quả trên mọi trang của khu vực admin (xem lại bài khái niệm cơ bản về cookie và session).
04 | $conn =mysql_connect( "localhost" , "root" , "root" ) or die ( "can't connect this database" ); |
05 | mysql_select_db( "project" , $conn ); |
06 | $sql = "select * from user where username='" . $u . "' and password='" . $p . "'" ; |
07 | $query =mysql_query( $sql ); |
08 | if (mysql_num_rows( $query ) == 0) |
10 | echo "Username or password is not correct, please try again" ; |
14 | $row =mysql_fetch_array( $query ); |
16 | $_SESSION [ 'userid' ] = $row [ 'id' ]; |
17 | $_SESSION [ 'level' ] = $row [ 'level' ]; |
Như vậy code hoàn chỉnh cho ứng dụng (file login.php) này là như sau:
02 | if (isset( $_POST [ 'ok' ])) |
05 | if ( $_POST [ 'username' ] == NULL) |
07 | echo "Please enter your username " ; |
11 | $u = $_POST [ 'username' ]; |
13 | if ( $_POST [ 'password' ] == NULL) |
15 | echo "Please enter your password " ; |
19 | $p = $_POST [ 'password' ]; |
23 | $conn =mysql_connect( "localhost" , "root" , "root" ) or die ( "can't connect this database" ); |
24 | mysql_select_db( "project" , $conn ); |
25 | $sql = "select * from user where username='" . $u . "' and password='" . $p . "'" ; |
26 | $query =mysql_query( $sql ); |
27 | if (mysql_num_rows( $query ) == 0) |
29 | echo "Username or password is not correct, please try again" ; |
33 | $row =mysql_fetch_array( $query ); |
35 | $_SESSION [ 'userid' ] = $row [id]; |
36 | $_SESSION [ 'level' ] = $row [level]; |