BẠN ĐÃ NGHE VỀ BITCOIN VÀ MUỐN TÌM HIỂU CHÍNH THỐNG?

HƯỚNG DẪN TOÀN TẬP ĐẦU TƯ VỚI THỊ TRƯỜNG BITCOIN 2022

>> Xem tại đây <<

login form

PHP cơ bản : Tạo form đăng ký, đăng nhập (phần 2)

Ở bài trước “hướng dẫn tao form đăng ký” mình đã hướng dẫn các bạn tạo form đăng ký cho website của mình. Hôm nay mình sẽ tiếp tục chia sẽ đến các bạn bài viết về hướng dẫn tạo form đăng nhập. Trong bài viết này, mình sẽ tóm tắt như sau, đó là khi một người dùng điền thông tin đăng nhập, ta sẽ thực thi việc kiểm tra thông tin đăng nhập bao gồm username và password, nếu  thông tin trùng khớp với dữ liệu trong database ta sẽ tiến hành lưu , khởi tạo session và tiến hành lưu dữ liệu vào session. Tiếp theo ta sẽ dùng session đã được khởi tạo đó để check một số quyền hạn nhất định trên trang.

1. Tạo form đăng nhập :

Chúng ta sẽ tạo form đăng nhập login.php, đặt trong folder my_website

form đặng nhập

bao gồm :

  • ô input username : tài khoản mà người dùng đã đăng ký
  • ô input password : mật khẩu người dùng đã đăng ký
<html>
<head>
	<title>Trang đăng nhập</title>
	<meta charset="utf-8">
</head>
<body>
	<form method="POST" action="login.php">
	<fieldset>
	    <legend>Đăng nhập</legend>
	    	<table>
	    		<tr>
	    			<td>Username</td>
	    			<td><input type="text" name="username" size="30"></td>
	    		</tr>
	    		<tr>
	    			<td>Password</td>
	    			<td><input type="password" name="password" size="30"></td>
	    		</tr>
	    		<tr>
	    			<td colspan="2" align="center"> <input type="submit" name="btn_submit" value="Đăng nhập"></td>
	    		</tr>
	    	</table>
  </fieldset>
  </form>
</body>
</html>

Gõ xong, các bạn vào đường dẫn

http://localhost/my_website/login.php

bạn sẽ thấy form như sau

form đăng nhập

 2. Xử lý thông tin đăng nhập

Đây là giai đoạn chúng ta sẽ tiến hành kiểm tra người dùng đã nhập đủ thông tin vào form đăng nhập hay chưa, nếu chưa hiện ra thông báo bắt buộc họ phải nhập đầy đủ thông tin, sau đó tiếp tục kiểm tra thông tin người dùng với dữ liệu họ đã đăng ký trong database xem đã trùng khớp hay chưa? nếu chưa thì tiếp tục hiện thống báo phản hồi, ngược lại tiến hành lưu thông tin đăng nhập vào session để xử lý

Lưu ý : muốn sử dụng session để lưu thông tin , thì bạn  phải khởi tạo session bằng function session_start() và thì tốt nhất nên đặt function session_start() đầu trang

<?php
session_start();
?>

Tiếp theo ta sẽ kiểm tra thông tin đăng nhập và lưu vào lại session như code đầy đủ dưới đây

<?php
session_start();
?>
<html>
<head>
	<title>Trang đăng nhập</title>
	<meta charset="utf-8">
</head>
<body>
<?php
	//Gọi file connection.php ở bài trước
	require_once("lib/connection.php");
	// Kiểm tra nếu người dùng đã ân nút đăng nhập thì mới xử lý
	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ố tình thêm vào để tấn công theo phương thức 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{
				//tiến hành lưu tên đăng nhập vào session để tiện xử lý sau này
				$_SESSION['username'] = $username;
                // Thực thi hành động sau khi lưu thông tin vào session
                // ở đây mình tiến hành chuyển hướng trang web tới một trang gọi là index.php
                header('Location: index.php');
			}
		}
	}
