Cookie là tập tin được lưu ở máy người dùng [cụ thể là tại Web Browser]. Được gởi kèm theo Request đến Web Server.
Cookie được sử dụng với mục đích sau:
- Dùng để theo dõi hoạt động truy cập. Ví dụ nhớ tên người dùng truy cập vào website có thể hoạt động qua các bước như sau:
- Server gửi các cookie cho browser [ví dụ tên người dùng: username] ...
- Web Browser lưu lại thông tin này trong file cookie.
- Lần sau Web Browser sẽ gửi ngược các Cookie này lên Server và Server sẽ nhận được Cookie, từ đó xác định được thông tin [như username] ...
- Dùng để theo dõi thói quen/hành vi của người dùng. Ví dụ: người dùng thích sử dụng tông màu Tối [hỗ trợ mắt] trên trang web.
- Lần đầu truy cập trang web, người dùng sẽ hiệu chỉnh cấu hình trang web thành nền tối
- Server sẽ gửi các cookie cho Web Browser [ví dụ: màu nền, class "dark-theme", ...]
- Web Browser lưu lại thông tin này trong file cookie.
- Lần sau Web Browser sẽ gửi ngược các Cookie này lên Server và Server sẽ nhận được Cookie, từ đó xác định được thông tin [như màu nền yêu thích, ...] ...
Thiết lập Cookie
Từ PHP có thể thiết lập Cookie bằng hàm
setcookie
[nhớ phải gọi trước các dòng code xuất html].
setcookie[name, value, expire, path, domain, security, httponly];
name
là tên cookie, tên này được sử dụng để truy cập vào biến $_COOKIE để lấy thông tinvalue
giá trị gán cho cookie";
else
echo "Không có tên" . "
";
?>
0 Thời điểm hết hạn [hủy] của cookie";
else
echo "Không có tên" . "
";
?>
1 đường dẫn thư mục mà cookie có hiệu lực. Sử dụng ";
else
echo "Không có tên" . "
";
?>
2 cho biết cookie có hiệu lực ở mọi thư mục truy cập.";
else
echo "Không có tên" . "
";
?>
3 tên miền";
else
echo "Không có tên" . "
";
?>
4 = 1 nếu sử dụng HTTPS";
else
echo "Không có tên" . "
";
?>
5= 1 nếu sử dụng chỉ giao thức http
Truy cập Cookie
Bạn dùng biến
";
else
echo "Không có tên" . "
";
?>
6 là một mảng để truy cập thông tin cookie do trình duyệt gửi lên. Giống như
";
else
echo "Không có tên" . "
";
?>
7 bạn nên dùng
";
else
echo "Không có tên" . "
";
?>
8 để kiểm tra sự tồn tại của COOKIE.
";
else
echo "Không có tên" . "
";
?>
Xóa Cookie
Để yêu cầu trình duyệt xóa cookie bạn sử dụng chính hàm setcookie với thủ thuật đặt thời gian đã hết hạn [set thời gian về quá khứ]. Ví dụ, lấy thời gian hiện tại trừ đi 60s:
setcookie[ "name", "", time[]- 60, "/","", 0];
Thực hành Tạo chức năng Ghi nhớ Đăng nhập
WorkFlow xử lý chức năng Ghi nhớ Đăng nhập
Mong muốn
- Nếu người dùng đã đăng nhập Thành công trang web trong 15' trước đó rồi, thì không cần hiển thị Form đăng nhập nữa -> mà chuyển hướng người dùng sang trang chủ.
- Nếu người dùng chưa từng đăng nhập hoặc Cookie đã hết hạn sử dụng thì:
- Xử lý logic/nghiệp vụ kiểm tra đăng nhập
- Nếu thông tin Đăng nhập hợp lệ thì lưu vào Cookie giá trị
";
else
echo "Không có tên" . "
";
?>
9 và setcookie[ "name", "", time[]- 60, "/","", 0];
0 - Nếu thông tin Đăng nhập không hợp lệ thì hiển thị thông báo lỗi.
Step 1: tạo form Đăng nhập
- Tạo file
setcookie[ "name", "", time[]- 60, "/","", 0];
1 - Nội dung file:
Cookie trong PHP | Nền tảng VN
Cookie trong PHP
Tài khoản:
Mật khẩu:
Ghi nhớ đăng nhập:
Xin chào $username!";
} else {
echo "Đăng nhập thất bại!";
}
}
?>
Step 2: lưu trữ giá trị đã đăng nhập trong Cookie và Yêu cầu Web Browser của người dùng lưu trữ giá trị này
- Sử dụng hàm
setcookie[ "name", "", time[]- 60, "/","", 0];
2 trong PHP để lưu trữ giá trị trong PHP - Chúng ta sẽ xử lý logic/nghiệp vụ như sau:
- Nếu đăng nhập thành công và người dùng có check chọn
setcookie[ "name", "", time[]- 60, "/","", 0];
3 thì chúng ta sẽ lưu trữ giá trị setcookie[ "name", "", time[]- 60, "/","", 0];
4 và setcookie[ "name", "", time[]- 60, "/","", 0];
5 vào Cookie với thời hạn là setcookie[ "name", "", time[]- 60, "/","", 0];
6
- Hiệu chỉnh code như sau:
Cookie trong PHP | Nền tảng VN
Cookie trong PHP
Tài khoản:
Mật khẩu:
Ghi nhớ đăng nhập:
tiến hành lưu thông tin vào COOKIE và gởi lại người dùng
if[$remember_me == 1] {
// Thiết lập Cookie "Ghi nhớ đăng nhập" trong 15' ~ 3600s
setcookie['is_logged', true, time[]+ 3600, '/'];
// Thiết lập Cookie "Tên username đã đăng nhập" trong 15' ~ 3600s
setcookie["username_logged", $username, time[]+3600, "/","", 0];
}
// Hiển thị thông tin chào mừng
echo "Xin chào $username!
";
} else {
echo "Đăng nhập thất bại!";
}
}
?>
Step 3: bổ sung phần kiểm tra giá trị trong Cookie
- Chúng ta sẽ kiểm tra trong Cookie, nếu:
- Đã có giá trị của người dùng đăng nhập
setcookie[ "name", "", time[]- 60, "/","", 0];
4 và setcookie[ "name", "", time[]- 60, "/","", 0];
5 thì không cần xử lý logic/nghiệp vụ đăng nhập nữa. Hiển thị màn hình chào mừng và điều hướng người dùng đến trang chủ trong setcookie[ "name", "", time[]- 60, "/","", 0];
9.
- Hiệu chỉnh code như sau:
Cookie trong PHP | Nền tảng VN
Cookie trong PHP
$username_logged! Bạn đã đăng nhập rồi.";
echo "Bạn sẽ được chuyển đến trang chủ trong 5s;";
echo '';
die;
}
?>
Tài khoản:
Mật khẩu:
Ghi nhớ đăng nhập:
tiến hành lưu thông tin vào COOKIE và gởi lại người dùng
if[$remember_me == 1] {
// Thiết lập Cookie "Ghi nhớ đăng nhập" trong 15' ~ 3600s
setcookie['is_logged', true, time[]+ 3600, '/'];
// Thiết lập Cookie "Tên username đã đăng nhập" trong 15' ~ 3600s
setcookie["username_logged", $username, time[]+3600, "/","", 0];
}
// Hiển thị thông tin chào mừng
echo "Xin chào $username!
";
} else {
echo "Đăng nhập thất bại!";
}
}
?>
Thực hành Tạo chức năng Cấu hình Giao diện
WorkFlow xử lý chức năng Cấu hình Giao diện
- Tạo 2 class cho 2 tông màu sáng
Cookie trong PHP | Nền tảng VN
Cookie trong PHP
Tài khoản:
Mật khẩu:
Ghi nhớ đăng nhập:
Xin chào $username!";
} else {
echo "Đăng nhập thất bại!";
}
}
?>
0 và tông màu tối
Cookie trong PHP | Nền tảng VN
Cookie trong PHP
Tài khoản:
Mật khẩu:
Ghi nhớ đăng nhập:
Xin chào $username!";
} else {
echo "Đăng nhập thất bại!";
}
}
?>
1 - Sau khi người dùng chọn tông màu yêu thích thì sử dụng hàm
setcookie[ "name", "", time[]- 60, "/","", 0];
2 yêu cầu trình duyệt [web browser] lưu giá trị
Cookie trong PHP | Nền tảng VN
Cookie trong PHP
Tài khoản:
Mật khẩu:
Ghi nhớ đăng nhập:
Xin chào $username!";
} else {
echo "Đăng nhập thất bại!";
}
}
?>
3 - Khi người dùng truy cập trang web lần thứ 2 trở đi, kiểm tra Cookie có tồn tại giá trị của
Cookie trong PHP | Nền tảng VN
Cookie trong PHP
Tài khoản:
Mật khẩu:
Ghi nhớ đăng nhập:
Xin chào $username!";
} else {
echo "Đăng nhập thất bại!";
}
}
?>
4 hay không? Nếu có thì hiển thị tông màu theo ý thích người dùng.
Step 1: tạo file ví dụ Cấu hình giao diện
Cookie trong PHP | Nền tảng VN
Cấu hình Giao diện sử dụng Cookie trong PHP
Giao diện nền Sáng
Giao diện nền Tối
Cấu hình đã được lưu!";
}
?>
Xem thêm về bảo mật liên quan đến Cookie/Session
Many of these configuration arguments are important for preventing attacks such as Cross-Site Scripting [XSS], Cross-Site Request Forgery [CSRF], Cookie Theft and Manipulation, Session Hijacking, and Session Fixation.