Lập trình website bằng PHP: Tạo trang đăng nhập (4)

Ở bài trước, tất cả chúng ta đã giải quyết xong phần tạo trang đăng ký member, bây giờ tất cả chúng ta sẽ tiếp tục tạo trang đăng nhập & sử dụng thông tin đã đăng ký trong bài trước để đăng nhập vào hệ thống của các bạn.

TẠO TRANG ĐĂNG NHẬP

Bài viết nội dung bây giờ bao gồm các mục chính như sau :

  • Kiến trúc giao diện trang đăng nhập
  • Lấy thông tin đăng nhập so sánh đối chiều với dữ liệu trong database
  • Nếu đăng nhập thành công lưu thông tin người dùng vào session dùng cho các mục đích khác
  • Nếu đăng nhập thất bại hiện thông báo lỗi cho người dùng

1. Kiến trúc giao diện trang đăng nhập

Trong thư mục website đã tạo nên ở phần 1, các bạn tạo một file & đặt tên là dang-nhap.php có bài viết như sau :

<?php include "includes/header.php" ?>
	<form method="POST" action="dang-nhap.php">
	<fieldsetvàgt;
	    <legendvàgt;Đăng nhập</legendvàgt;
	    	<tablevàgt;
	    		<trvàgt;
	    			<tdvàgt;Usernamevàlt;/tdvàgt;
	    			<tdvàgt;<input type="text" name="username" size="30"></tdvàgt;
	    		</trvàgt;
	    		<trvàgt;
	    			<tdvàgt;Passwordvàlt;/tdvàgt;
	    			<tdvàgt;<input type="password" name="password" size="30"></tdvàgt;
	    		</trvàgt;
	    		<trvàgt;
	    			<td colspan="2" align="center"> <input type="submit" name="btn_submit" value="Đăng nhập"></tdvàgt;
	    		</trvàgt;
	    	</tablevàgt;
  </fieldsetvàgt;
  </formvàgt;
<?php include "includes/footer.php" ?>

Vào trình duyệt, chạy đường dẫn :

http://localhost/website/dang-nhap.php

các bạn sẽ có được giao diện trang đăng nhập hiển thị ra như sau :

Trong form đăng nhập này bao gồm:

Username : tên đăng nhập của người dùng

Password : Mật khẩu đăng nhập

Nut Đăng nhập : Tiến hành thực thi kiểm soát thông tin đăng nhập

Trong thẻ <formvàgt; mình dùng method=”POST”, là bí quyết được chỉ định để gửi thông tin đi

Xem Thêm  SQL CHỌN DISTINCT - chọn khác biệt trong sql

2. Tiến hành giải quyết thông tin đăng nhập

α. Khởi tạo session

Sau khoảng thời gian đã kiến trúc xong giao diện giành riêng cho trang đăng nhập, tiếp đó tất cả chúng ta sẽ tiến hành giải quyết thông tin đăng nhập. Như đã nói ở trên, khi kiểm soát thông tin đăng nhập, nếu thông tin đúng tất cả chúng ta sẽ lưu thông tin đăng nhập vào session, trái lại sai thì sẽ hiện thông báo lỗi ra ngoài.

Để thực thi việc lưu thông tin vào session tất cả chúng ta luôn phải làm thao tác trước tiên này là khởi tạo session. Cú pháp khởi tạo session như sau:

<?php
session_start();
?>

đoạn code này các bạn cảnh báo phải đặt ở đầu trang dang-nhap.php nhé.

ɓ. Giải quyết đăng nhập

Kế tiếp, tất cả chúng ta sẽ khởi đầu giải quyết thông tin đăng nhập, nếu thông tin đúng sẽ tiến hành lưu vào session, trái lại nhắc nhở lỗi cho người dùng & yêu cầu họ nhập lại.

<?php
	//Gọi file connection.php ở bài trước
require_once("includes/connection.php");
	// Kiểm soát nếu người dùng đã ân nút đăng nhập thì mới giải quyết
