Hướng dẫn code đăng nhập PHP

Đăng nhập là 1 học thức mà bạn trẻ học PHP nào cũng phải nắm rõ, sau khoảng thời gian biết căn bản về code php, bạn trẻ có thể làm bài có tính năng login. Hiện giờ DevPro VN sẽ giúp bạn những bước để code login trong PHP.

  • Bao gồm chín bước căn bản:
  • Tạo database & 1 bảng lưu danh mục người dùng. Việc đăng nhập có thành công hay không lệ thuộc vào bảng này.
  • Tạo folder & các file nền móng.
  • Connect database
  • Tạo form thêm người dùng.
  • Lấy dữ liệu từ form thêm KH & insert vào database.
  • Tạo 1 form đăng nhập.
  • Lấy thông tin KH nhập từ form.
  • So sánh dữ liệu người dùng nhập & giải quyết.
  • Thực hiện tính 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, chúng tôi tạo một database có tên là ‘devprovn’ & chọn bảng mã là unicode_utf8_ci, danh mục các account sẽ được lưu. Trong database này chúng tôi tạo 1 bảng tên là ‘user’ để lưu thông tin của những user. Bảng này có các trường sau:

id: dữ liệu kiểu int, là khóa chính, auto 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 account đă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 khoảng thời gian tạo bảng xong, kết cấu bảng này sẽ như sau:

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

Bước 2: Tạo folder & những file nền móng:

Tạo thư mục mới có tên ‘xampphtdocs’ để thực hiện connect với database (tùy thuộc lúc thiết lập xampp bạn thiết lập vào ổ ₵,?,… mà bạn đến đường dẫn thư mục cho hợp lý, chẳng hạn tôi cài trên ổ ₵ thì tôi sẽ vào: ₵:xampphtdocs ). Thư mục ‘htdocs’ chúng 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 số đó:

  • Index.php: là home page, thực hiện việc giải quyết, tính toán, & lấy dữ liệu cho hợp lý.
  • Register.php: là trang để đăng ký member.
  • Login.php: là trang đăng nhập, nếu KH đă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 khoảng thời gian tạo thư mục & những file thành công, sẽ có kết cấu như sau:

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

Bước 3: Thực hiện connect database

Connect so với database khá dễ đàng, mọi thao tác giải quyết tất cả chúng ta đều thực hiên trên trang index.php

Thực hiện việc connect tới database so với lệnh sau:

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

Trong số đó:

  • $_host_name: là tên hosting của các bạn. Nếu cài localhost thì bạn sẽ đặt trường đó là localhost (tên máy chủ hoặc địa chỉ ip máy chủ).
  • $_user_name_db: account đăng nhập database (nếu cài xampp, account 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 connect này sẽ gán vào 1 biến là $kết nối, 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.

$kết nối = mysqli_connect(‘localhost’,’root’,”,’devpro’);

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

mysqli_set_charset($kết nối,”utf8″);

Trong số đó:

  • mysqli_set_charset() : là hàm chọn bảng mã, hàm này có hai tham số truyền vào
  • $kết nối: việc truy vấn đến database nào
  • utf8: bảng mã có thể viết tiếng Việt
Xem Thêm  7 Ví dụ về Python open () to Read - python mở tệp ví dụ

Sau khoảng thời gian giải quyết hai câu lệnh trên, hiển thị file index.php như sau:

$kết nối = mysqli_connect(‘localhost’,’root’,”,’devpro’);

mysqli_set_charset($kết nối,”utf8″);

?>

Devpro.edu.vn

$kết nối = mysqli_connect(‘localhost’,’root’,”,’devpro’);

mysqli_set_charset($kết nối,”utf8″);

?>

Devpro.edu.vn

Sau khoảng thời gian 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’, account đăng nhập là ‘root’, không hiện ra mật khẩu, & database lựa chọn để thao tác là ‘devpro’.

tại phần html ở dưới có backlinks css,js của bootstrap & jquery để tạo giao diện dễ nhìn hơn, bạn không cần backlinks những file này vào cũng không tác độ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 kì một website nào nếu mong muốn truy cập bạn cần đăng kí account trước để đăng nhập. Khi bạn đăng kí thành công account của các bạn sẽ được insert vào database.

Trước hết tạo 1 form đăng nhập với method=”bài viết” (dữ liệu gửi đi dạng bài viết), action=”” (địa chỉ mà dữ liệu sẽ gửi đến: trang bây giờ).

  • ‘name’ tại 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 account (user_name), 1 ô 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), & một nút submit để gửi dữ liệu đi:

