Thứ Năm, 23 tháng 6, 2016

Phần 33 - Làm phần xử lý đăng nhập

- Tiếp theo bạn sao chép đoạn code sau vào file 'xac_dinh_dang_nhap.php' :


<?php
    if(!isset($bien_bao_mat)){exit();}
    function thong_bao_abc($c)
    {
        $lien_ket_trang_truoc=$_SERVER['HTTP_REFERER'];
        ?>
            <html><head>
              <meta charset="UTF-8">
              <title>Thông báo</title></head>
            <body>
                <style type="text/css">
                a.trang_truoc_c8w{text-decoration:none;color:blue;font-size:36px;margin-left:50px}
                a.trang_truoc_c8w:hover{color:red;}
                </style>
                <br><br><br><br>
                <a href="<?php echo $lien_ket_trang_truoc; ?>" class="trang_truoc_c8w" >Bấm vào đây để trở về trang trước</a>
                <script type="text/javascript">
                    alert("<?php echo $c; ?>");
                </script>
            </body>
            </html>       
        <?php
        exit();
    }
    function trang_truoc_abc()
    {
        ?>
            <html><head>
              <meta charset="UTF-8">
              <title>Đang chuyển về trang trước</title></head>
            <body>
                <script type="text/javascript">
                    window.history.back();
                </script>   
            </body>
            </html>
        <?php
    }
  
    if(isset($_POST['dang_nhap_quan_tri']))
    {
        $ky_danh=$_POST['ky_danh'];
        $ky_danh=str_replace("'","",$ky_danh);
        $ky_danh=str_replace('"',"",$ky_danh);
       
        $mat_khau=md5($_POST['mat_khau']);
        $mat_khau=md5($mat_khau);
       
        $tv="select count(*) from thong_tin_quan_tri where ky_danh='$ky_danh' and mat_khau='$mat_khau' ";
        $tv_1=mysql_query($tv);
        $tv_2=mysql_fetch_array($tv_1);
        if($tv_2[0]==1)
        {
            $_SESSION['ky_danh']=$ky_danh;
            $_SESSION['mat_khau']=$mat_khau;
        }
        else
        {
            thong_bao_abc("Thông tin nhập vào không đúng");
        }
        trang_truoc_abc();
    }
   
    if(isset($_SESSION['ky_danh']))
    {
        $ky_danh=$_SESSION['ky_danh'];
        $mat_khau=$_SESSION['mat_khau'];
        $tv="select count(*) from thong_tin_quan_tri where ky_danh='$ky_danh' and mat_khau='$mat_khau' ";
        $tv_1=mysql_query($tv);
        $tv_2=mysql_fetch_array($tv_1);
        if($tv_2[0]==1)
        {
            $xac_dinh_dang_nhap="co";
        }
    }
?> 

- Bạn xem giải thích code file 'xac_dinh_dang_nhap.php' ở phần bên phải phía dưới và phần chữ xanh :

<?php
    if(!isset($bien_bao_mat)){exit();}                                                                          // xuất ra trang trắng nếu truy cập trực tiếp vào file này 
    function thong_bao_abc($c)                                                                                  // tạo ra hàm 'thong_bao_abc' , hàm này có tác dụng hiển thị ra một
                                                                                                                                // thông báo gì đó khi gọi lại hàm          
    {
        $lien_ket_trang_truoc=$_SERVER['HTTP_REFERER'];
        //  $_SERVER['HTTP_REFERER'] dùng để lấy url trang trước
        ?>
            <html><head>
              <meta charset="UTF-8">
              <title>Thông báo</title></head>
            <body>
                <style type="text/css">
                a.trang_truoc_c8w{text-decoration:none;color:blue;font-size:36px;margin-left:50px}
                a.trang_truoc_c8w:hover{color:red;}
                </style>
                <br><br><br><br>
                <a href="<?php echo $lien_ket_trang_truoc; ?>" class="trang_truoc_c8w" >Bấm vào đây để trở về trang trước</a>
                // xuất ra liên kết trở về trang trước với liên kết trở về là $lien_ket_trang_truoc
                <script type="text/javascript">
                    alert("<?php echo $c; ?>");                                                                   // dùng lệnh alert  trong javascript để hiển thị thông báo
                                                                                                                                // chuỗi xuất ra sẽ dùng code php để xuất
                </script>
            </body>
            </html>
        <?php
        exit();
    }
    function trang_truoc_abc()                                                                                    // tạo ra hàm quay trở về trang trước , hàm này tên 'trang_truoc_abc'
    {
        ?>
            <html><head>
              <meta charset="UTF-8">
              <title>Đang chuyển về trang trước</title></head>
            <body>
                <script type="text/javascript">
                    window.history.back();                                                                        // dùng lệnh window.history.back trong javascript
                                                                                                                               // để quay trở về trang trước
                </script>  
            </body>
            </html>
        <?php
    }                                                                                                                       // kết thúc hàm 'thong_bao_abc' 
  
    if(isset($_POST['dang_nhap_quan_tri']))                                                              // kiểm tra biểu mẫu đăng nhập có được gửi hay không
                                                                                                                                // nếu được gửi thì có tồn tại biến $_POST['dang_nhap_quan_tri']
                                                                                                                                // lưu ý là biểu mẫu đăng nhập dùng method post
                                                                                                                                // nên phải dùng $_POST để lấy dữ liệu  
    {
        $ky_danh=$_POST['ky_danh'];                                                                       // lấy thông tin ký danh bằng cách viết $_POST['ky_danh']
                                                                                                                                // (lưu ý phần name trong form đăng nhập , phần name này được
                                                                                                                                //  dùng để biết vị trí lấy dữ liệu )

        $ky_danh=str_replace("'","",$ky_danh);                                                            // thay thế dấu ' thành  rỗng trong ký danh
        $ky_danh=str_replace('"',"",$ky_danh);                                                            // thay thế dấu " thành  rỗng trong ký danh
                                                                                                                                // phần ký danh mình không muốn xuất hiện 2 dấu này
                                                                                                                                // vì sẽ làm câu truy vấn sql bị sai           
      
        $mat_khau=md5($_POST['mat_khau']);                                                          // lấy thông tin mật khẩu bằng cách viết $_POST['mat_khau'] , sau đó 
                                                                                                                                // mã hóa md5 ( vì phần mật khẩu trong cơ sở dữ liệu mình mã hóa md5
                                                                                                                                // 2 lần )
        $mat_khau=md5($mat_khau);                                                                          // mã hóa md5 1 lần nữa 
      
        $tv="select count(*) from thong_tin_quan_tri where                                                  // thực thiện truy vấn vào bảng 'thong_tin_quan_tri' , ở đây dùng
                                                ky_danh='$ky_danh' and mat_khau='$mat_khau' ";          // lệnh count ( nghĩa là chỉ đếm số dòng dữ liệu )
                                                                                                                                        // câu truy vấn này sẽ tìm dòng dữ lệu có ký danh và mật khẩu
                                                                                                                                        // khớp với thông tin nhập vào
                                                                                                                                        // nếu nhập đúng thì kết quả truy vấn ở ô đầu tiên sẽ
                                                                                                                                        // có giá trị là 1
        $tv_1=mysql_query($tv);
        $tv_2=mysql_fetch_array($tv_1);
        if($tv_2[0]==1)                                                                                                        // trường hợp đếm kết quả dữ liệu trả về có 1 dòng
                                                                                                                                        // nghĩa là nhập đúng ký danh và mật khẩu
        {
            $_SESSION['ky_danh']=$ky_danh;                                                                    // khởi tạo session 'ky_danh' với giá trị là ký danh nhập vào
            $_SESSION['mat_khau']=$mat_khau;                                                                // khởi tạo session 'mat_khau' với giá trị là mật khẩu nhập vào
                                                                                                                                       // (mật khẩu này đã được mã hóa md5 2 lần)
                                                                                                                                       // 2 session này được dùng để xác định giá trị của biến
                                                                                                                                       // 'xac_dinh_dang_nhap' 
        }
        else
        {
            thong_bao_abc("Thông tin nhập vào không đúng");                                              // trường hợp đăng nhập sai thì hiển thị thông báo
                                                                                                                                       // "Thông tin nhập vào không đúng"      
        }
        trang_truoc_abc();                                                                                                   // quay trở về trang trước sau khi đăng nhập quản trị
    }
  
    if(isset($_SESSION['ky_danh']))                                                                                //  kiểm tra sự tồn tại của session 'ky_danh'
                                                                                                                                      // vì chỉ khi session này tồn tại thì biến 'xac_dinh_dang_nhap'
                                                                                                                                      // mới có thể có giá trị là 'co'   
    {
        $ky_danh=$_SESSION['ky_danh'];                                                                       // lấy thông kin ký danh từ session 'ky_danh'
        $mat_khau=$_SESSION['mat_khau'];                                                                   // lấy thông tin mật khẩu từ session 'mat_khau'    
                                                                                                                                      // chỉ khi 2 session này có giá trị đúng thì câu truy vấn phái dưới
                                                                                                                                      // mới trả về 1 dòng dữ liệu (nghĩa là đăng nhập đúng thông tin)   
   
        $tv="select count(*) from thong_tin_quan_tri where                                                // câu lệnh này tương tự như lệnh select count phía trên nhưng
                                                     ky_danh='$ky_danh' and mat_khau='$mat_khau' ";    // ký danh và mật khẩu lấy từ 2 biến session
        $tv_1=mysql_query($tv);
        $tv_2=mysql_fetch_array($tv_1);
        if($tv_2[0]==1)                                                                                                       // trường hợp kiểm tra trùng khớp ký danh , mật khẩu
                                                                                                                                       // nghĩa là đăng nhập đúng ký danh , mật khẩu 
        {
            $xac_dinh_dang_nhap="co";                                                                                // biến 'xac_dinh_dang_nhap' sẽ có giá trị là 'co'
        }
    }
?>

- Sau đó bạn vào trang quản trị (truy cập vào đường dẫn http://localhost/ban_hang/quan_tri) thì sẽ thấy có khung đăng nhập như hình sau :



- Trường hợp bạn đăng nhập sai thì sẽ xuất hiện thông báo sau :



- Trường hợp bạn đăng nhập thành công thì sẽ xuất hiện ra dòng chữ đã đăng nhập (ký danh là 'admin' , mật khẩu là 'admin' )