Trong bài này tôi sẽ hướng dẫn các bạn xây dựng chức năng đăng nhập và đăng ký sử dụng php và mysql. Nội dung của bài này rất cơ bản và cũng rất thích hợp cho những bạn mới phân tích lập trình website với PHP và MySQL.

1. Tạo CSDL lưu trữ thông tin người dùng

Trước tiên các bạn tạo một CSDL tên là dùng thử, sau đó chạy đoạn code SQL  tạo table như sau:

 

CREATE TABLE `thành viên` (
        `username` VARCHAR(255) NOT NULL,
        `password` VARCHAR(255) NOT NULL,
        `thư điện tử` VARCHAR(255) NOT NULL,
        `fullname` VARCHAR(255) NOT NULL,
        `birthday` VARCHAR(10) NOT NULL,
        `sex` VARCHAR(3) NOT NULL
    ) ENGINE = MyISAM'

 

Nội dung này được đăng tại

freetuts.net

, không được sao chép dưới mọi hình thức.

Note: Vì tất cả chúng ta đang làm chức năng dùng thử nên tôi không quan tâm đến khóa cũng chính vì vậy tôi không tạo field này.

2. Tạo file kết nối vào MySQL

Việc tạo một file kết nối riêng như vậy này sẽ giúp các bạn tiết kiệm được code vì khi nào cần kết nối ta chỉ việc gọi tới file này thay vì code kết nối một cách vô tội vạ.

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

 

<?php
    $ketnoi['host'] = 'localhost'; //Tên server, nếu dùng hosting free thì cần thay đổi
    $ketnoi['dbname'] = 'dùng thử'; //Đây là tên của Database
    $ketnoi['username'] = 'root'; //Tên sử dụng Database
    $ketnoi['password'] = '';//Mật khẩu của tên sử dụng Database
    @mysql_connect(
        "{$ketnoi['host']}",
        "{$ketnoi['username']}",
        "{$ketnoi['password']}")
    or
        die("Không thể kết nối database");
    @mysql_select_db(
        "{$ketnoi['dbname']}") 
    or
        die("Không thể chọn database");
?>

Những thông số kỹ thuật trên bạn tự điền lấy nhé.

 

3. Xây dựng chức năng đăng ký thành viên

Trước tiên tất cả chúng ta tạo một form đăng ký.

Tạo form đăng ký

Các bạn tạo file dangky.php và sao chép nội dung này vào:

 

<!DOCTYPE htmlvàgt;
<htmlvàgt;
    <headvàgt;
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <titlevàgt;Trang đăng lývàlt;/titlevàgt;
    </headvàgt;
    <bodyvàgt;
        <h1vàgt;Trang đăng ký thành viênvàlt;/h1vàgt;
        <form action="xuly.php" method="POST">
            <table cellpadding="0" cellspacing="0" border="1">
                <trvàgt;
                    <tdvàgt;
                        Tên đăng nhập : 
                    </tdvàgt;
                    <tdvàgt;
                        <input type="text" name="txtUsername" size="50" />
                    </tdvàgt;
                </trvàgt;
                <trvàgt;
                    <tdvàgt;
                        Mật khẩu :
                    </tdvàgt;
                    <tdvàgt;
                        <input type="password" name="txtPassword" size="50" />
                    </tdvàgt;
                </trvàgt;
                <trvàgt;
                    <tdvàgt;
                        Tin nhắn hộp thư online :
                    </tdvàgt;
                    <tdvàgt;
                        <input type="text" name="txtEmail" size="50" />
                    </tdvàgt;
                </trvàgt;
                <trvàgt;
                    <tdvàgt;
                        Họ và tên :
                    </tdvàgt;
                    <tdvàgt;
                        <input type="text" name="txtFullname" size="50" />
                    </tdvàgt;
                </trvàgt;
                <trvàgt;
                    <tdvàgt;
                        Ngày sinh :
                    </tdvàgt;
                    <tdvàgt;
                        <input type="text" name="txtBirthday" size="50" />
                    </tdvàgt;
                </trvàgt;
                <trvàgt;
                    <tdvàgt;
                        Giới tính :
                    </tdvàgt;
                    <tdvàgt;
                        <select name="txtSex">
                            <option value=""></optionvàgt;
                            <option value="Nam">Namvàlt;/optionvàgt;
                            <option value="Nu">Nữvàlt;/optionvàgt;
                        </selectvàgt;
                    </tdvàgt;
                </trvàgt;
            </tablevàgt;
            <input type="submit" value="Đăng ký" />
            <input type="reset" value="Nhập lại" />
        </formvàgt;
    </bodyvàgt;
