Hướng dẫn php login set cookie - đặt cookie đăng nhập php

Khái niệm, chức năng và hướng dẫn cài đặt, sử dụng session, cookie trong PHP.

Session

Khái niệm

Khi đăng nhập vào 1 trang web chỉ cần đăng nhập 1 lần và sau 1 khoảng thời gian nhất định không cần phải đăng nhập lại dù đã tắt trang web, đó chính là 1 ứng dụng của session. Nhưng chỉ là tắt 1 tab, nếu tắt hẳn trình duyệt thì session sẽ mất.

Session giúp lưu trữ thông tin về user, các giá trị trong khoảng thời gian tương tác với website. 

Session là phiên làm việc, là 1 khoảng thời gian tương tác giữa người sử dụng và website. Session được tạo ra bởi website (PHP) và được lưu trong 1 file trên server, thời gian tồn tại của session code quy định.

Thao tác với session

Sử dụng session

Trên mỗi trang page.php gọi hàm session_start(); ở đầu file php. ở đầu file php.

Khai báo 1 biến

$_SESSION['username'] = 'stdio_member'; session với khóa

<?php
	session_start();
	ob_start();

	// TODO: CHECK SIGNED IN
	if (isset($_SESSION['statusLogin'])
			&& $_SESSION['statusLogin'] == 'YES')
	{
		header("location:user_info.php");
	}
	
	// TODO: SIGN IN
	isSignedin = DoSignIn($_POST['username'], $_POST['password']);
	
	if (isSignedin == TRUE)
	{
		$_SESSION['statusLogin'] = 'YES';
	}
?>
0 có giá trị là
<?php
	session_start();
	ob_start();

	// TODO: CHECK SIGNED IN
	if (isset($_SESSION['statusLogin'])
			&& $_SESSION['statusLogin'] == 'YES')
	{
		header("location:user_info.php");
	}
	
	// TODO: SIGN IN
	isSignedin = DoSignIn($_POST['username'], $_POST['password']);
	
	if (isSignedin == TRUE)
	{
		$_SESSION['statusLogin'] = 'YES';
	}
?>
1 session với khóa
<?php
	session_start();
	ob_start();

	// TODO: CHECK SIGNED IN
	if (isset($_SESSION['statusLogin'])
			&& $_SESSION['statusLogin'] == 'YES')
	{
		header("location:user_info.php");
	}
	
	// TODO: SIGN IN
	isSignedin = DoSignIn($_POST['username'], $_POST['password']);
	
	if (isSignedin == TRUE)
	{
		$_SESSION['statusLogin'] = 'YES';
	}
?>
0 có giá trị là
<?php
	session_start();
	ob_start();

	// TODO: CHECK SIGNED IN
	if (isset($_SESSION['statusLogin'])
			&& $_SESSION['statusLogin'] == 'YES')
	{
		header("location:user_info.php");
	}
	
	// TODO: SIGN IN
	isSignedin = DoSignIn($_POST['username'], $_POST['password']);
	
	if (isSignedin == TRUE)
	{
		$_SESSION['statusLogin'] = 'YES';
	}
?>
1

Hủy 1 session

Hủy 1 session với khóa đã biết.session với khóa đã biết.

Ví dụ với khoá 

<?php
	session_start();
	ob_start();

	// TODO: CHECK SIGNED IN
	if (isset($_SESSION['statusLogin'])
			&& $_SESSION['statusLogin'] == 'YES')
	{
		header("location:user_info.php");
	}
	
	// TODO: SIGN IN
	isSignedin = DoSignIn($_POST['username'], $_POST['password']);
	
	if (isSignedin == TRUE)
	{
		$_SESSION['statusLogin'] = 'YES';
	}
?>
0, gọi hàm
<?php
	session_start();
	ob_start();

	// TODO: CHECK SIGNED IN
	if (isset($_SESSION['statusLogin'])
			&& $_SESSION['statusLogin'] == 'YES')
	{
		header("location:user_info.php");
	}
	
	// TODO: SIGN IN
	isSignedin = DoSignIn($_POST['username'], $_POST['password']);
	
	if (isSignedin == TRUE)
	{
		$_SESSION['statusLogin'] = 'YES';
	}
?>
3 để huỷ session với khoá username

Kiểm tra session tồn tại

Kiểm tra session tồn tại với khóa cho trước.session tồn tại với khóa cho trước.

Ví dụ

