STDIO
Tìm kiếm gần đây
    • Nội dung
    • QR Code
    • 0
    • 0
    • Sao chép

    Giới Thiệu Session và Cookie với PHP

    Khái niệm, chức năng và hướng dẫn cài đặt, sử dụng session, cookie trong PHP.
    28/08/2015
    09/09/2020
    4 phút đọc
    Giới Thiệu Session và Cookie với 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.

    Khai báo 1 biến

    $_SESSION['username'] = 'stdio_member';  session với khóa username có giá trị là stdio_member

    Hủy 1 session

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

    Ví dụ với khoá username, gọi hàm unset($_SESSION['username']); để 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.

    Ví dụ username, gọi hàm isset($_SESSION['username']); 

    Hàm này sẽ trả về true nếu username đã 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.

    Ví dụ với khoá username, truyền đúng khóa username vào "mảng" session $_SESSION['username']

    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>
    

    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 $_SESSION['statusLogin'] chưa tồn tại thì trang web sẽ xử lý việc đăng nhập signin_page.php còn nếu đã tồn tại thì được phép vào trang user_info.php. Sau khi submit form đăng nhập thì dữ liệu usernamepassword sẽ được truyền tới trang doSignin.php. Giả sử usernamepassword đú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 statusLogin và gửi về trình duyệt web.

    Chú ý: ob_start(); 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 header("location:addressOfPage.php");

    Cookie 

    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.

    Cách khởi tạo cookie

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

    Trong đó:

    • 'cookie_name': tên của key
    • 'hoang': value
    • time()+7200: thời gian tồn tại của cookie, trong trường hợp này time() 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 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"/>
    			<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ý doSignin.php kiểm tra xem nếu $_POST['remember'] tồn tại tức là ở bên form đăng nhập có chọn vào checkboxRemember Me 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.

    Tiếp đến tạo 1 trang doSignin.php

    <?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 user_info.php 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.

    0 Bình luận
    PHP

    Đề xuất

    Định Dạng Ảnh Bitmap - Giới Thiệu và Các Thao Tác Cơ Bản
    Trong đời thường, bạn sẽ gặp các file ảnh có định dạng .PNG, .JPG, .TGA, ...
    Hello MFC - Giới Thiệu và Tạo Project MFC
    Giới thiệu về MFC và tạo project đầu tiên với MFC bằng Visual Studio.

    Khám phá

    Lệnh trong Linux - Giới Thiệu
    Giới thiệu về Script trong Linux và 1 số lệnh cơ bản trong Linux.
    04/11/2020
    Dynamic Web Application với Eclipse Helios và Tomcat Server
    Hướng dẫn tạo ứng dụng web bằng IDE Eclipse Helios và Apache Tomcat Web ...
    09/09/2017
    EmguCV - OpenCV cho .NET - Giới Thiệu và Cách Tích Hợp vào .NET
    Giới thiệu về wrapper EmguCV của OpenCV và hướng dẫn cách tích hợp ...
    SESSION Trong PHP
    Tìm hiểu về cách hoạt động của session trong PHP.
    09/03/2017
    Làm Quen với SQL Server
    Giới thiệu SQL Server của Microsoft và hướng dẫn thao tác với dữ liệu ...
    30/07/2015
    Box2D - Phần 1: Giới Thiệu - Một Số Thuật Ngữ và Khái Niệm
    Giới thiệu engine xử lý vật lý Box2D, các khái niệm, cách thành phần ...
    Arduino với IC 74HC595
    Giới thiệu nguyên tắc hoạt động của IC 74HC595 và cách sử dụng IC ...
    Giới Thiệu về Arduino Mega 2560
    Bài viết đưa cho các bạn về cái nhìn khái quát về Arduino Mega 2560. ...
    Khi bạn nhấn vào liên kết sản phẩm do STDIO đề xuất và mua hàng, STDIO có thể nhận được hoa hồng. Điều này hỗ trợ STDIO tạo thêm nhiều nội dung hữu ích. Tìm hiểu thêm.
    STDIO

    Trang chính

    Công ty TNHH STDIO

    30, Trịnh Đình Thảo, Hòa Thạnh, Tân Phú, Hồ Chí Minh
    +84 28.36205514 - +84 942.111912
    developer@stdio.vn

    383/1 Quang Trung, Phường 10, Quận Gò Vấp, Hồ Chí Minh
    Số giấy phép ĐKKD: 0311563559 do sở Kế hoạch và Đầu Tư TPHCM cấp ngày 23/02/2012

    Đã thông báo Bộ Công Thương
    ©STDIO, 2013 - 2020