Hướng dẫn code login trong PHP

01:46:57 - 12/05/2018 - admin

Login là một chức năng mà người học PHP nào cũng cần phải nắm dõ, sau khi biết cơ bản về lập trình PHP, các bạn có thể dễ dàng để làm chức năng này. Hôm nay DevPro Việt Nam sẽ cung cấp cho bạn các bước để code login trong PHP.

 

  • Bao gồm 9 bước cơ bản:
  • Tạo database và một bảng lưu danh sách người dùng. Việc đăng nhập có thành công hay không phụ thuộc vào bảng này.
  • Tạo folder và các file nền tảng.
  • Kết nối database
  • Tạo form thêm người dùng.
  • Lấy dữ liệu từ form thêm người dùng và insert vào database.
  • Tạo một form đăng nhập.
  • Lấy thông tin người dùng nhập từ form.
  • So sánh dữ liệu người dùng nhập và xử lý.
  • Thực hiện chức năng đăng xuất.

Bước 1: Tạo database

Trước hết, để có thể lưu dữ liệu tiếng Việt, tôi tạo một database có tên là ‘devprovn’ và chọn bảng mã là unicode_utf8_ci, danh sách các tài khoản sẽ được lưu. Trong database này tôi tạo 1 bảng tên là ‘user’ để lưu thông tin của các user. Bảng này có các trường sau:

id: dữ liệu kiểu int, là khóa chính, tự động tăng. Trường này sẽ lưu id của người dùng.

user_name : kiểu varchar(50), trường này sẽ lưu tài khoản đăng nhập của người dùng.

password: kiểu text, trường này sẽ lưu mật khẩu của người dùng.

full_name: kiểu varchar(100), trường này sẽ lưu họ tên của người dùng.

Sau khi tạo bảng xong, cấu trúc bảng này sẽ như sau:

bang-user-chuc-nang-dang-nhap-php-mysql

Bước 2: Tạo folder và các file nền tảng:

Tạo thư mục mới có tên ‘xampp\htdocs\’ để thực hiện kết nối với database (tùy vào lúc cài đặt xampp bạn cài đặt vào ổ C,D,… mà bạn đến đường dẫn thư mục cho phù hợp, ví dụ tôi cài trên ổ C thì tôi sẽ vào: C:\xampp\htdocs ). Thư mục ‘htdocs’ tôi tạo một forder tên là ‘devprovn’ , trong thư mục ‘devprovn’ tôi tạo các file sau file ‘index.php’ , ‘register.php’ , ‘login.php’, ‘admin.php’.

Trong đó:

  • Index.php: là trang chủ, thực hiện việc xử lý, tính toán, và lấy dữ liệu cho phù hợp.
  • Register.php: là trang để đăng ký thành viên.
  • Login.php: là trang đăng nhập, nếu người dùng đăng nhập không thành công hoặc chưa đăng nhập thì index.php sẽ gọi login.php vào.
  • Admin.php: là trang sẽ được gọi vào index.php khi đã đăng nhập thành công

Sau khi tạo thư mục và các file thành công, sẽ có cấu trúc như sau:

cau-truc-file-dang-nhap-php-mysql

Bước 3: Thực hiện kết nối database

Kết nối với database khá đơn giản, mọi thao tác xử lý chúng ta đều thực hiên trên trang index.php

Thực hiện việc kết nối tới database với lệnh sau:

mysqli_connect(‘$_host_name’,’$_user_name_db’,’$_pass_login_db’,’$_database_name’);

Trong đó:

  • $_host_name: là tên host của bạn. Nếu cài localhost thì bạn sẽ đặt trường này là localhost (tên máy chủ hoặc địa chỉ ip máy chủ).
  • $_user_name_db: tài khoản đăng nhập database (nếu cài xampp, tài khoản mặc định là ‘root’).
  • $_pass_login_db: mật khẩu đăng nhập database (mặc định xampp không đặt mật khẩu đăng nhập, nên trường này bạn để trống).
  • $_database_name: tên database mà bạn cần thao tác.

Việc kết nối này sẽ gán vào 1 biến là $connect, trong PHP bất kỳ dữ liệu kiểu gì bạn cũng có thể gán vào một biến được.

$connect = mysqli_connect(‘localhost’,’root’,”,’devpro’);

 

Tiếp theo chọn việc truy vấn này có thể đọc và hiểu tiếng Việt, viết tiếp :

 

mysqli_set_charset($connect,”utf8″);

 

Trong đó:

  • mysqli_set_charset() : là hàm chọn bảng mã, hàm này có 2 tham số truyền vào
  • $connect: việc truy vấn đến database nào
  • utf8: bảng mã có thể viết tiếng Việt

Sau khi hoàn thành 2 câu lệnh trên, hiển thị file index.php như sau:

 

<?php

$connect = mysqli_connect(‘localhost’,’root’,”,’devpro’);

mysqli_set_charset($connect,”utf8″);

?>

<!DOCTYPE html>

<html>