?>
	<form method="POST" action="login.php">
	<fieldset>
	    <legend>Đăng nhập</legend>
	    	<table>
	    		<tr>
	    			<td>Username</td>
	    			<td><input type="text" name="username" size="30"></td>
	    		</tr>
	    		<tr>
	    			<td>Password</td>
	    			<td><input type="password" name="password" size="30"></td>
	    		</tr>
	    		<tr>
	    			<td colspan="2" align="center"> <input name="btn_submit" type="submit" value="Đăng nhập"></td>
	    		</tr>
	    	</table>
  </fieldset>
  </form>
</body>
</html>

3. Xử lý sau hậu đăng nhập

Ở phần 2, sau khi đăng nhập thành công, chúng ta sẽ chuyển hướng trang web tới trang index.php. Vì thế chúng ta tiếp tục tạo trang index.php (đặt trong thư mục my_website) để xử lý thông tin, gọi nôm na là xử lý hậu đăng nhập.

Trong file index.php gõ theo như đoạn code dưới đây:

<?php
session_start();
//tiến hành kiểm tra là người dùng đã đăng nhập hay chưa
//nếu chưa, chuyển hướng người dùng ra lại trang đăng nhập
if (!isset($_SESSION['username'])) {
	 header('Location: login.php');
}
?>
<html>
<head>
	<title>trang chủ</title>
	<meta charset="utf-8">
</head>
<body>
	Chúc mừng bạn có username là <?php echo $_SESSION['username'];  ?> đã đăng nhập thành công !
</body>
</html>

Giải thích một tí về đoạn code trên, ở đoạn code

<?php
session_start();
//tiến hành kiểm tra là người dùng đã đăng nhập hay chưa
//nếu chưa, chuyển hướng người dùng ra lại trang đăng nhập
if (!isset($_SESSION['username'])) {
	 header('Location: login.php');
}
?>

chúng ta sẽ tiến hành kiểm tra khi một ai đó chưa đăng nhập nhưng cố tình truy cập vào trang index.php bằng cách điền địa chỉ

Gợi ý : Bạn là người mới và muốn tìm hiểu về Bitcoin nhưng không biết bắt đầu từ đâu? Click xem ngay Hướng Dẫn Đầu Tư Bitcoin Cho Người Mới nhé!

http://localhost/my_website/index.php

, thì sẽ bị chuyển hướng ra lại trang đăng nhập, ngược lại thì ta sẽ xuất ra dòng chữ

"Chúc mừng bạn có username là 'tên đăng nhập được lưu trong session' đã đăng nhập thành công !"

Kết thúc bài viết, nếu bạn có bất kỳ thắc mắc nào thì để lại comment bên dưới, chúng ta sẽ cùng nhau thảo luận. Nếu thấy bài viết hay thì đừng quên ấn nút  share bên dưới để mọi người cùng nhau học nhé. Thân !

Đợi chút, bạn có muốn tự tay tạo thiết kế website bằng HTML, CSS, Bootstrap cho riêng mình ? Nếu có thì xem tại đây nhé

Nguon : kungfuphp.com
Subscribe
Notify of
guest
90 Bình Luận
Inline Feedbacks
Xem Tất Cả Bình Luận
tu Nguyen
tu Nguyen
3 tháng trước

cho em hỏi fix lỗi này thế nào ạ:
Parse error: syntax error, unexpected ‘if’ (T_IF) in /htdocs/login.php on line 25

Đài
Đài
8 tháng trước

code này đã fix đc lỗi XSS (‘or’1’=’1,..) chưa ạ

quocbao_cnc
quocbao_cnc
1 năm trước

hello world! welcome to PHP. Mình tiếc 1 điều là: tiếp cận PHP hơi muộn, nếu được quay lại 10 năm về trước mình sẽ học PHP. I love website, html, css, java sript, PHP.

