Bài 31: Xây dựng chức năng đăng ký thành viên với php và mysql

Ngày đăng: 2024-04-14 06:54:47

Mục lục:

     1. Xây dựng DataBase bảng thành viên

       2. Xây dựng form đăng kí thành viên

       3. Xử lý thao tác đăng kí thành viên

       

1. Xây dựng database bảng thành viên

Trước tiên bạn tạo một database tên demo và tạo thêm một bảng member bằng cách chạy câu truy vấn dưới đây:

CREATE TABLE IF NOT EXISTS `member` (

  `id` int(11) NOT NULL AUTO_INCREMENT,

  `username` varchar(15) COLLATE utf8_unicode_ci DEFAULT NULL,

  `password` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL,

  `email` varchar(200) COLLATE utf8_unicode_ci DEFAULT NULL,

  `phone` varchar(15) COLLATE utf8_unicode_ci DEFAULT NULL,

  `level` tinyint(4) DEFAULT NULL COMMENT '1: admin, 0: member',

  PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ;

 

Tiếp theo ta sẽ Insert một user với tên là admin để làm người quản trị:

 

INSERT INTO `member` (

    `username`, `password`, `email`, `phone`, `level`

) VALUES ('admin', MD5('titoe.net.net'), 'thehalfheart@gmail.com', '0979306603', '1')

 

Admin là thành viên quản trị của hệ thống website có và có level = 1. Nghĩa là:

  • Nếu user nào có level = 1 là admin => được đăng nhập vào hệ thống quản trị website
  • Nếu user nào có level = 0 là thành viên => không được đăng nhập vào hệ thống quản trị website.

Và mật khẩu của admin là MD5('titoe.net'), nghĩa là trong hệ thống để bảo đảm an toàn thì ta sẽ dùng hàm MD5 để băm mật khẩu lưu vào trong cơ sở dữ liệu. Như vậy khi check Login thì phải dùng hàm MD5 trong PHP để mã hóa trước khi đưa vào so sánh.

2. Xây dựng form đăng ký thành viên

Bạn tạo một file tên register.php với nội dung như sau:

<!DOCTYPE html>

<html>

    <head>

        <title></title>

        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

    </head>

    <body>

        <form method="post" action="xuly.php">

            <table>

                <tr>

                    <td>Username</td>

                    <td><input type="text" name="username" value=""/></td>

                </tr>

                <tr>

                    <td>Password</td>

                    <td><input type="text" name="password" value=""/></td>

                </tr>

                <tr>

                    <td>Email</td>

                    <td><input type="email" name="email" value=""/></td>

                </tr>

                <tr>

                    <td>Phone</td>

                    <td><input type="text" name="phone" value=""/></td>

                </tr>

                <tr>

                    <td>Level</td>

                    <td>

                        <select name="level">

                            <option value="0">Thành Viên</option>

                            <option value="1">Admin</option>

                        </select>

                    </td>

                </tr>

                <tr>

                    <td></td>

                    <td><input type="submit" name="do-register" value="Đăng Ký"/></td>

                </tr>

            </table>

        </form>

    </body>

</html>

Action của form mình trỏ đến file xuly.php nên khi submit form hệ thống sẽ gửi thông tin đến file này. Giao diện như sau:

form dang ky thanh vien
Form đăng ký thành viên

3. Xử lý thao tác đăng ký thành viên

Trước khi xử lý thao tác thêm thành viên thì ta có một số lưu ý như sau:

  • Trong hệ thống CSDL thì field id có thuộc tính auto increment (tự động tăng) nên ta không cần truyền giá trị vào lúc thêm
  • Thuộc tính Username và Email phải là duy nhất nên trước khi thêm phải kiểm tra bị trùng hay không

Bây giờ bạn tạo file xuly.php với nội dung như sau:

// Thiết lập charset utf8

header('Content-Type: text/html; charset=utf-8');

  

// Vì tên button submit là do-register nên ta sẽ kiểm tra nếu

// tồn tại key này trong biến toàn cục $_POST thì nghĩa là người

// dùng đã click register(submit)

if (isset($_POST['do-register']))

{

    // Lấy thông tin

    // Để an toàn thì ta dùng hàm mssql_escape_string để

    // chống hack sql injection

    $username   = isset($_POST['username']) ? mysql_escape_string($_POST['username']) : '';

    $password   = isset($_POST['password']) ? md5($_POST['password']) : '';

    $email      = isset($_POST['email'])    ? mysql_escape_string($_POST['email']) : '';

    $phone      = isset($_POST['phone'])    ? mysql_escape_string($_POST['phone']) : '';

    $level      = isset($_POST['level'])    ? (int)$_POST['level'] : '';

      

    // Validate Thông Tin Username và Email có bị trùng hay không

      

    // Kết nối CSDL

    $conn = mysqli_connect('localhost', 'root', 'vertrigo', 'demo') or die ('Lỗi kết nối');

    mysqli_set_charset($conn, "utf8");

      

    // Kiểm tra username hoặc email có bị trùng hay không

    $sql = "SELECT * FROM member WHERE username = '$username' OR email = '$email'";

      

    // Thực thi câu truy vấn

    $result = mysqli_query($conn, $sql);

      

    // Nếu kết quả trả về lớn hơn 1 thì nghĩa là username hoặc email đã tồn tại trong CSDL

    if (mysqli_num_rows($result) > 0)

    {

        // Sử dụng javascript để thông báo

        echo '<script language="javascript">alert("Thông tin đăng nhập bị sai"); window.location="register.php";</script>';

          

        // Dừng chương trình

        die ();

    }

    else {

        // Ngược lại thì thêm bình thường

        $sql = "INSERT INTO member (username, password, email, phone, level) VALUES ('$username','$password','$email','$phone', '$level')";

          

        if (mysqli_query($conn, $sql)){

            echo '<script language="javascript">alert("Đăng ký thành công"); window.location="register.php";</script>';

        }

        else {

            echo '<script language="javascript">alert("Có lỗi trong quá trình xử lý"); window.location="register.php";</script>';

        }

    }

}

Trong file này bạn chú ý mình sử dụng alert được echo từ php để xuất ra thông báo là thành công hay thất bại. Bây giờ bạn chạy thử và kết quả sẽ:

  • Thông báo thành công nếu thao tác thành công
  • Thông báo username hoặc email đã tồn tại nếu bạn đăng ký trùng thông tin có sẵn trong CSDL
  • Thông báo thất bại nếu thao tác lỗi

Và đồng thơi sau khi thông báo lên màn hình tôi có dùng hàm window.location để redirect sang trang cần thiết. Bây giờ bạn thử test và xem trong CSDL có không nhé 

 

Về bài trước...

                                 Bài tiếp theo...

 

 


Tài liệu lập trình PHP

Bài viết trong cùng chuyên mục

Góc games giải trí (chơi trực tiếp trên web) Đăng nhập (chơi có thưởng)



Cờ caro


Butterfly


Lật hình (luyện trí nhớ)

Cờ tướng ONLINE

Xếp hình

Ghép hình

15_PUZZLE

Kill ghosts

Banchim

Planet Defense

Tower game

Bắn bóng

Plapy Bird (NH.Đông)

Vượt chướng ngại vật

Vẽ hình cứu người

Game Phases

Game vui chơi có thưởng

Game bắn cá



0379136392

Thông tin liên hệ: Lê Văn Thuyên - ĐT: 0379136392 ; Gmail: lethuyen0379136392@gmail.com

Comment

 +   Lê Văn Thuyên-0379136392:Cảm ơn quý vị và các bạn đã vào Website của Lê Thuyên! Lê thuyên rất mong nhận được sự góp ý của quý vị và các bạn cho sự phát triển của website này. Xin chân thành cảm ơn!

Trả lời

 *   Dũng Trung-090567448:Lê Văn Thuyên0379136392--->Ok.Anh!

Trả lời

 *   Bé Nguyễn-benguyen@gmail,com:Lê Văn Thuyên0379136392--->Good job!

Trả lời

 +   -:

Trả lời

 +   -:

Trả lời

8239