<head>

<title>Devpro.edu.vn</title>

<meta charset=”utf-8″>

<link rel=”stylesheet” href=”https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css”>

<script src=”https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js”></script>

<script src=”https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js”></script>

</head>

<body>

</body>

</html>

<?php

$connect = mysqli_connect(‘localhost’,’root’,”,’devpro’);

mysqli_set_charset($connect,”utf8″);

?>

<!DOCTYPE html>

<html>

<head>

<title>Devpro.edu.vn</title>

<meta charset=”utf-8″>

<link rel=”stylesheet” href=”https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css”>

<script src=”https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js”></script>

<script src=”https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js”></script>

</head>

<body>

</body>

</html>

Sau khi thực hiện lệnh trên, các câu lệnh sẽ thực hiện theo thứ tự lần lượt là ‘localhost’, tài khoản đăng nhập là ‘root’, không có mật khẩu, và database chọn để thao tác là ‘devpro’.

Ở phần html ở dưới có link css,js của bootstrap và jquery để tạo giao diện bắt mắt hơn, bạn không cần link những file này vào cũng không ảnh hưởng gì hết.

Bước 4: Tạo form thêm người dùng:

Form sẽ viết ở trang: register.php

Trong bất cứ một trang web nào nếu muốn truy cập bạn cần đăng kí tài khoản trước để đăng nhập. Khi bạn đăng kí thành công tài khoản của bạn sẽ được insert vào database.

Đầu tiên tạo một form đăng nhập với method=”post” (dữ liệu gửi đi dạng post), action=”” (địa chỉ mà dữ liệu sẽ gửi đến: trang hiện tại).

  • ‘name’ ở trong ô input: dữ liệu gửi đi sẽ được gán vào biến $_POST[“name”]
  • ‘type’: kiểu dữ liệu nhập vào ô input (text: dạng text, password: dạng mật khẩu,submit: dạng nút gửi dữ liệu đi – nút kích hoạt form,…)
  • ‘required’: bắt buộc phải nhập

Trong form sẽ có một ô nhập tài khoản (user_name), một ô nhập mật khẩu (pass1), một ô nhập lại mật khẩu (pass2), một ô nhập họ tên đầy đủ (full_name), và một nút submit để gửi dữ liệu đi:

 

Cụ thể ở trang register.php sẽ viết form đăng ký như sau:

 

<form action=”” method=”post”>

<div class=”col-md-6 col-md-offset-3″>

<div class=”panel panel-primary”>

   <div class=”panel-body”>

    <div class=”form-group”>

<label for=”email”>Email:</label>

<input type=”text” class=”form-control” name=”user_name” placeholder=”Nhập tên đăng nhập…”>

</div>

 

<div class=”form-group”>

<label for=”pwd”>’Mật khẩu: ‘</label>

<input&nbsp;required type=”password” class=”form-control” name=”pass1″ placeholder=”Nhập mật khẩu…”>

</div>

 

<div class=”form-group”>

<label for=”pwd”>’Nhập lại mật khẩu:'</label>

<input&nbsp;required type=”password” class=”form-control” name=”pass2″ placeholder=”Nhập lại mật khẩu…”>

</div>

<div class=”form-group”>

<label for=”email”>’Tên đầy đủ của bạn:'</label>

<input type=”text” class=”form-control” name=”full_name” placeholder=”Nhập tên đầy đủ của bạn…”>

</div>

<button type=”submit” class=”btn btn-default” name=”dangky”>’Đăng ký'</button>

   </div>

</div>

</div>

</form>

 

<form action=”” method=”post”>

<div class=”col-md-6 col-md-offset-3″>

<div class=”panel panel-primary”>

   <div class=”panel-body”>

    <div class=”form-group”>

<label for=”email”>Email:</label>

<input type=”text” class=”form-control” name=”user_name” placeholder=”Nhập tên đăng nhập…”>

</div>

<div class=”form-group”>

<label for=”pwd”>’Mật khẩu: ‘</label>

<input&nbsp;required type=”password” class=”form-control” name=”pass1″ placeholder=”Nhập mật khẩu…”>

</div>

<div class=”form-group”>

<label for=”pwd”>’Nhập lại mật khẩu:'</label>

<input&nbsp;required type=”password” class=”form-control” name=”pass2″ placeholder=”Nhập lại mật khẩu…”>

</div>

<div class=”form-group”>

<label for=”email”>’Tên đầy đủ của bạn:'</label>

<input type=”text” class=”form-control” name=”full_name” placeholder=”Nhập tên đầy đủ của bạn…”>

</div>

<button type=”submit” class=”btn btn-default” name=”dangky”>’Đăng ký'</button>

   </div>

</div>

</div>

</form>

Sau đó ở trang index.php tạo một nút nhấn, khi nhấn vào nút này, gọi trang register.php vào (gọi form đăng ký vào).

Trang index.php tôi viết tiếp như sau:

<?php

$connect = mysqli_connect(‘localhost’,’root’,”,’devpro’);