Tiến Xuân
Tiến Xuân
2 năm trước

admin ơi chỉ e lỗi này với ạ 
Warning: require_once(lib/connection.php): failed to open stream: No such file or directory in C:xampphtdocstienlogin.php on line 12

Fatal error: require_once(): Failed opening required ‘lib/connection.php’ (include_path=’.;C:xamppphpPEAR’) in C:xampphtdocstienlogin.php on line 12

hoang hieu
hoang hieu
Phản hồi đến  Tiến Xuân
2 năm trước

E kiểm tra dòng 12 trong file login.php, e kiểm tra xem đường dẫn tới thư mục connection.php đã đúng chưa, hình như là e đang sai đường dẫn

thao
thao
Phản hồi đến  hoang hieu
1 năm trước

a ơi. cho em hỏi những lỗi này là lỗi gì ạ:
Notice: Undefined variable: connect in C:\xampp\htdocs\test1\xuly1.php on line 15

Warning: mysqli_query() expects parameter 1 to be mysqli, null given in C:\xampp\htdocs\test1\xuly1.php on line 15

Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, null given in C:\xampp\htdocs\test1\xuly1.php on line 16

Notice: Undefined variable: num_rows in C:\xampp\htdocs\test1\xuly1.php on line 17
Tên đăng nhập hoac mat khau sai.

abcd
abcd
Phản hồi đến  Tiến Xuân
2 năm trước

Xài include thử xem

nam
nam
2 năm trước

anh cho em hỏi chút ạ
ở chỗ đoạn làm sạch thông tin thì thay vì như này
$username = strip_tags($username);
$username = addslashes($username);
thì em để lại là
$username = strip_tags(addslashes($username));
thì có được không ạ

Phương
Phương
3 năm trước

Ad ơi cho mình hỏi , khi đã đăng nhập xong , bây h mình muốn lưu những thông tin ( chẳng hạn như thông tin đặt vé ) của người dùng đã đăng nhập lên database của họ thì làm như thế nào ạ

Phương
Phương
Phản hồi đến  Tôi Là Hoàng Hiếu
3 năm trước

Vâng e cảm ơn nhiều ạ

TRẦN QUANG HẠNH
TRẦN QUANG HẠNH
3 năm trước

Em muốn giới hạn số lần đăng nhập sai thi làm sao hả anh

Thành Phúc
Thành Phúc
3 năm trước

Anh ơi cho e hỏi lỗi này là như thế nào vậy ạ

Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given in C:\xampp\htdocs\my_website\dangnhap.php on line 104

Dạ e cám ơn a nhiều!!!

Hiếu Hoàng
Hiếu Hoàng
Phản hồi đến  Thành Phúc
3 năm trước

Lỗi này là do câu query bị sai. E echo câu query ra và kiểm tra xem bị lỗi gì nhé

Nguyễn Tấn Thành Huy
Nguyễn Tấn Thành Huy
3 năm trước

Anh ơi cho e hỏi sao khi đăng nhập xong chuyển sang trang index.php thì xuất hiện lỗi này: Fatal error: Call to undefined function sesstion_start() in C:\xampp\htdocs\my_website\index.php on line 2. Anh giúp e sữa lỗi này được không anh, dạ e cám ơn a !!!

Nguyễn Tấn Thành Huy
Nguyễn Tấn Thành Huy
Phản hồi đến  Tôi Là Hoàng Hiếu
3 năm trước

Anh ơi làm sao mình tìm dược dòng “extension=session.so” và được mở thì trông code sẽ như thế nào ạ? Dạ e cám ơn a !!!

Nguyễn Tấn Thành Huy
Nguyễn Tấn Thành Huy
Phản hồi đến  Tôi Là Hoàng Hiếu
3 năm trước