<?php
	session_start();
	ob_start();

	// TODO: CHECK SIGNED IN
	if (isset($_SESSION['statusLogin'])
			&& $_SESSION['statusLogin'] == 'YES')
	{
		header("location:user_info.php");
	}
	
	// TODO: SIGN IN
	isSignedin = DoSignIn($_POST['username'], $_POST['password']);
	
	if (isSignedin == TRUE)
	{
		$_SESSION['statusLogin'] = 'YES';
	}
?>
0, gọi hàm
<?php
	session_start();
	ob_start();

	// TODO: CHECK SIGNED IN
	if (isset($_SESSION['statusLogin'])
			&& $_SESSION['statusLogin'] == 'YES')
	{
		header("location:user_info.php");
	}
	
	// TODO: SIGN IN
	isSignedin = DoSignIn($_POST['username'], $_POST['password']);
	
	if (isSignedin == TRUE)
	{
		$_SESSION['statusLogin'] = 'YES';
	}
?>
<?php
	session_start();
	ob_start();

	// TODO: CHECK SIGNED IN
	if (isset($_SESSION['statusLogin'])
			&& $_SESSION['statusLogin'] == 'YES')
	{
		header("location:user_info.php");
	}
	
	// TODO: SIGN IN
	isSignedin = DoSignIn($_POST['username'], $_POST['password']);
	
	if (isSignedin == TRUE)
	{
		$_SESSION['statusLogin'] = 'YES';
	}
?>
5 

Hàm này sẽ trả về

<?php
	session_start();
	ob_start();

	// TODO: CHECK SIGNED IN
	if (isset($_SESSION['statusLogin'])
			&& $_SESSION['statusLogin'] == 'YES')
	{
		header("location:user_info.php");
	}
	
	// TODO: SIGN IN
	isSignedin = DoSignIn($_POST['username'], $_POST['password']);
	
	if (isSignedin == TRUE)
	{
		$_SESSION['statusLogin'] = 'YES';
	}
?>
6 nếu
<?php
	session_start();
	ob_start();

	// TODO: CHECK SIGNED IN
	if (isset($_SESSION['statusLogin'])
			&& $_SESSION['statusLogin'] == 'YES')
	{
		header("location:user_info.php");
	}
	
	// TODO: SIGN IN
	isSignedin = DoSignIn($_POST['username'], $_POST['password']);
	
	if (isSignedin == TRUE)
	{
		$_SESSION['statusLogin'] = 'YES';
	}
?>
0 đã tồn tại và ngược lại.

Lấy giá trị của session

Lấy giá trị của session cho trước.session cho trước.

Ví dụ với khoá

<?php
	session_start();
	ob_start();

	// TODO: CHECK SIGNED IN
	if (isset($_SESSION['statusLogin'])
			&& $_SESSION['statusLogin'] == 'YES')
	{
		header("location:user_info.php");
	}
	
	// TODO: SIGN IN
	isSignedin = DoSignIn($_POST['username'], $_POST['password']);
	
	if (isSignedin == TRUE)
	{
		$_SESSION['statusLogin'] = 'YES';
	}
?>
0, truyền đúng khóa
<?php
	session_start();
	ob_start();

	// TODO: CHECK SIGNED IN
	if (isset($_SESSION['statusLogin'])
			&& $_SESSION['statusLogin'] == 'YES')
	{
		header("location:user_info.php");
	}
	
	// TODO: SIGN IN
	isSignedin = DoSignIn($_POST['username'], $_POST['password']);
	
	if (isSignedin == TRUE)
	{
		$_SESSION['statusLogin'] = 'YES';
	}
?>
0 vào "mảng" session 
setcookie('cookie_name', 'hoang', time()+7200);
0session 
setcookie('cookie_name', 'hoang', time()+7200);
0

Demo

Tạo form đăng nhập trong trang signin_page.php

<html>
	<head>
		<title>Login</title>
	</head>
	<body>
		<form method="post" action="doSignin.php">
			<input name="username" placeholder="Username" type="text" />
			<input name="password" placeholder="Password" type="password" />
			<input name="submit" value="Login" type="submit"/>
		</form>
	</body>
</html>

Hướng dẫn php login set cookie - đặt cookie đăng nhập php

Tạo trang xử lý đăng nhập doSignin.php

<?php
	session_start();
	ob_start();

	// TODO: CHECK SIGNED IN
	if (isset($_SESSION['statusLogin'])
			&& $_SESSION['statusLogin'] == 'YES')
	{
		header("location:user_info.php");
	}
	
	// TODO: SIGN IN
	isSignedin = DoSignIn($_POST['username'], $_POST['password']);
	
	if (isSignedin == TRUE)
	{
		$_SESSION['statusLogin'] = 'YES';
	}
?>

Nếu

setcookie('cookie_name', 'hoang', time()+7200);
1 chưa tồn tại thì trang web sẽ xử lý việc đăng nhập 
setcookie('cookie_name', 'hoang', time()+7200);
2 còn nếu đã tồn tại thì được phép vào trang
setcookie('cookie_name', 'hoang', time()+7200);
3. Sau khi submit form đăng nhập thì dữ liệu
<?php
	session_start();
	ob_start();

	// TODO: CHECK SIGNED IN
	if (isset($_SESSION['statusLogin'])
			&& $_SESSION['statusLogin'] == 'YES')
	{
		header("location:user_info.php");
	}
	
	// TODO: SIGN IN
	isSignedin = DoSignIn($_POST['username'], $_POST['password']);
	
	if (isSignedin == TRUE)
	{
		$_SESSION['statusLogin'] = 'YES';
	}
?>
0 và
setcookie('cookie_name', 'hoang', time()+7200);
5 sẽ được truyền tới trang
setcookie('cookie_name', 'hoang', time()+7200);
6. Giả sử
<?php
	session_start();
	ob_start();

	// TODO: CHECK SIGNED IN
	if (isset($_SESSION['statusLogin'])
			&& $_SESSION['statusLogin'] == 'YES')
	{
		header("location:user_info.php");
	}
	
	// TODO: SIGN IN
	isSignedin = DoSignIn($_POST['username'], $_POST['password']);
	
	if (isSignedin == TRUE)
	{
		$_SESSION['statusLogin'] = 'YES';
	}
?>
0 và
setcookie('cookie_name', 'hoang', time()+7200);
5 đúng với dữ liệu trong database thì web sẽ cho phép đăng nhập và tạo ra session có tên
setcookie('cookie_name', 'hoang', time()+7200);
9 và gửi về trình duyệt web. còn nếu đã tồn tại thì được phép vào trang
setcookie('cookie_name', 'hoang', time()+7200);
3. Sau khi submit form đăng nhập thì dữ liệu
<?php
	session_start();
	ob_start();

	// TODO: CHECK SIGNED IN
	if (isset($_SESSION['statusLogin'])
			&& $_SESSION['statusLogin'] == 'YES')
	{
		header("location:user_info.php");
	}
	
	// TODO: SIGN IN
	isSignedin = DoSignIn($_POST['username'], $_POST['password']);
	
	if (isSignedin == TRUE)
	{
		$_SESSION['statusLogin'] = 'YES';
	}
?>
0 và
setcookie('cookie_name', 'hoang', time()+7200);
5 sẽ được truyền tới trang
setcookie('cookie_name', 'hoang', time()+7200);
6. Giả sử
<?php
	session_start();
	ob_start();

	// TODO: CHECK SIGNED IN
	if (isset($_SESSION['statusLogin'])
			&& $_SESSION['statusLogin'] == 'YES')
	{
		header("location:user_info.php");
	}
	
	// TODO: SIGN IN
	isSignedin = DoSignIn($_POST['username'], $_POST['password']);
	
	if (isSignedin == TRUE)
	{
		$_SESSION['statusLogin'] = 'YES';
	}
?>
0 và
setcookie('cookie_name', 'hoang', time()+7200);
5 đúng với dữ liệu trong database thì web sẽ cho phép đăng nhập và tạo ra session có tên
setcookie('cookie_name', 'hoang', time()+7200);
9 và gửi về trình duyệt web.

Chú ý: 

setcookie('cookie-name', 'hoang', time()-7200);
0 là 1 hàm hỗ trợ cache dữ liệu, nhiệm vụ lưu trữ dữ liệu và truyền dữ liệu sang trang khác đồng thời chuyển hướng đến trang đó bằng dòng code sau
setcookie('cookie-name', 'hoang', time()-7200);
1

Khái niệm

  • Cookie được tạo ra và lưu trữ tại client nói rõ hơn là tại máy tính hoặc các thiết bị khác. 1 cookie được tạo ra có thời gian tồn tại nhất định tùy thuộc vào người lập trình, chức năng và vai trò của nó trong website.
  • Chức năng của cookie khá giống với session. 1 ứng dụng đơn giản, dễ hiểu nhất của cookie là tự động đăng nhập tài khoản hoặc lưu thông tin đăng nhập, giỏ hàng trên website mà khi tắt trình duyệt web thậm chí restart máy tính thì cookie vẫn không bị hủy. Cookie được gửi tự động lên server khi truy cập vào website để thực hiện việc đăng nhập.