mysqli_set_charset($connect,”utf8″);

?>

<!DOCTYPE html>

<html>

<head>

<title>Devpro.edu.vn</title>

<meta charset=”utf-8″>

<link rel=”stylesheet” href=”https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css”>

<script src=”https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js”></script>

<script src=”https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js”></script>

</head>

<body>

<div class=”container”>

               //tạo nút nhấn: truyền biến $_GET[“page”]=”dangky” lên URL

<div class=”row”>

<a href=”index.php?page=dangky” class=”btn btn-success”>’Đăng ký thành viên'</a>

</div>

 

<div class=”row”>

                       //kiểm tra nếu tồn tại biến $_GET[“page”] = “dangky” thì gọi register.php vào

<?php

if(isset($_GET[“page”])&&$_GET[“page”]==”dangky”)

include “register.php”;

?>

</div>

</div>

</body>

</html>

 

<?php

$connect = mysqli_connect(‘localhost’,’root’,”,’devpro’);

mysqli_set_charset($connect,”utf8″);

?>

<!DOCTYPE html>

<html>

<head>

<title>Devpro.edu.vn</title>

<meta charset=”utf-8″>

<link rel=”stylesheet” href=”https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css”>

<script src=”https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js”></script>

<script src=”https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js”></script>

</head>

<body>

<div class=”container”>

               //tạo nút nhấn: truyền biến $_GET[“page”]=”dangky” lên URL

<div class=”row”>

<a href=”index.php?page=dangky” class=”btn btn-success”>’Đăng ký thành viên'</a>

</div>

<div class=”row”>

                       //kiểm tra nếu tồn tại biến $_GET[“page”] = “dangky” thì gọi register.php vào

<?php

if(isset($_GET[“page”])&&$_GET[“page”]==”dangky”)

include “register.php”;

?>

</div>

</div>

</body>

</html>

Khi nhấn vào nút “Đăng ký thành viên”, biến $_GET[“page”] = “dangky” sẽ được truyền lên URL. Tôi thực hiện kiểm tra, nếu như có tồn tại $_GET[“page”] = “dangky” thì tôi sẽ gọi trang đăng ký vào.

Bước 5: lấy dữ liệu người dùng thêm từ form đăng nhập, kiểm tra , và insert vào database:

Khi người dùng nhấn đăng ký thì dữ liệu sẽ được gửi đi theo phương thức post, vì method của form đã đặt là post.

Lấy dữ liệu người dùng nhập và insert vào database bằng các lệnh sau ở trang index.php:

<?php

$connect = mysqli_connect(‘localhost’,’root’,”,’devpro’);

mysqli_set_charset($connect,”utf8″);

?>

<!DOCTYPE html>

<html>

<head>

<title>Devpro.edu.vn</title>

<meta charset=”utf-8″>

<link rel=”stylesheet” href=”https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css”>

<script src=”https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js”></script>

<script src=”https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js”></script>

</head>

<body>

<?php

if(isset($_POST[“dangky”])){

$user_name = $_POST[“user_name”];

$pass1 = $_POST[“pass1”];

$pass2 = $_POST[“pass2”];

$name = $_POST[“full_name”];

//kiểm tra xem 2 mật khẩu có giống nhau hay không:

if($pass1!=$pass2){

header(“location:index.php?page=dangky”);

setcookie(“error”, “Đăng ký không thành công!”, time()+1, “/”,””, 0);

}

else{

$pass = md5($pass1);

mysqli_query($connect,”

insert into user (user_name,password,full_name)

values (‘$user_name’,’$pass’,’$name’)

“);

header(“location:index.php?page=dangky”);

setcookie(“success”, “Đăng ký thành công!”, time()+1, “/”,””, 0);

}

}

?>

<div class=”container”>

<div class=”row”>

<a href=”index.php?page=dangky” class=”btn btn-success”>’Đăng ký'</a>

<a href=”index.php” class=”btn btn-info”>’Trang chủ'</a>

</div>

<div class=”row”>

<!– ‘start nếu xảy ra lỗi thì hiện thông báo:’ –>

<?php

if(isset($_COOKIE[“error”])){

?>

<div class=”alert alert-danger”>

  <strong>’Có lỗi!'</strong> <?php echo $_COOKIE[“error”]; ?>

</div>

<?php } ?>

<!– ‘end nếu xảy ra lỗi thì hiện thông báo:’ –>

 

<!– ‘start nếu thành công thì hiện thông báo:’ –>

<?php

if(isset($_COOKIE[“success”])){

?>

<div class=”alert alert-success”>

  <strong>’Chúc mừng!'</strong> <?php echo $_COOKIE[“success”]; ?>

</div>

<?php } ?>

<!– ‘end nếu thành công thì hiện thông báo:’ –>

<?php

if(isset($_GET[“page”])&&$_GET[“page”]==”dangky”)

include “register.php”;

?>

</div>

</div>

</body>

</html>

 

<?php