;;;;;;;;;;;;;;;;;;;;;; ; Dynamic Extensions ; ;;;;;;;;;;;;;;;;;;;;;; ; If you wish to have an extension loaded automatically, use the following ; syntax: ; ; extension=modulename.extension ; ; For example, on Windows: ; ; extension=msql.dll ; ; … or under UNIX: ; ; extension=msql.so ; ; … or with a path: ; ; extension=/path/to/extension/msql.so ; ; If you only provide the name of the extension, PHP will look for it in its ; default extension directory. ; ; Windows Extensions ; Note that ODBC support is built in, so no dll is needed for it. ; Note that many DLL files are… Read more »

thịnh
thịnh
3 năm trước

anh ơi hướng dẫn giúp em tạo trang đăng ký đăng nhập trong wordpress ạ..em cảm ơn anh..nhiều

Phương
Phương
3 năm trước

Anh ơi cho em hỏi. Em chạy ở localhost thì mọi thứ ok nhưng upload lên host server thì login xong nó không chuyển qua trang index.php.

Neko Valkyrie
Neko Valkyrie
3 năm trước

Bạn nào bị lỗi này: Warning: Cannot modify header information – headers already sent by…
thì thêm dòng ob_start(); ngay sau dòng session là ok ngay

Dương
Dương
3 năm trước

$query = mysqli_query($conn,$sql)
//line 28 in login.php
Cho minh hoi bien $conn nay nam o dau vay add

minh
minh
4 năm trước

Notice: Undefined variable: conn in C:\xampp\htdocs\doan2\dangnhap.php on line 131

Warning: mysqli_query() expects parameter 1 to be mysqli, null given in C:\xampp\htdocs\doan2\dangnhap.php on line 131

Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, null given in C:\xampp\htdocs\doan2\dangnhap.php on line 132

giúp e

Trang
Trang
4 năm trước

a cho e hỏi tại sao chương trình của e luôn chuyển hướng ngay sang trang mới mặc dù username hay password đều trống ạ?

Đông
Đông
4 năm trước

admin mình hỏi là khi mình làm nó hiện cái thông báo :
“Warning: require(lib/connection.php): failed to open stream: No such file or directory in C:\xampp\htdocs\my_website\login.php on line 12

Fatal error: require(): Failed opening required ‘lib/connection.php’ (include_path=’C:\xampp\php\PEAR’) in C:\xampp\htdocs\my_website\login.php on line 12” là sao vậy ?

Đoàn Hy Đức
Đoàn Hy Đức
4 năm trước

Vậy làm sao để tài khoản được lưu trên website ý là cái sql ý ạ
mong giúp nốt

Nhu Tran
Nhu Tran
4 năm trước

Chào anh Hiếu Hoàng,

Viết tặng cho em đoạn code cài đặc user và password mặt định giúp cho người dùng chỉ bấm login mà không cần nhập user và password. Cám ơn

Hùng
Hùng
5 năm trước

Sau khi làm login va index: vá chạy :http://localhost/my_website/index.php thì báo lỗi thế này Ad ơi:
Object not found!

The requested URL was not found on this server. If you entered the URL manually please check your spelling and try again.

If you think this is a server error, please contact the webmaster.

Error 404

localhost
Apache/2.4.25 (Win32) OpenSSL/1.0.2j PHP/5.6.30

Mong Ad giúp mình vs

silverbullets
silverbullets
5 năm trước

Em tạo cơ sở giống y như bài, câu query cũng giống, em còn copy luôn code của bài để chạy mà vẫn không được. Nó còn hay báo lỗi dòng 28,29 trong bài. Lỗi như sau :

Warning: mysqli_query() expects parameter 1 to be mysqli, resource given in C:\xampp\htdocs\my_website\login.php on line 28
Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, null given in C:\xampp\htdocs\my_website\login.php on line 29
tên đăng nhập hoặc mật khẩu không đúng !

silverbullets
silverbullets
5 năm trước