Rõ ràng và cụ thể tại trang register.php sẽ viết form đăng ký như sau:

Thư điện tử:

‘Mật khẩu: ‘

‘Nhập lại mật khẩu:’

‘Tên đầy đủ của bạn:’

‘Đăng ký’

Thư điện tử:

‘Mật khẩu: ‘

‘Nhập lại mật khẩu:’

‘Tên đầy đủ của bạn:’

‘Đăng ký’

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

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

$kết nối = mysqli_connect(‘localhost’,’root’,”,’devpro’);

mysqli_set_charset($kết nối,”utf8″);

?>

Devpro.edu.vn

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

‘Đăng ký thành viên’

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

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

include “register.php”;

?>

$kết nối = mysqli_connect(‘localhost’,’root’,”,’devpro’);

mysqli_set_charset($kết nối,”utf8″);

?>

Devpro.edu.vn

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

‘Đăng ký thành viên’

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

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

include “register.php”;

?>

Khi nhấp vào nút “Đăng ký thành viên”, biến $_GET[“page”] = “dangky” sẽ được truyền lên URL. Chúng tôi thực hiện kiểm soát, nếu như có tồn tại $_GET[“page”] = “dangky” thì chúng 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 soát , & insert vào database:

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

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

$kết nối = mysqli_connect(‘localhost’,’root’,”,’devpro’);

mysqli_set_charset($kết nối,”utf8″);

?>

Devpro.edu.vn

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

$user_name = $_POST[“user_name”];

$pass1 = $_POST[“pass1”];

$pass2 = $_POST[“pass2”];

$name = $_POST[“full_name”];

//kiểm soát 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($kết nối,”

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);

?>

$kết nối = mysqli_connect(‘localhost’,’root’,”,’devpro’);

mysqli_set_charset($kết nối,”utf8″);

?>

Devpro.edu.vn

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

$user_name = $_POST[“user_name”];

$pass1 = $_POST[“pass1”];

$pass2 = $_POST[“pass2”];

$name = $_POST[“full_name”];

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

Xem Thêm  Trình tạo Java (Có ví dụ) - lớp phương thức khởi tạo trong java

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($kết nối,”

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);

?>

Trong số đó:

  • header(“location:index.php?page=dangky”) : là biến đổi hướng trang sang trang index.php?page=dangky
  • hàm isset(): là hàm kiểm soát 1 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($kết nối,” những câu lệnh truy vấn “);

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

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

Chẳng hạn đăng ký 1 account là devpro.edu.vn mật khẩu là 123, tên là Nguyễn Văn Đức. Bây giờ dữ liệu trong database sẽ như sau:

dang-ky-thanh-vien-php-mysql

Như mọi người 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 các 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 khoảng thời gian đăng ký thành công tất cả chúng ta sẽ thực hiện việc đăng nhập:

ở trang login.php tôi tạo 1 form như sau:

‘Trang đăng nhập’

‘Tài khoản:’

‘Mật khẩu:’

‘Đăng nhập’

‘Trang đăng nhập’

‘Tài khoản:’

‘Mật khẩu:’

‘Đăng nhập’

Bước 7,8: Lấy dữ liệu từ form đăng nhập & giải quyết:

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

$kết nối = mysqli_connect(‘localhost’,’root’,”,’devpro’);

mysqli_set_charset($kết nối,”utf8″);

session_start();

?>

Devpro.edu.vn

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

$user_name = $_POST[“user_name”];

$pass1 = $_POST[“pass1”];

$pass2 = $_POST[“pass2”];

$name = $_POST[“full_name”];

//kiểm soát 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($kết nối,”

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);

?>

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

$tk = $_POST[“user_name_lg”];

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

$rows = mysqli_query($kết nối,”

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);

?>

‘Đăng ký’

‘Trang chủ’

Đăng xuất”; ?>

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

?>

‘Có lỗi!’

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