$connect = mysqli_connect(‘localhost’,’root’,”,’devpro’);

mysqli_set_charset($connect,”utf8″);

?>

<!DOCTYPE html>

<html>

<head>

<title>Devpro.edu.vn</title>

<meta charset=”utf-8″>

<link rel=”stylesheet” href=”https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css”>

<script src=”https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js”></script>

<script src=”https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js”></script>

</head>

<body>

<?php

if(isset($_POST[“dangky”])){

$user_name = $_POST[“user_name”];

$pass1 = $_POST[“pass1”];

$pass2 = $_POST[“pass2”];

$name = $_POST[“full_name”];

//kiểm tra xem 2 mật khẩu có giống nhau hay không:

if($pass1!=$pass2){

header(“location:index.php?page=dangky”);

setcookie(“error”, “Đăng ký không thành công!”, time()+1, “/”,””, 0);

}

else{

$pass = md5($pass1);

mysqli_query($connect,”

insert into user (user_name,password,full_name)

values (‘$user_name’,’$pass’,’$name’)

“);

header(“location:index.php?page=dangky”);

setcookie(“success”, “Đăng ký thành công!”, time()+1, “/”,””, 0);

}

}

?>

<div class=”container”>

<div class=”row”>

<a href=”index.php?page=dangky” class=”btn btn-success”>’Đăng ký'</a>

<a href=”index.php” class=”btn btn-info”>’Trang chủ'</a>

</div>

<div class=”row”>

<!– ‘start nếu xảy ra lỗi thì hiện thông báo:’ –>

<?php

if(isset($_COOKIE[“error”])){

?>

<div class=”alert alert-danger”>

  <strong>’Có lỗi!'</strong> <?php echo $_COOKIE[“error”]; ?>

</div>

<?php } ?>

<!– ‘end nếu xảy ra lỗi thì hiện thông báo:’ –>

<!– ‘start nếu thành công thì hiện thông báo:’ –>

<?php

if(isset($_COOKIE[“success”])){

?>

<div class=”alert alert-success”>

  <strong>’Chúc mừng!'</strong> <?php echo $_COOKIE[“success”]; ?>

</div>

<?php } ?>

<!– ‘end nếu thành công thì hiện thông báo:’ –>

<?php

if(isset($_GET[“page”])&&$_GET[“page”]==”dangky”)

include “register.php”;

?>

</div>

</div>

</body>

</html>

Trong đó:

  • header(“location:index.php?page=dangky”) : là chuyển hướng trang sang trang index.php?page=dangky
  • hàm isset(): là hàm kiểm tra một biến có tồn tại hay không.
  • include() : là hàm triệu gọi file

lệnh thực hiện truy vấn: mysqli_query($connect,” các câu lệnh truy vấn “);

Sử dụng hàm setcookie() để tạo ra một biến thông báo tồn tại trong 1 giây, để hiện các thông báo có thực hiện thành công hay không.

md5(): là hàm mã hóa một chuỗi thành 1 dãy kí tự gồm 32 ký tự.

Ví dụ đăng ký 1 tài khoản là devpro.edu.vn mật khẩu là 123, tên là Nguyễn Văn Đức. Lúc này dữ liệu trong database sẽ như sau:

dang-ky-thanh-vien-php-mysql

Như các bạn thấy, vì đã mã hóa chuỗi 123 theo md5 nên chuỗi 123 trở thành một chuỗi mới rất khó đọc như trên, trong database những dữ liệu nhạy cảm cần được mã hóa.

Bước 6: Tạo một form đăng nhập:

Sau khi đăng ký thành công chúng ta sẽ thực hiện việc đăng nhập:

Ở trang login.php tôi tạo một form như sau:

<form action=”” method=”post”>

<div class=”col-md-6 col-md-offset-3″>

<div class=”alert alert-info”>

 <strong>’Trang đăng nhập'</strong>

</div>

<div class=”panel panel-primary”>

   <div class=”panel-body”>

    <div class=”form-group”>

<label for=”email”>’Tài khoản:'</label>

<input type=”text” class=”form-control” name=”user_name_lg” placeholder=”Nhập tên đăng nhập…”>

</div>

 

<div class=”form-group”>

<label for=”pwd”>’Mật khẩu:'</label>

<input type=”password” class=”form-control” name=”passlg” placeholder=”Nhập mật khẩu…” required>

</div>

 

<button type=”submit” class=”btn btn-default” name=”dangnhap”>’Đăng nhập'</button>

   </div>

</div>

</div>

</form>

 

<form action=”” method=”post”>

<div class=”col-md-6 col-md-offset-3″>

<div class=”alert alert-info”>

 <strong>’Trang đăng nhập'</strong>

</div>

<div class=”panel panel-primary”>

   <div class=”panel-body”>

    <div class=”form-group”>

<label for=”email”>’Tài khoản:'</label>

<input type=”text” class=”form-control” name=”user_name_lg” placeholder=”Nhập tên đăng nhập…”>

</div>