Ad ơi, mình làm phần đăng nhập xong rồi nhập đúng username và password trên cơ sở dữ liệu của mình luôn nhưng nó vẫn báo là tên đăng nhập và mật khẩu không đúng, mặc dù mình có copy code của ad vào chạy luôn mà vẫn không được.

Luna Sakura
5 năm trước

Web của mình đăng nhập 1 thời gian không thao tác là tự động đăng xuất. Mình muốn không tự động đăng xuất thì chỉnh như thế nào ạ? Cám ơn nhiều 🙂 Web mình http://sakurafashion.vn/

nguyen quoc viet
5 năm trước

ban oi. đoạn section minh lưu nó vào đâu vậy

Hoàng Hiếu
5 năm trước

just test the new comment

PHP KUNGFU
PHP KUNGFU
5 năm trước

có khó khăn các bạn cứ để comment bên dưới nhé

Hoàng Hiếu
Phản hồi đến  PHP KUNGFU
5 năm trước

^^

Nguyễn Văn Diện
5 năm trước

ad oi!cho hoi trang login cua e ok oy vao dc tran index.php nhung khi dat dieu kien cho index.php nhu sau

thi no quay lai trang login.php de minh dang nhap nhung mat khau va ten dang nhap dung lai k vao dc index.php la loi nhu the nao ạ?

nguyễn văn thiện
nguyễn văn thiện
5 năm trước

Mình mới học làm web, nhưng không dùng vào đăng ký mà dùng vào tải file host. mình muốn cái tên ảnh lúc mình add vào mà chưa đầy đủ thì nó ghi bạn chưa điền đầy đủ vào vậy đó, hiện mình chưa làm web chính thức

Nguyên
5 năm trước

Mình mới học làm web, nhưng không dùng vào đăng ký mà dùng vào tải file host. mình muốn cái tên ảnh lúc mình add vào mà chưa đầy đủ thì nó ghi bạn chưa điền đầy đủ vào vậy đó, hiện mình chưa làm web chính thức

khuatha
khuatha
6 năm trước

anh ơi, a xem hộ e xem cái lỗi này n làm sao mà e ko đăng nhập được vậy ạ
Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given in D:\xampp\htdocs\thuvien\dangnhap.php on line 15
code của e là :

Đăng nhập

Tên đăng nhập:

Mật khẩu:

vohieu
vohieu
Phản hồi đến  khuatha
5 năm trước

bạn phải lưu lại Session : $_SESSION[‘username’]=$username; trước khi thực hiện kiểm tra trong trang index …

Khang
Khang
6 năm trước

mấy bạn bị lỗi đăng nhập thành công không chuyển sang trang ĩndex mà fix được rồi share mọi người kinh nghiệm với!
Cám ơn bài viết hay!

Huy
Huy
6 năm trước

Anh cho em hỏi sao vào trang login khi có thì vào k được nó ghi là This webpage is not available. còn bỏ thì lại vào được ạ

tien
tien
6 năm trước

Mình đã xem và thực hành bài tập php cơ bản tạo from đăng ký đăng nhập phần 1, phần 2 bây giờ mình muốn xem bài tiếp theo thì làm cách nào ? Mình có nhìn đấy ở cuối bài có phần bài kế tiếp, nhưng nội dung nó không phải là bài kế tiếp của bài mình đàng xem (tạo đăg nhập, ĐK p2) Tags: Form Dang Nhap « PHP cơ bản : Tạo form đăng ký, đăng nhập (phần 1) « Cài đặt php apache, cài đặt mysql trên ubuntu 14.0 Ad nên sắp xếp cái bài… Read more »

Trần Thành
Trần Thành
6 năm trước

Ad ơi cho hỏi mình copy code Ad về chạy thử nhưng đến khi vào trang index.php thì nó cứ đứng ở trang login.php hoài mặc dù đăng nhập thành công thì nó vẫn thế

mẫn
mẫn
6 năm trước