if (isset($_POST["btn_submit"])) {
		// lấy thông tin người dùng
	$username = $_POST["username"];
	$password = $_POST["password"];
		//làm sạch thông tin, xóa bỏ các tag html, ký tự đặc biệt 
		//mà người dùng cố ý thêm vào để tấn công theo bí quyết sql injection
	$username = strip_tags($username);
	$username = addslashes($username);
	$password = strip_tags($password);
	$password = addslashes($password);
	if ($username == "" || $password =="") {
		echo "username hoặc password bạn không được để trống!";
	}else{
		$sql = "select * from users where username = '$username' and password = '$password' ";
		echo $sql;
		$query = mysqli_query($conn,$sql);
		$num_rows = mysqli_num_rows($query);
		if ($num_rows==0) {
			echo "tên đăng nhập hoặc mật khẩu không đúng !";
		}else{
			// Lấy ra thông tin người dùng & lưu vào session
			while ( $data = mysqli_fetch_array($query) ) {
	    		$_SESSION["user_id"] = $data["id"];
				$_SESSION['username'] = $data["username"];
				$_SESSION["email"] = $data["email"];
				$_SESSION["fullname"] = $data["fullname"];
				$_SESSION["is_block"] = $data["is_block"];
				$_SESSION["permision"] = $data["permision"];
	    	}
			
                // Thực thi hành động sau thời điểm lưu thông tin vào session
                // ở giai đoạn này mình tiến hành chuyển hướng trang website tới một trang gọi là index.php
			header('Location: index.php');
		}
	}
}
?>

Toàn thể ghi chú mình đã bình luận bên trong code, các độc giả bình luận để am hiểu hơn.

Xem Thêm  Làm thế nào để thêm một cột mới vào một bảng trong SQL? - cách tạo một cột mới trong sql

ͼ. Toàn thể code trang dang-nhap.php

Như thế toàn thể đoạn code của trang dang-nhap.php có bài viết như sau :

<?php
session_start();

?>

<?php include "includes/header.php" ?>
<?php 
//Gọi file connection.php ở bài trước
require_once("includes/connection.php");
	// Kiểm soát nếu người dùng đã ân nút đăng nhập thì mới giải quyết
if (isset($_POST["btn_submit"])) {
	// lấy thông tin người dùng
	$username = $_POST["username"];
	$password = $_POST["password"];
	//làm sạch thông tin, xóa bỏ các tag html, ký tự đặc biệt 
	//mà người dùng cố ý thêm vào để tấn công theo bí quyết sql injection
	$username = strip_tags($username);
	$username = addslashes($username);
	$password = strip_tags($password);
	$password = addslashes($password);
	if ($username == "" || $password =="") {
		echo "username hoặc password bạn không được để trống!";
	}else{
		$sql = "select * from users where username = '$username' and password = '$password' ";
		$query = mysqli_query($conn,$sql);
		$num_rows = mysqli_num_rows($query);
		if ($num_rows==0) {
			echo "tên đăng nhập hoặc mật khẩu không đúng !";
		}else{
			// Lấy ra thông tin người dùng & lưu vào session
			while ( $data = mysqli_fetch_array($query) ) {
	    		$_SESSION["user_id"] = $data["id"];
				$_SESSION['username'] = $data["username"];
				$_SESSION["email"] = $data["email"];
				$_SESSION["fullname"] = $data["fullname"];
				$_SESSION["is_block"] = $data["is_block"];
				$_SESSION["permision"] = $data["permision"];
	    	}
			
                // Thực thi hành động sau thời điểm lưu thông tin vào session
                // ở giai đoạn này mình tiến hành chuyển hướng trang website tới một trang gọi là index.php
			header('Location: index.php');
		}
	}
}
?>
	<form method="POST" action="dang-nhap.php">
	<fieldsetvàgt;
	    <legendvàgt;Đăng nhập</legendvàgt;
	    	<tablevàgt;
	    		<trvàgt;
	    			<tdvàgt;Usernamevàlt;/tdvàgt;
	    			<tdvàgt;<input type="text" name="username" size="30"></tdvàgt;
	    		</trvàgt;
	    		<trvàgt;
	    			<tdvàgt;Passwordvàlt;/tdvàgt;
	    			<tdvàgt;<input type="password" name="password" size="30"></tdvàgt;
	    		</trvàgt;
	    		<trvàgt;
	    			<td colspan="2" align="center"> <input type="submit" name="btn_submit" value="Đăng nhập"></tdvàgt;
	    		</trvàgt;
	    	</tablevàgt;
  </fieldsetvàgt;
  </formvàgt;
<?php include "includes/footer.php" ?>

Khi các bạn chạy trang này, điền đầy đủ thông tin (thông tin username, password các bạn lấy ở bài Chỉ dẫn tạo trang đăng ký). Nếu thông tin nhập đúng, khi ấn nút Đăng nhập bạn sẽ được chuyển hướng tới trang index.php. Trái lại sẽ hiển nhắc nhở lỗi ra bên ngoài.

Xem Thêm  Cách tạo kiểu khung nội tuyến bằng CSS - css khung iframe không có

Chấm dứt nội dung, nếu bạn có bất kỳ khúc mắc nào thì để lại bình luận bên dưới, tất cả chúng ta sẽ bên cạnh nhau bàn luận.

Chúc các bạn học tốt !

Nguồn: kungfuphp.com

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