<div class=”form-group”>

<label for=”pwd”>’Mật khẩu:'</label>

<input type=”password” class=”form-control” name=”passlg” placeholder=”Nhập mật khẩu…” required>

</div>

<button type=”submit” class=”btn btn-default” name=”dangnhap”>’Đăng nhập'</button>

   </div>

</div>

</div>

</form>

Bước  7,8: Lấy dữ liệu từ form đăng nhập và xử lý:

Trang index.php viết tiếp như sau:

<?php

$connect = mysqli_connect(‘localhost’,’root’,”,’devpro’);

mysqli_set_charset($connect,”utf8″);

session_start();

?>

<!DOCTYPE html>

<html>

<head>

<title>Devpro.edu.vn</title>

<meta charset=”utf-8″>

<link rel=”stylesheet” href=”https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css”>

<script src=”https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js”></script>

<script src=”https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js”></script>

</head>

<body>

<!– ‘start thực hiện kiểm tra dữ liệu người dùng đăng ký’ –>

<?php

if(isset($_POST[“dangky”])){

$user_name = $_POST[“user_name”];

$pass1 = $_POST[“pass1”];

$pass2 = $_POST[“pass2”];

$name = $_POST[“full_name”];

//kiểm tra xem 2 mật khẩu có giống nhau hay không:

if($pass1!=$pass2){

header(“location:index.php?page=dangky”);

setcookie(“error”, “Đăng ký không thành công!”, time()+1, “/”,””, 0);

}

else{

$pass = md5($pass1);

mysqli_query($connect,”

insert into user (user_name,password,full_name)

values (‘$user_name’,’$pass’,’$name’)

“);

header(“location:index.php?page=dangky”);

setcookie(“success”, “Đăng ký thành công!”, time()+1, “/”,””, 0);

}

}

 

?>

<!– ‘end thực hiện kiểm tra dữ liệu người dùng đăng ký’ –>

<!– ‘start thực hiện kiểm tra dữ liệu người dùng nhập ở form đăng nhập’ –>

<?php

if(isset($_POST[“dangnhap”])){

$tk = $_POST[“user_name_lg”];

$mk = md5($_POST[“passlg”]);

$rows = mysqli_query($connect,”

select * from user where user_name = ‘$tk’ and password = ‘$mk’

“);

$count = mysqli_num_rows($rows);

if($count==1){

$_SESSION[“loged”] = true;

header(“location:index.php”);

setcookie(“success”, “Đăng nhập thành công!”, time()+1, “/”,””, 0);

}

else{

header(“location:index.php”);

setcookie(“error”, “Đăng nhập không thành công!”, time()+1, “/”,””, 0);

}

}

?>

<!– ‘end thực hiện kiểm tra dữ liệu người dùng nhập ở form đăng nhập’ –>

<div class=”container”>

<div class=”row”>

<a href=”index.php?page=dangky” class=”btn btn-success”>’Đăng ký'</a>

<a href=”index.php” class=”btn btn-info”>’Trang chủ'</a>

<?php if(isset($_SESSION[“loged”])) echo “<a href=’index.php?act=logout’ class=’btn btn-danger’>Đăng xuất</a>”; ?>

</div>

 

<div class=”row”>

<!– ‘start nếu xảy ra lỗi thì hiện thông báo:’ –>

<?php

if(isset($_COOKIE[“error”])){

?>

<div class=”alert alert-danger”>

  <strong>’Có lỗi!'</strong> <?php echo $_COOKIE[“error”]; ?>

</div>

<?php } ?>

<!– ‘end nếu xảy ra lỗi thì hiện thông báo:’ –>

 

<!– ‘start nếu thành công thì hiện thông báo:’ –>

<?php

if(isset($_COOKIE[“success”])){

?>

<div class=”alert alert-success”>

  <strong>’Chúc mừng!'</strong> <?php echo $_COOKIE[“success”]; ?>

</div>

<?php } ?>

<!– ‘end nếu thành công thì hiện thông báo:’ –>

<?php

//nếu tồn tại biến $_GET[“page”] = “dangky” thì gọi trang đăng ký:

if(isset($_GET[“page”])&&$_GET[“page”]==”dangky”)

include “register.php”;

//nếu không tồn tại biến $_GET[“page”] = “dangky”

if(!isset($_GET[“page”])){

//nếu tồn tại biến session $_SESSION[“loged”] thì gọi nội dung trang admin.php vào

if(isset($_SESSION[“loged”]))

include “admin.php”;

//nếu không tồn tại biến session $_SESSION[“loged”] thì gọi nội dung trang login.php vào

else

include “login.php”;

}

?>

</div>

 

</div>

</body>

</html>

 

 

<?php

$connect = mysqli_connect(‘localhost’,’root’,”,’devpro’);

mysqli_set_charset($connect,”utf8″);

session_start();

?>

<!DOCTYPE html>

<html>

<head>

<title>Devpro.edu.vn</title>

<meta charset=”utf-8″>