setcookie('cookie_name', 'hoang', time()+7200);

Trong đó:

  • setcookie('cookie-name', 'hoang', time()-7200);
    2: tên của key
  • setcookie('cookie-name', 'hoang', time()-7200);
    3: value
  • setcookie('cookie-name', 'hoang', time()-7200);
    4: thời gian tồn tại của cookie, trong trường hợp này
    setcookie('cookie-name', 'hoang', time()-7200);
    5 là thời gian hiện tại và được cộng thêm 2 giờ.

Để hủy 1 cookie cũng sử dụng lại dòng code trên trên nhưng là đặt thời gian là time()-7200.

setcookie('cookie-name', 'hoang', time()-7200);

Demo 

Tạo 1 form đăng nhập

setcookie('cookie-name', 'hoang', time()-7200);
6

<html>
	<head>
		<title>Login</title>
	</head>
	<body>
		<form method="post" action="doSignin.php">
			<input name="username" placeholder="Username" type="text"/>
			<input name="password" placeholder="Password" type="password"/>
			<label>
				<input name="remember" type="checkbox" value="" />
				Remember Me
			</label>
			<input type="submit" name="submit" value="Login"/>
		</form>
	</body>
</html>

Trong trường hợp này tại phần xử lý

setcookie('cookie-name', 'hoang', time()-7200);
7 kiểm tra xem nếu
setcookie('cookie-name', 'hoang', time()-7200);
8 tồn tại tức là ở bên form đăng nhập có chọn vào
setcookie('cookie-name', 'hoang', time()-7200);
9
<html>
	<head>
		<title>Login</title>
	</head>
	<body>
		<form method="post" action="doSignin.php">
			<input name="username" placeholder="Username" type="text"/>
			<input name="password" placeholder="Password" type="password"/>
			<label>
				<input name="remember" type="checkbox" value="" />
				Remember Me
			</label>
			<input type="submit" name="submit" value="Login"/>
		</form>
	</body>
</html>
0 thì website sẽ tạo ra 1 cookie để lưu trữ vào máy tính, còn nếu không thì chỉ tạo ra 1 session. tạo ra 1 cookie để lưu trữ vào máy tính, còn nếu không thì chỉ tạo ra 1 session.

Tiếp đến tạo 1 trang

setcookie('cookie_name', 'hoang', time()+7200);
6

<?php
	session_start();
	ob_start();
	
	// TODO: CHECK SIGNED IN
	if ((isset($_SESSION['ss_statusLogin']) &&
			$_SESSION['ss_statusLogin'] == 'YES) ||
		(isset($_COOKIE['cc_statusLogin']) &&
			$_COOKIE['cc_statusLogin'] == 'YES))
	{
		header("location:user_info.php");
	}
	
	// TODO: SIGN IN
	isSignedin = DoSignIn($_POST['username'], $_POST['password']);
	
	if (isSignedin == TRUE)
	{
		if(isset($_POST['remember']))
		{
			setcookie('cc_statusLogin', 'YES', time()+7200);
		}
		else
		{
			$_SESSION['ss_statusLogin'] = 'YES';
		}
	}
?>

Tạo trang

<html>
	<head>
		<title>Login</title>
	</head>
	<body>
		<form method="post" action="doSignin.php">
			<input name="username" placeholder="Username" type="text"/>
			<input name="password" placeholder="Password" type="password"/>
			<label>
				<input name="remember" type="checkbox" value="" />
				Remember Me
			</label>
			<input type="submit" name="submit" value="Login"/>
		</form>
	</body>
</html>
2 kiểm tra đăng nhập trước khi hiện thông tin bằng đoạn mã sau:

<?php
	session_start();
	ob_start();
	
	// TODO: CHECK SIGNED IN
	if ((!isset($_SESSION['ss_statusLogin']) ||
			$_SESSION['ss_statusLogin'] == 'NO') &&
		(!isset($_COOKIE['cc_statusLogin']) ||
			$_COOKIE['cc_statusLogin'] == 'NO'))
	{
		header("location:signin_page.php");
	}

	// SIGNED IN, SHOW INFO
?>

Ở trên thời gian tồn tại của cookie là 1 tuần, mỗi lần truy cập vào trang web cookie sẽ được gửi lên server và đăng nhập vào hệ thống bằng chính cookie này.