hi ad, mình có làm 1 form đăng nhập bằng dreamweawer cs3 và developer toolbox , tất cả đều ok, giờ mình ko biết làm sao để nó hiện đúng tên username vừa đăng nhập trên trang chủ( hoặc trang profile),truyền qua bằng cách nào và cách show tên username ra, hy vọng đc ad chỉ giáo thêm, mình là newbie, thanks rất nhiều

MrTheDzam
6 năm trước

Thế còn đăng xuất thì sao ạ ad :3

ndhieu90
6 năm trước

ad ơi cho mình hỏi mình muốn làm thêm nâng cao là khi người dùng nhập sai quá 3 lần thì tạm khóa sau 1 tiếng mới được đăng nhập lại thì làm sao ạ

Thanh Tuan
Thanh Tuan
6 năm trước

e đã làm video 🙂
Link: https://youtu.be/W4llc8i8LwE

Thanh Tuan
Thanh Tuan
Phản hồi đến  Thanh Tuan
6 năm trước

E fix lỗi đc rồi ad..mà nó thông báo xong rồi làm sao để ta chuyển tới trang quan-ly-thanh-vien được đây ad

Thanh Tuan
Thanh Tuan
6 năm trước

Ad xem và giải thích giúp e với….tks ad

toản
toản
6 năm trước

ad ơi em bị báo lỗi mysqli_num_rows : Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result,… là sao ad

Duyle
Phản hồi đến  toản
6 năm trước

Bạn đã xử lý được lỗi này chưa? Mình cài Xampp 1.6.8 thì chạy được nhưng các bản Xampp mới hơn đều bị lỗi này không biết do đâu

hadynguyenljnh
6 năm trước

Anh ơi sao nó không chuyển qua trang login.php, cũng không thông báo là đăng nhập thành côn ghay thất bại gì hết.

Ánh
Ánh
7 năm trước

Ad ơi,cho em hỏi em dùng Xampp,nhưng thực hành CSDL trên trường dùng SQLQ Server 2005.e cài vào máy thì có xung đột với Xampp k ạ?? E cảm ơn ạ.

Ánh
Ánh
7 năm trước

Ad ơi,cái file lib là gì vậy ạ? E dùng Xampp ạ.

aaa
aaa
Phản hồi đến  Ánh
5 năm trước

alert(“XSS”)

Let's Go
7 năm trước

Cho mình hỏi câu lệnh đó đâu ra vậy: “require_once(“lib/connection.php”);”, không có nó thì có sao không ,thank

hoàng minh
Phản hồi đến  Tôi Là Hoàng Hiếu
5 năm trước

trong trường hợp muốn bỏ require_one đi mà chạy được thì ta phải tạo lại kết nối cho nó đến database đúng ko admin

tuan
tuan
Phản hồi đến  Tôi Là Hoàng Hiếu
5 năm trước

chinh xac la vay

hiếu hi hí
hiếu hi hí
7 năm trước

admin ơi. đoạn “require_once(“connection.php”);” phải là require_once(“lib/connection.php”); mới dc.phần code còn lại mình làm y chang như admin mà đăng nhập ko dc.vẫn đứng yên ở trang đăng nhập,ko báo lỗi zi` hết @@

hiếu hi hí
hiếu hi hí
Phản hồi đến  Tôi Là Hoàng Hiếu
7 năm trước

admin ơi lần này thì hiện lỗi ”
Warning: Cannot modify header information – headers already sent by (output started at C:\AppServ\www\tutorial\HTML\hocphp1\login.php:10) in C:\AppServ\www\tutorial\HTML\hocphp1\login.php on line 37
==”

hiếu hi hí
hiếu hi hí
Phản hồi đến  keysoul
7 năm trước

mới nhờ tuấn trần fix lại dùm @@ đuối thiệt cái action admin fai chuyen wa index mới dc ko là báo lỗi wai` lun ==”

90
0
Bạn có ý kiến về bài viết, hãy để lại bình luận nhé!x
()
x