<link rel=”stylesheet” href=”https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css”>

<script src=”https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js”></script>

<script src=”https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js”></script>

</head>

<body>

<!– ‘start thực hiện kiểm tra dữ liệu người dùng đăng ký’ –>

<?php

if(isset($_POST[“dangky”])){

$user_name = $_POST[“user_name”];

$pass1 = $_POST[“pass1”];

$pass2 = $_POST[“pass2”];

$name = $_POST[“full_name”];

//kiểm tra xem 2 mật khẩu có giống nhau hay không:

if($pass1!=$pass2){

header(“location:index.php?page=dangky”);

setcookie(“error”, “Đăng ký không thành công!”, time()+1, “/”,””, 0);

}

else{

$pass = md5($pass1);

mysqli_query($connect,”

insert into user (user_name,password,full_name)

values (‘$user_name’,’$pass’,’$name’)

“);

header(“location:index.php?page=dangky”);

setcookie(“success”, “Đăng ký thành công!”, time()+1, “/”,””, 0);

}

}

?>

<!– ‘end thực hiện kiểm tra dữ liệu người dùng đăng ký’ –>

<!– ‘start thực hiện kiểm tra dữ liệu người dùng nhập ở form đăng nhập’ –>

<?php

if(isset($_POST[“dangnhap”])){

$tk = $_POST[“user_name_lg”];

$mk = md5($_POST[“passlg”]);

$rows = mysqli_query($connect,”

select * from user where user_name = ‘$tk’ and password = ‘$mk’

“);

$count = mysqli_num_rows($rows);

if($count==1){

$_SESSION[“loged”] = true;

header(“location:index.php”);

setcookie(“success”, “Đăng nhập thành công!”, time()+1, “/”,””, 0);

}

else{

header(“location:index.php”);

setcookie(“error”, “Đăng nhập không thành công!”, time()+1, “/”,””, 0);

}

}

?>

<!– ‘end thực hiện kiểm tra dữ liệu người dùng nhập ở form đăng nhập’ –>

<div class=”container”>

<div class=”row”>

<a href=”index.php?page=dangky” class=”btn btn-success”>’Đăng ký'</a>

<a href=”index.php” class=”btn btn-info”>’Trang chủ'</a>

<?php if(isset($_SESSION[“loged”])) echo “<a href=’index.php?act=logout’ class=’btn btn-danger’>Đăng xuất</a>”; ?>

</div>

<div class=”row”>

<!– ‘start nếu xảy ra lỗi thì hiện thông báo:’ –>

<?php

if(isset($_COOKIE[“error”])){

?>

<div class=”alert alert-danger”>

  <strong>’Có lỗi!'</strong> <?php echo $_COOKIE[“error”]; ?>

</div>

<?php } ?>

<!– ‘end nếu xảy ra lỗi thì hiện thông báo:’ –>

<!– ‘start nếu thành công thì hiện thông báo:’ –>

<?php

if(isset($_COOKIE[“success”])){

?>

<div class=”alert alert-success”>

  <strong>’Chúc mừng!'</strong> <?php echo $_COOKIE[“success”]; ?>

</div>

<?php } ?>

<!– ‘end nếu thành công thì hiện thông báo:’ –>

<?php

//nếu tồn tại biến $_GET[“page”] = “dangky” thì gọi trang đăng ký:

if(isset($_GET[“page”])&&$_GET[“page”]==”dangky”)

include “register.php”;

//nếu không tồn tại biến $_GET[“page”] = “dangky”

if(!isset($_GET[“page”])){

//nếu tồn tại biến session $_SESSION[“loged”] thì gọi nội dung trang admin.php vào

if(isset($_SESSION[“loged”]))

include “admin.php”;

//nếu không tồn tại biến session $_SESSION[“loged”] thì gọi nội dung trang login.php vào

else

include “login.php”;

}

?>

</div>

</div>

</body>

</html>

Trong đó bạn cần chú ý đến lệnh: session_start() khai báo ngay đầu file để có thể sử dụng biến session.

Thực hiện kiểm tra, nếu thông tin người dùng nhập khớp với thông tin trong database sẽ gán $_SESSION[“loged”] = true , kiểm tra biến này ở dưới, nếu biến này tồn tại sẽ gọi admin.php không thì gọi trang đăng nhập.

Trang admin.php viết như sau:

<?php

if(!isset($_SESSION[“loged”])){

header(“location:index.php”);

setcookie(“error”, “Bạn chưa đăng nhập!”, time()+1, “/”,””, 0);

}

else

echo “Chào mừng bạn đến với devpro.edu.vn”;

?>

 

<?php

if(!isset($_SESSION[“loged”])){

header(“location:index.php”);

setcookie(“error”, “Bạn chưa đăng nhập!”, time()+1, “/”,””, 0);

}

else

echo “Chào mừng bạn đến với devpro.edu.vn”;

?>

Bạn không thể vào trang admin khi chưa đăng nhập.

 

Bước 9: Thực hiện đăng xuất:

Để đăng xuất phải tạo một nút (là 1 thẻ a), thẻ a có href=”index.php&act=logout”. Sau đó được kiểm tra, nếu biến $_GET[“act”] tồn tại và $_GET[“act”] thì tiến hành đăng xuất (bằng cách hủy biến $_SESSION[“loged”]) sau đó tải lại trang và đưa ra thông báo.

 

Trang index.php tôi viết tiếp như sau:

 

PHP

 

<?php

$connect = mysqli_connect(‘localhost’,’root’,”,’devpro’);

mysqli_set_charset($connect,”utf8″);

session_start();

?>

<!DOCTYPE html>

<html>

<head>

<title>Devpro.edu.vn</title>

<meta charset=”utf-8″>

<link rel=”stylesheet” href=”https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css”>

<script src=”https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js”></script>

<script src=”https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js”></script>

</head>

<body>

<!– ‘start thực hiện kiểm tra dữ liệu người dùng đăng ký’ –>

<?php

if(isset($_POST[“dangky”])){

$user_name = $_POST[“user_name”];

$pass1 = $_POST[“pass1”];

$pass2 = $_POST[“pass2”];

$name = $_POST[“full_name”];

//kiểm tra xem 2 mật khẩu có giống nhau hay không:

if($pass1!=$pass2){

header(“location:index.php?page=dangky”);

setcookie(“error”, “Đăng ký không thành công!”, time()+1, “/”,””, 0);

}

else{

$pass = md5($pass1);

mysqli_query($connect,”

insert into user (user_name,password,full_name)

values (‘$user_name’,’$pass’,’$name’)

“);

header(“location:index.php?page=dangky”);

setcookie(“success”, “Đăng ký thành công!”, time()+1, “/”,””, 0);

}

}

 

?>

<!– ‘end thực hiện kiểm tra dữ liệu người dùng đăng ký’ –>

 

<!– ‘start thực hiện kiểm tra dữ liệu người dùng nhập ở form đăng nhập’ –>

<?php

if(isset($_POST[“dangnhap”])){

$tk = $_POST[“user_name_lg”];

$mk = md5($_POST[“passlg”]);

$rows = mysqli_query($connect,”

select * from user where user_name = ‘$tk’ and password = ‘$mk’

“);

$count = mysqli_num_rows($rows);

if($count==1){

$_SESSION[“loged”] = true;

header(“location:index.php”);

setcookie(“success”, “Đăng nhập thành công!”, time()+1, “/”,””, 0);

}

else{

header(“location:index.php”);

setcookie(“error”, “Đăng nhập không thành công!”, time()+1, “/”,””, 0);

}

}

?>

<!– ‘end thực hiện kiểm tra dữ liệu người dùng nhập ở form đăng nhập’ –>

 

<!– ‘start thực hiện đăng xuất’ –>

<?php

if(isset($_GET[“act”])&&$_GET[“act”]==”logout”){

unset($_SESSION[“loged”]);

header(“location:index.php”);

setcookie(“success”, “Bạn đã đăng xuất!”, time()+1, “/”,””, 0);

}

?>

<!– end thực hiện đăng xuất –>

<div class=”container”>

<div class=”row”>

<a href=”index.php?page=dangky” class=”btn btn-success”>Đăng ký</a>

<a href=”index.php” class=”btn btn-info”>Trang chủ</a>

<?php if(isset($_SESSION[“loged”])) echo “<a href=’index.php?act=logout’ class=’btn btn-danger’>Đăng xuất</a>”; ?>

</div>

<div class=”row”>

<!– ‘start nếu xảy ra lỗi thì hiện thông báo:’ –>

<?php

if(isset($_COOKIE[“error”])){

?>

<div class=”alert alert-danger”>

  <strong>’Có lỗi!'</strong> <?php echo $_COOKIE[“error”]; ?>

</div>

<?php } ?>

<!– ‘end nếu xảy ra lỗi thì hiện thông báo:’ –>

 

<!– ‘start nếu thành công thì hiện thông báo:’ –>

<?php

if(isset($_COOKIE[“success”])){

?>

<div class=”alert alert-success”>

  <strong>’Chúc mừng!'</strong> <?php echo $_COOKIE[“success”]; ?>

</div>

<?php } ?>

<!– ‘end nếu thành công thì hiện thông báo:’ –>

<?php

//nếu tồn tại biến $_GET[“page”] = “dangky” thì gọi trang đăng ký:

if(isset($_GET[“page”])&&$_GET[“page”]==”dangky”)

include “register.php”;

//nếu không tồn tại biến $_GET[“page”] = “dangky”

if(!isset($_GET[“page”])){

//nếu tồn tại biến session $_SESSION[“loged”] thì gọi nội dung trang admin.php vào

if(isset($_SESSION[“loged”]))

include “admin.php”;

//nếu không tồn tại biến session $_SESSION[“loged”] thì gọi nội dung trang login.php vào

else

include “login.php”;

}

