Trang

Thursday, June 18, 2015

Bài 11: Viết ứng dụ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ì thật sự 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 mình viết bài này để hướng dẫn các bạn làm quen dần với cách tiếp cận một ứng dụng PHP và MySQL.
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 9: Cơ bản về ngôn ngữ SQL và MySQL) sau đó mới tiến hành triển khai lập trình.
1
2
3
4
5
mysql -hlocalhost -uroot -proot
mysql>create database project;
mysql>use project;
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));
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 theo 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.
login_form
1
2
3
4
5
<form action='login.php' method='post'>
Username: <input type='text' name='username' size='25' /><br />
Password: <input type='password' name='password' size='25' /><br />
<input type='submit' name='ok' value='Dang Nhap' />
</form>
Sau đó, chúng ta tiến hành kiểm tra dữ liệu từ form.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
if(isset($_POST['ok']))
{
     $u=$p="";
     if($_POST['username'] == NULL)
     {
          echo "Please enter your username<br />";
     }
     else
     {
          $u=$_POST['username'];
     }
     if($_POST['password'] == NULL)
     {
          echo "Please enter your password<br />";
     }
     else
     {
          $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. Nếu có thì chúng ta sẽ xét tiếp đến tình trạng người dùng có để trống các ô username  password hay không. Nếu người dùng bỏ trống, chúng ta sẽ thông báo lỗi trên form để người sử dụng tiến hành nhập liệu. Phiên bản PHP5.3 trở lên sẽ yêu cầu 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  $p mang giá trị là rỗng.
Kế tiếp, chúng ta kiểm tra xem có tồn tại hai biến $u  $p không (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 10: Kết hợp PHP và MySQL trong ứng dụng website).
1
2
3
4
<?php
$conn=mysql_connect("localhost","root","root") or die("can't connect this database");
mysql_select_db("project",$conn);
?>
Tiến hành kiểm tra xem username  password người sử dụng vừa nhập vào có trùng khớp với thông tin có trong cơ sở dữ liệu 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ạiBài 7: Khái niệm cơ bản về Cookie và Session trong PHP).
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
if($u && $p)
{
     $conn=mysql_connect("localhost","root","root") or die("can't connect this database");
     mysql_select_db("project",$conn);
     $sql="select * from user where username='".$u."' and password='".$p."'";
     $query=mysql_query($sql);
     if(mysql_num_rows($query) == 0)
     {
          echo "Username or password is not correct, please try again";
     }
     else
     {
          $row=mysql_fetch_array($query);
          session_start();
          $_SESSION['userid'] = $row['id'];
          $_SESSION['level'] = $row['level'];
     }
}
?>
Code hoàn chỉnh cho ứng dụng (file login.php):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<?php
if(isset($_POST['ok']))
{
     $u=$p="";
     if($_POST['username'] == NULL)
     {
          echo "Please enter your username<br />";
     }
     else
     {
          $u=$_POST['username'];
     }
     if($_POST['password'] == NULL)
     {
          echo "Please enter your password<br />";
     }
     else
     {
          $p=$_POST['password'];
     }
     if($u && $p)
     {
          $conn=mysql_connect("localhost","root","root") or die("can't connect this database");
          mysql_select_db("project",$conn);
          $sql="select * from user where username='".$u."' and password='".$p."'";
          $query=mysql_query($sql);
          if(mysql_num_rows($query) == 0)
          {
               echo "Username or password is not correct, please try again";
          }
          else
          {
               $row=mysql_fetch_array($query);
               session_start();
               $_SESSION['userid'] = $row[id];
               $_SESSION['level'] = $row[level];
          }
     }
}
?>
<form action='login.php' method='post'>
Username: <input type='text' name='username' size='25' /><br />
Password: <input type='password' name='password' size='25' /><br />
<input type='submit' name='ok' value='Dang Nhap' />
</form>
Ở bài sau, chúng ta sẽ tiếp tục tìm hiểu ứng dụng kết hợp PHP và MySQL cho việc thêm một thành viên.
Nguồn: qhonline.info

No comments:

Post a Comment