?>

‘Chúc mừng!’

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

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

include “register.php”;

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

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

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

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

include “admin.php”;

//còn nếu như không tồn tại biến session $_SESSION[“loged”] thì gọi bài viết trang login.php vào

else

include “login.php”;

?>

$kết nối = mysqli_connect(‘localhost’,’root’,”,’devpro’);

mysqli_set_charset($kết nối,”utf8″);

session_start();

?>

Devpro.edu.vn

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

$user_name = $_POST[“user_name”];

$pass1 = $_POST[“pass1”];

$pass2 = $_POST[“pass2”];

$name = $_POST[“full_name”];

//kiểm soát 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($kết nối,”

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);

?>

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

$tk = $_POST[“user_name_lg”];

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

$rows = mysqli_query($kết nối,”

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);

?>

‘Đăng ký’

‘Trang chủ’

Đăng xuất”; ?>

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

?>

‘Có lỗi!’

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

?>

‘Chúc mừng!’

//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”;

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

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

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

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

include “admin.php”;

//còn nếu như không tồn tại biến session $_SESSION[“loged”] thì gọi bài viết trang login.php vào

else

Xem Thêm  Trình tạo số ngẫu nhiên trong JavaScript - tạo một số ngẫu nhiên trong js

include “login.php”;

?>

Trong số đó bạn cần Note đế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 soát, nếu thông tin KH nhập khớp với thông tin trong database sẽ gán $_SESSION[“loged”] = true , kiểm soát biến này tại dưới, nếu biến này tồn ở sẽ gọi admin.php không thì gọi trang đăng nhập.

Trang admin.php viết như sau:

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 đối với devpro.edu.vn”;

?>

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 đối với devpro.edu.vn”;

?>

Bạn chẳ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ẻ α), thẻ α có href=”index.phpvàamp;act=logout”. Sau đó được kiểm soát, nếu biến $_GET[“act”] tồn ở & $_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 & đề ra cảnh báo.

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

PHP

$kết nối = mysqli_connect(‘localhost’,’root’,”,’devpro’);

mysqli_set_charset($kết nối,”utf8″);

session_start();

?>

Devpro.edu.vn

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

$user_name = $_POST[“user_name”];

$pass1 = $_POST[“pass1”];

$pass2 = $_POST[“pass2”];

$name = $_POST[“full_name”];

//kiểm soát 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($kết nối,”

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);

?>

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

$tk = $_POST[“user_name_lg”];

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

$rows = mysqli_query($kết nối,”

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);

?>

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

unset($_SESSION[“loged”]);

header(“location:index.php”);

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

?>

Đăng ký

Home page

Đăng xuất”; ?>

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

?>

‘Có lỗi!’

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

?>

‘Chúc mừng!’

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

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

include “register.php”;

//còn nếu như không tồn ở biến $_GET[“page”] = “dangky”

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

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

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

include “admin.php”;

//còn nếu như không tồn ở biến session $_SESSION[“loged”] thì gọi bài viết trang login.php vào

else

include “login.php”;

?>

$kết nối = mysqli_connect(‘localhost’,’root’,”,’devpro’);

mysqli_set_charset($kết nối,”utf8″);

session_start();

?>

Devpro.edu.vn

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

$user_name = $_POST[“user_name”];

$pass1 = $_POST[“pass1”];

$pass2 = $_POST[“pass2”];

$name = $_POST[“full_name”];

//kiểm soát 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($kết nối,”

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);

?>

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

$tk = $_POST[“user_name_lg”];

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

$rows = mysqli_query($kết nối,”

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);

?>

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

unset($_SESSION[“loged”]);

header(“location:index.php”);

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

?>

Đăng ký

Home page

Đăng xuất”; ?>

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

?>

‘Có lỗi!’

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

?>

‘Chúc mừng!’

//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”;

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

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

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

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

include “admin.php”;

//còn nếu như không tồn tại biến session $_SESSION[“loged”] thì gọi bài viết trang login.php vào

else

include “login.php”;

?>

Như thế Devpro VN đã hoàn tất việc giới thiệu tính năng đăng nhập một công thức hoàn chỉnh. Chúc người thành công

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

Share this:

Like this:

Like

Loading…

Viết một bình luận