?>

</div>

</div>

</body>

</html>

 

<?php

$connect = mysqli_connect(‘localhost’,’root’,”,’devpro’);

mysqli_set_charset($connect,”utf8″);

session_start();

?>

<!DOCTYPE html>

<html>

<head>

<title>Devpro.edu.vn</title>

<meta charset=”utf-8″>

<link rel=”stylesheet” href=”https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css”>

<script src=”https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js”></script>

<script src=”https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js”></script>

</head>

<body>

<!– ‘start thực hiện kiểm tra dữ liệu người dùng đăng ký’ –>

<?php

if(isset($_POST[“dangky”])){

$user_name = $_POST[“user_name”];

$pass1 = $_POST[“pass1”];

$pass2 = $_POST[“pass2”];

$name = $_POST[“full_name”];

//kiểm tra xem 2 mật khẩu có giống nhau hay không:

if($pass1!=$pass2){

header(“location:index.php?page=dangky”);

setcookie(“error”, “Đăng ký không thành công!”, time()+1, “/”,””, 0);

}

else{

$pass = md5($pass1);

mysqli_query($connect,”

insert into user (user_name,password,full_name)

values (‘$user_name’,’$pass’,’$name’)

“);

header(“location:index.php?page=dangky”);

setcookie(“success”, “Đăng ký thành công!”, time()+1, “/”,””, 0);

}

}

?>

<!– ‘end thực hiện kiểm tra dữ liệu người dùng đăng ký’ –>

<!– ‘start thực hiện kiểm tra dữ liệu người dùng nhập ở form đăng nhập’ –>

<?php

if(isset($_POST[“dangnhap”])){

$tk = $_POST[“user_name_lg”];

$mk = md5($_POST[“passlg”]);

$rows = mysqli_query($connect,”

select * from user where user_name = ‘$tk’ and password = ‘$mk’

“);

$count = mysqli_num_rows($rows);

if($count==1){

$_SESSION[“loged”] = true;

header(“location:index.php”);

setcookie(“success”, “Đăng nhập thành công!”, time()+1, “/”,””, 0);

}

else{

header(“location:index.php”);

setcookie(“error”, “Đăng nhập không thành công!”, time()+1, “/”,””, 0);

}

}

?>

<!– ‘end thực hiện kiểm tra dữ liệu người dùng nhập ở form đăng nhập’ –>

<!– ‘start thực hiện đăng xuất’ –>

<?php

if(isset($_GET[“act”])&&$_GET[“act”]==”logout”){

unset($_SESSION[“loged”]);

header(“location:index.php”);

setcookie(“success”, “Bạn đã đăng xuất!”, time()+1, “/”,””, 0);

}

?>

<!– end thực hiện đăng xuất –>

<div class=”container”>

<div class=”row”>

<a href=”index.php?page=dangky” class=”btn btn-success”>Đăng ký</a>

<a href=”index.php” class=”btn btn-info”>Trang chủ</a>

<?php if(isset($_SESSION[“loged”])) echo “<a href=’index.php?act=logout’ class=’btn btn-danger’>Đăng xuất</a>”; ?>

</div>

<div class=”row”>

<!– ‘start nếu xảy ra lỗi thì hiện thông báo:’ –>

<?php

if(isset($_COOKIE[“error”])){

?>

<div class=”alert alert-danger”>

  <strong>’Có lỗi!'</strong> <?php echo $_COOKIE[“error”]; ?>

</div>

<?php } ?>

<!– ‘end nếu xảy ra lỗi thì hiện thông báo:’ –>

<!– ‘start nếu thành công thì hiện thông báo:’ –>

<?php

if(isset($_COOKIE[“success”])){

?>

<div class=”alert alert-success”>

  <strong>’Chúc mừng!'</strong> <?php echo $_COOKIE[“success”]; ?>

</div>

<?php } ?>

<!– ‘end nếu thành công thì hiện thông báo:’ –>

<?php

//nếu tồn tại biến $_GET[“page”] = “dangky” thì gọi trang đăng ký:

if(isset($_GET[“page”])&&$_GET[“page”]==”dangky”)

include “register.php”;

//nếu không tồn tại biến $_GET[“page”] = “dangky”

if(!isset($_GET[“page”])){

//nếu tồn tại biến session $_SESSION[“loged”] thì gọi nội dung trang admin.php vào

if(isset($_SESSION[“loged”]))

include “admin.php”;

//nếu không tồn tại biến session $_SESSION[“loged”] thì gọi nội dung trang login.php vào

else

include “login.php”;

}

?>

</div>

</div>

</body>

</html>

Như vậy Devpro Việt Nam đã hoàn tất việc giới thiệu chức năng đăng nhập một cách hoàn chỉnh. Chúc các bạn thành công

> Xem thêm cách học php hiệu quả ở bài: https://www.devpro.edu.vn/cach-hoc-lap-trinh-php-hieu-qua

Ý kiến bạn đọc

Bình luận qua Disqus Facebook