-----
Phần 87.
Session
Đây là clip số 100:
- Khi khai báo biến trên một trang PHP, biến này chỉ tồn tại
và được nhận ra trên chính trang đó, khi người duyệt web chuyển trang (page)
khác thì toàn bộ các biến (và giá trị của biến) sẽ bị hủy, do vậy để lưu lại
giá trị của một biến nhằm sử dụng giữa các trang cần dùng tới session.
- Sử dụng session để lưu dữ liệu của người dùng trên server
- Nội dung của session chỉ được lưu tạm thời, nó sẽ bị xóa
sau khi người dùng rời khỏi website
- Mỗi session có một định danh riêng
- Vị trí lưu session được quy định tại mục session.save_path
trong php.ini
- Mỗi người truy cập (visitor) sẽ được tạo một chuỗi duy
nhất, thông tin sẽ được chứa trong chuỗi duy nhất này
Một số hàm của session:
- session_start(): khởi tạo session
- Cập nhật thông tin session thông qua biến $_SESSION
- Xóa session: unset(), session_unset(), session_destroy()
Ví dụ:
// khởi tạo session
session_start();
// tạo session
$_SESSION['name'] =
'Nguyễn Văn Tèo';
echo $_SESSION['name'];
// thay đổi giá trị của
session
$_SESSION['name'] =
'abc';
echo '<br />' .
$_SESSION['name'];
// kiểm tra session có
tồn tại?
if
(isset($_SESSION['age'])) {
$_SESSION['age'] = 10;
} else {
$_SESSION['age'] = 20;
}
echo '<br />' .
$_SESSION['age'];
unset($_SESSION['age']);
if
(isset($_SESSION['age'])) {
echo 'Tồn tại';
} else {
echo 'Không tồn tại';
}
Đây là clip số 101:
Các nội dung có thể lưu vào session: biến, mảng, hàm, tập
tin, hình ảnh
Ví dụ,
Lưu biến vào session,
$variable = 'abc';
session_start();
$_SESSION['var'] =
$variable;
echo '<pre>';
print_r($_SESSION);
echo '</pre>';
Lưu mảng vào session,
$arr = array(
array('tên' =>
'Tèo', 'tuổi' => 10),
array('tên' =>
'Tí', 'tuổi' => 11),
array('tên' =>
'Sửu', 'tuổi' => 12)
);
session_start();
// xóa các session trước
đó
session_unset();
$_SESSION['arr'] = $arr;
echo '<pre>';
print_r($_SESSION);
echo '</pre>';
Lưu hàm vào session:
session_start();
// xóa các session trước
đó
session_unset();
$_SESSION['func'] =
'function checkNumber($number) {
return($number % 2 ? "số lẻ" : "số chẵn");
}';
eval($_SESSION['func']);
// hàm eval($code) sẽ in ra, đánh giá và kiểm tra đoạn code $code theo cú pháp PHP
echo checkNumber(2);
Lưu file vào session,
<?php
session_start();
//xóa các session trước
đó
session_unset();
$_SESSION['file'] =
'<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>PHP</title>
</head>
<body>
<h1>This is a file</h1>
<?php
function checkNumber($number) {
return($number % 2 ? "số lẻ" : "số chẵn");
}
?>';
eval('?>' .
$_SESSION['file']);
echo checkNumber(3);
?>
Lưu ảnh vào session, (chỉ để mã PHP sẽ chạy)
<?php
session_start();
//xóa các session trước
đó
session_unset();
$image = 'images/bg.jpg';
if (file_exists($image))
{
// lấy thông tin của
một tập tin hình ảnh
$_SESSION['image']['info'] = getimagesize($image);
// lấy nội dung của
hình ảnh
$_SESSION['image']['data'] = file_get_contents($image);
} else {
echo 'Tập tin không tồn
tại';
}
header('Content-type:
image/jpeg');
echo
$_SESSION['image']['data'];
?>
Sử dụng hàm header() để xác định kiểu dữ liệu sẽ xuất.
Hàm session_encode(): chuyển nội dung đang được lưu trong
session thành một chuỗi đặc biệt
Hàm session_decode(): phân tích chuỗi đặc biệt do hàm
session_encode() tạo ra và lưu vào session.
Ví dụ về hàm session_encode(),
session_start();
//xóa các session trước
đó
session_unset();
$_SESSION['var'] = 'abc';
$session =
session_encode();
echo $session;
Kết quả xuất ra màn hình là: var|s:3:"abc";
Ví dụ về session_decode(),
session_start();
//xóa các session trước
đó
session_unset();
$_SESSION['var'] = 'abc';
$session =
session_encode();
echo $session;
// xóa session
session_unset();
// in sẽ thấy session
rỗng
echo '<pre>';
print_r($_SESSION);
echo '</pre>';
// khôi phục lại giá trị
cũ của session
session_decode($session);
// in sẽ thấy session
được phục hồi
echo '<pre>';
print_r($_SESSION);
echo '</pre>';
-----------
Cập nhật [4/1/2018]
-----------
Xem thêm: