Bài 13: Session & Cookie trong PHP

Session và Cookie là hai phương pháp được sử dụng để quản lý các phiên làm việc giữa người dùng và hệ thống. Việc quản lý phiên làm việc này sẽ giúp bạn chứng thực hiệu quả bởi việc xác nhận thông tin trước khi truy cập vào một phân vùng cố định. Ngoài ra, việc quản lý tốt phiên làm việc cũng giúp ...

Session và Cookie là hai phương pháp được sử dụng để quản lý các phiên làm việc giữa người dùng và hệ thống. Việc quản lý phiên làm việc này sẽ giúp bạn chứng thực hiệu quả bởi việc xác nhận thông tin trước khi truy cập vào một phân vùng cố định. Ngoài ra, việc quản lý tốt phiên làm việc cũng giúp người truy cập cảm thấy dễ dàng sử dụng dịch vụ của trang web cho những lần truy cập sau. Bởi cơ chế quản lý phiên làm việc ghi nhận lại quá trình truy cập của người sử dụng khi họ thăm trang web của bạn lần đầu.

1. Session là gì.

Biến Session trong PHP được dùng để lưu trữ thông tin phiên làm việc của người dùng hoặc là lưu trữ tùy chọn cấu hình hệ thống cho người dùng. Mỗi client sẽ có một ID session khác nhau nên việc thông tin Session ở Client A bị ảnh hưởng qua Client B là điều không thể. Thông thường chúng ta sử dụng Session để lưu thông tin đăng nhập, giỏ hàng hoặc những dữ liệu mang tính chất tạm thời và mỗi client sẽ có dư liệu khác nhau.

1.1 Đăng ký session.

Khi bạn muốn sử dụng session thì bạn phải khai báo cho PHP biết bằng cách đặt dòng lệnh session_start() phía trên đầu mỗi file. Nếu bạn dùng nhiều file include lẫn nhau thì đặt nó ở file chính.

Cú pháp

session_start();

Dòng lệnh session_start() sẽ đăng ký một phiên làm việc của người dùng trên Server-side, từ đó Server-side sẽ tạo ra một ID riêng không trùng lặp để nhận diện cho client hiện tại.

1.2 Lưu trữ session

Tất cả session được lưu trữ trong biến toàn cục $_SESSION, Để lưu thêm dữ liệu session hoặc thay đổi dữ liệu của session thì ta sẽ thao tác trên biến đó.

Trước khi lấy giá tri của một key session nào đó thì bạn phải kiểm tra key session đó có tồn tại không.

Ví dụ: Tôi muốn lấy key lưu thông tin đăng nhập $_SESSION['loged_id'] của người sử dùng.

$loged_id = isset($_SESSION['loged_id'])? $_SESSION['loged_id'] : 0;

Để lưu một giá trị mới vào session ta dùng cú pháp như sau:

$_SESSION['session_name'] = $session_value

Để lấy giá trị sssion ta dùng cú pháp sau:

$session = $_SESSION['session_name']

Ví dụ: Lưu và lấy giá trị session

<?php 
	// Lưu giá trị session
	$_SESSION['name'] = 'Nguyễn Văn A';
	
	// Lấy giá trị session
	$name = ';
	if(isset($_SESSION['name'])){
		$name = $_SESSION['name'];
	}
	echo $name;
?>

  Run

1.3. Xóa session

Tất cả các giá trị session đều lưu trữ trong biến $_SESSION nên để xóa nó các bạn chỉ việc dùng hàm unset($_SESSION['session_name']), trong đó hàm unset dùng để giải phóng một biến ra khỏi bộ nhớ.

Nếu bạn muốn xóa hết tất cả các session thì ta dùng hàm session_destroy().

Ví dụ:

// Xóa session name
unset($_SESSION['name']);
  
// Xóa hết session
session_destroy();

2. Cookie là gì?

Cookie là một phần dữ liệu được lưu trên máy client. Khi client gửi một yêu cầu tới máy chủ nào đó, thì nó sẽ gửi phần dữ liệu được lưu trong cookie tương ứng với máy chủ đó.

Người ta thường dùng cookies để lưu trữ các thông tin có liên quan đến các phiên làm việc khác nhau (qua nhiều lần đóng và mở session). Vì giao thức HTTP là giao thức không lưu trạng thái (Mỗi khi xử lý xong một yêu cầu từ máy client là nó sẽ ngắt kết nối và có thể kết thúc phiên), nên cookie sinh ra để làm nhiệm vụ lưu trữ một số biến trạng thái để khắc phục nhược điểm này.

Khác với dữ liệu gửi từ form thì cookie sẽ được trình duyệt tự động gửi đi theo mỗi lần truy cập lên máy chủ. Trong quá trình làm việc, cookie có thể bị thay đổi giá trị. Cookie sẽ bị vô hiệu hoá nếu cửa sổ trình duyệt điều khiển cookie đóng lại và cookie hết thời gian có hiệu lực. Theo mặc định, thời gian “sống” của cookie tồn tại cho đến khi cửa sổ trình duyệt sử dụng cookie bị đóng. Tuy nhiên người ta có thể thiết lập tham số thời gian để cookie có thể sống lâu hơn (6 tháng chẳng hạn). Ví dụ như chế độ Remember ID & Password của 1 số trang web.

2.1 Lưu trữ Cookie

Để lưu trữ Cookie ta dùng cú pháp sau: 

setcookie($name, $value, $expire, $path, $domain).

Trong đó:

  • $name: là tên của cookie
  • $value: giá trị của cookie
  • $expire: thời gian sống của cookie
  • $path : đường dẫn lưu trữ cookie
  • $domain: tên của domain.

Ví dụ:

// Lưu trũ tên người đăng nhập trong thời gian 1 ngày 
setcookie('loged_name','Nguyến Văn A',time()+24*60*60);

2. Lấy giá trị Cookie

Tất cả cookie được lưu trữ trong biến toàn cục $_COOKIE nên để lấy giá trị cookie ta dùng cú pháp sau: $bien = $_COOKIE['cookie_name']. 

Cũng như lưu ý ở phần session bạn nên kiểm tra có tồn tại cookie không trước khi lấy nhé, nếu không sẽ bị thông báo lỗi nếu nó không tồn tại.

Ví dụ: Lấy giá tri loged_name vừa lưu trữ ở trên.

if(isset($_COOKIE['loged_name'])){
    $loged_name = $_COOKIE['loged_name'];
}

2.3 Xóa Cookie

Để xóa cookie bạn chỉ việc thiết lập thời gian sống của nó nhỏ hơn hoặc bằng giá trị hiện tại.

Ví dụ: Xóa Cookie đã thiết lập ở trên

setcookie("loged_name", "", time()-3600);

Tổng kết:

Trong bài này bạn đã lắm được các khái niệm cơ bản của session và cookie trong PHP. 

Bài liên quan

[BÀI 14] SESSION VÀ COOKIE TRONG PHP

SESSION Session là 1 biến tồn tại trên máy chủ (server) biến này không bị mất đi cho tới khi có lệnh hủy hoặc sau 1 khoảng thời gian nhất định mà người dùng không sử dụng đến biến này. Khác với biến dạng POST dữ liệu sau khi refresh lại trang sẽ bị mất đi, và GET cũng tương tự. Nhưng với ...

Trần Trung Dũng viết 3 tuần trước

Bài 13: Phép Join trong MySQL

Như mình đã nói ở trên thì phép JOIN giúp bạn truy vấn dữ liệu từ hai hay nhiều bảng dữ liệu với nhau. Trên thực tế thì đôi khi bạn không cần phép JOIN bạn cũng có khả năng giải quyết bài toán của bạn nhưng nó sẽ phức tạp hơn. Số lượng kết nối tới mấy chủ CSDL sẽ nhiều hơn ảnh hưởng trực tiếp tới ...

Bùi Văn Nam viết 3 tuần trước

Bài 16: Upload file trong PHP

Để có thể upload được một file hoặc nhiều file chúng ta cần có: Form phải chỉ định thuộc tính enctype="multipart/form-data" Thẻ Input field có thuộc tính type="file" Để có thể upload được nhiều file bạn có thể thiết lập thêm thuộc tính multiple="multiple" ...

Trần Trung Dũng viết 3 tuần trước

Bài 13: Session & Cookie trong PHP

Session và Cookie là hai phương pháp được sử dụng để quản lý các phiên làm việc giữa người dùng và hệ thống. Việc quản lý phiên làm việc này sẽ giúp bạn chứng thực hiệu quả bởi việc xác nhận thông tin trước khi truy cập vào một phân vùng cố định. Ngoài ra, việc quản lý tốt phiên làm việc cũng giúp ...

Hoàng Hải Đăng viết 3 tuần trước

Bài 15: Template interface trong php

Cú pháp : interface [interfaceName] Thoạt nhìn qua các ta thấy Interface rất giống với Abstract trong php ? Nhưng về bản chất bên trong hoàn toàn khác nhau. Interface không phải là một lớp cụ thể mà là một khuôn mẫu để cho một đối tượng implement nó, và đương nhiên là ta không thể tạo một biến ...

Tạ Quốc Bảo viết 3 tuần trước
0