</htmlvàgt;

 

XEM THÊM  Cách Đăng Nhập Zalo Web Trên Máy Tính

Chạy lên kết quả là:

Trong form này các bạn để ý phương thức tôi sử dụng là phương thức POST và action sẽ là file xuly.php, khi người dùng click đăng ký thì form sẽ gửi thông tin qua file xuly.php bằng phương thức POST, nhiệm vụ của file này là sẽ lấy thông tin và xử lý lưu vào CSDL.

Xử lý request đăng ký

Trong file xuly.php ta sẽ lấy thông tin đăng ký và gọi file ketnoi.php để kết nối vào MySQL và tiến hành INSERT. Nội dung file như sau:

 

<?php

    // Nếu không phải là sự kiện đăng ký thì không xử lý
    if (!isset($_POST['txtUsername'])){
        die('');
    }
    
    //Nhúng file kết nối với database
    include('ketnoi.php');
         
    //Khai báo utf-8 để hiển thị được tiếng việt
    header('Content-Type: text/html; charset=UTF-8');
         
    //Lấy dữ liệu từ file dangky.php
    $username   = addslashes($_POST['txtUsername']);
    $password   = addslashes($_POST['txtPassword']);
    $thư điện tử      = addslashes($_POST['txtEmail']);
    $fullname   = addslashes($_POST['txtFullname']);
    $birthday   = addslashes($_POST['txtBirthday']);
    $sex        = addslashes($_POST['txtSex']);
         
    //Xác minh người dùng đã nhập liệu đầy đủ chưa
    if (!$username || !$password || !$thư điện tử || !$fullname || !$birthday || !$sex)
    {
        echo "Vui lòng nhập đầy đủ thông tin. <a href='javascript: history.go(-1)'>Trở lại</a>";
        exit;
    }
         
        // Mã khóa mật khẩu
        $password = md5($password);
         
    //Xác minh tên đăng nhập này đã có người dùng chưa
    if (mysql_num_rows(mysql_query("SELECT username FROM member WHERE username='$username'")) > 0){
        echo "Tên đăng nhập này đã có người dùng. Vui lòng chọn tên đăng nhập khác. <a href='javascript: history.go(-1)'>Trở lại</a>";
        exit;
    }
         
    //Xác minh thư điện tử có đúng định dạng hay không
    if (!eregi("^[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)*(.[a-z]{2,4})$", $thư điện tử))
    {
        echo "Email này không hợp lệ. Vui long nhập email khác. <a href='javascript: history.go(-1)'>Trở lại</a>";
        exit;
    }
         
    //Xác minh thư điện tử đã có người dùng chưa
    if (mysql_num_rows(mysql_query("SELECT email FROM member WHERE email='$email'")) > 0)
    {
        echo "Email này đã có người dùng. Vui lòng chọn Email khác. <a href='javascript: history.go(-1)'>Trở lại</a>";
        exit;
    }
    //Xác minh dạng nhập vào của ngày sinh
    if (!ereg("^[0-9]+/[0-9]+/[0-9]{2,4}", $birthday))
    {
            echo "Ngày tháng năm sinh không hợp lệ. Vui long nhập lại. <a href='javascript: history.go(-1)'>Trở lại</a>";
            exit;
        }
         
    //Lưu thông tin thành viên vào bảng
    @$addmember = mysql_query("
        INSERT INTO thành viên (
            username,
            password,
            thư điện tử,
            fullname,
            birthday,
            sex
        )
        VALUE (
            '{$username}',
            '{$password}',
            '{$thư điện tử}',
            '{$fullname}',
            '{$birthday}',
            '{$sex}'
        )
    ");
                         
    //Thông báo quá trình lưu
    if ($addmember)
        echo "Quá trình đăng ký thành công. <a href='/'>Về trang chủ</a>";
    else
        echo "Có lỗi xảy ra trong quá trình đăng ký. <a href='dangky.php'>Thử lại</a>";
?>

 

XEM THÊM  Tên Đăng Nhập Tài Khoản Agribank ? Internet Banking

Nội dung file tôi đã comment trong đó rồi nên các độc giả nhé, có gì không hiểu thì comment bên dưới mình sẽ trả lời thắc mắc của chúng ta.

4. Xây dựng chức năng đăng nhập

Trước tiên để làm được chức năng này bạn phải hiểu rằng cách sư dụng session trong php đã nhé, hoặc các độc giả nguyên serie php cơ bản này luôn cho máu :D.

Khi đăng ký thành viên xong người dùng sẽ đăng nhập vào website, như vậy ta phải tiến hành xác minh tài khoản và mật khẩu đăng nhập có đúng hay không? nếu đúng thì thông báo thành công, trái lại thông báo thất bại.

Bạn tạo file dangnhap.php với nội dung là các mã HTML thông thường và trong đó có form như sau:

 

<!DOCTYPE htmlvàgt;
<htmlvàgt;
    <headvàgt;
        <titlevàgt;</titlevàgt;
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    </headvàgt;
    <bodyvàgt;
        <form action='dangnhap.php?do=login' method='POST'>
            <table cellpadding='0' cellspacing='0' border='1'>
                <trvàgt;
                    <tdvàgt;
                        Tên đăng nhập :
                    </tdvàgt;
                    <tdvàgt;
                        <input type='text' name='txtUsername' />
                    </tdvàgt;
                </trvàgt;
                <trvàgt;
                    <tdvàgt;
                        Mật khẩu :
                    </tdvàgt;
                    <tdvàgt;
                        <input type='password' name='txtPassword' />
                    </tdvàgt;
                </trvàgt;
            </tablevàgt;
            <input type='submit' value='Đăng nhập' />
            <a href='dangky.php' title='Đăng ký'>Đăng ký</avàgt;
        </formvàgt;
    </bodyvàgt;
</htmlvàgt;

 

Chạy lên ta có giao diện như sau:

Vậy là ta có form đăng ký, trong form này tôi sử dụng method = POST và action chính là trang này luôn, tức là khu submit thì trang này sẽ xử lý đăng nhập luôn.

Hiện thời các bạn viết code xác minh thông tin đăng nhập, các bạn thêm vào file một đoạn mã PHP như sau:

 

<?php
//Khai báo sử dụng session
session_start();

//Khai báo utf-8 để hiển thị được tiếng việt
header('Content-Type: text/html; charset=UTF-8');

//Xử lý đăng nhập
if (isset($_POST['dangnhap'])) 
{
    //Kết nối tới database
    include('ketnoi.php');
    
    //Lấy dữ liệu nhập vào
    $username = addslashes($_POST['txtUsername']);
    $password = addslashes($_POST['txtPassword']);
    
    //Xác minh đã nhập đủ tên đăng nhập với mật khẩu chưa
    if (!$username || !$password) {
        echo "Vui lòng nhập đầy đủ tên đăng nhập và mật khẩu. <a href='javascript: history.go(-1)'>Trở lại</a>";
        exit;
    }
    
    // mã hóa pasword
    $password = md5($password);
    
    //Xác minh tên đăng nhập có tồn tại không
    $query = mysql_query("SELECT username, password FROM member WHERE username='$username'");
    if (mysql_num_rows($query) == 0) {
        echo "Tên đăng nhập này không tồn tại. Vui lòng kiểm tra lại. <a href='javascript: history.go(-1)'>Trở lại</a>";
        exit;
    }
    
    //Lấy mật khẩu trong database ra
    $row = mysql_fetch_array($query);
    
    //So sánh 2 mật khẩu có trùng khớp hay không
    if ($password != $row['password']) {
        echo "Mật khẩu không đúng. Vui lòng nhập lại. <a href='javascript: history.go(-1)'>Trở lại</a>";
        exit;
    }
    
    //Lưu tên đăng nhập
    $_SESSION['username'] = $username;
    echo "Xin chào " . $username . ". Bạn đã đăng nhập thành công. <a href='/'>Về trang chủ</a>";
    die();
}
?>
<!DOCTYPE htmlvàgt;
<htmlvàgt;
    <headvàgt;
        <titlevàgt;</titlevàgt;
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    </headvàgt;
    <bodyvàgt;
        <form action='dangnhap.php?do=login' method='POST'>
            <table cellpadding='0' cellspacing='0' border='1'>
                <trvàgt;
                    <tdvàgt;
                        Tên đăng nhập :
                    </tdvàgt;
                    <tdvàgt;
                        <input type='text' name='txtUsername' />
                    </tdvàgt;
                </trvàgt;
                <trvàgt;
                    <tdvàgt;
                        Mật khẩu :
                    </tdvàgt;
                    <tdvàgt;
                        <input type='password' name='txtPassword' />
                    </tdvàgt;
                </trvàgt;
            </tablevàgt;
            <input type='submit' name="dangnhap" value='Đăng nhập' />
            <a href='dangky.php' title='Đăng ký'>Đăng ký</avàgt;
        </formvàgt;
    </bodyvàgt;
</htmlvàgt;

 

XEM THÊM  Cách đăng ký Gmail mới, lập, tạo tài khoản Gmail 2021

Đoạn code này sẽ xử lý thông tin và hiện thông báo đăng nhập hay thành công, sau thời điểm đăng nhập thành công các bạn click về trang chủ thì nhiệm vụ lúc này là hiển thị thông tin đã đăng nhập ở trang chủ. 

5. Xây dựng trang chủ

Các bạn tạo file trangchu.php với nội dung như sau:

 

<?php session_start(); ?>
<!DOCTYPE htmlvàgt;
<htmlvàgt;
    <headvàgt;
        <titlevàgt;</titlevàgt;
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    </headvàgt;
    <bodyvàgt;
       <?php 
       if (isset($_SESSION['username']) && $_SESSION['username']){
           echo 'Bạn đã đăng nhập với tên là '.$_SESSION['username']."<br/>";
           echo 'Click vào đây để <a href="logout.php">Logoutvàlt;/avàgt;';
       }
       else{
           echo 'Bạn chưa đăng nhập';
       }
       ?>
    </bodyvàgt;
</htmlvàgt;

 

Trang chủ sẽ hiển thị thông tin đã đăng nhập hay chưa, nếu đăng nhập rồi thì hiển thị tên đăng nhập và một nút logout, click vào nút đó thì ta sẽ gọi qua file logout.php.

5. Xây dựng chức năng logout

Nếu thiết lập login ta dùng session với tên là username thì lúc này để thiết lập logout ta chỉ cần unset giá trị đó. Các bạn tạo file logout.php với nội dung như sau:

 

<?php session_start(); 

if (isset($_SESSION['username'])){
    unset($_SESSION['username']); // xóa session login
}
?>
<a href="trangchu.php">HOMEvàlt;/avàgt;

 

Tổng kết:

Bài này chỉ mang tính chất tham khảo các bạn hãy lấy làm ví dụ thôi nhé. Chúc các bạn học tốt.

À quên là trong bài này mình sử dụng thư viện mysql để kêt nối database, đây là thư viện lỗi thời rồi nên bạn hãy thay thế bằng thư viện mysqli nhé.

By DEVTEAM