

Nhận dạng trình duyệt và nền tảng trong PHP
- 18-03-2023
- Toanngo92
- 0 Comments
Dựa trên đầu vào do người dùng cung cấp, kiểu trình duyệt hoặc các số được tạo ngẫu nhiên, PHP có thể cung cấp nội dung động cho người dùng.
PHP sử dụng các biến môi trường có sẵn trên trang phpinfo.php để xây dựng môi trường PHP. PHP cung cấp hàm phpinfo() để xem thông tin PHP và hàm getenv() để truy cập giá trị của tất cả các biến môi trường.
Ví dụ: HTTP_USER_AGENT là một biến môi trường. Đây là một trong những biến môi trường do PHP thiết lập, giúp nhận diện trình duyệt và hệ điều hành của người dùng. Biến này có thể được sử dụng để tạo nội dung trình duyệt phù hợp dựa theo trình duyệt hay hệ điều hành của người dùng.
Ví dụ:
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
<?php
// $viewer = $_SERVER['HTTP_USER_AGENT'];
$viewer = $_SERVER['HTTP_SEC_CH_UA'];
$browser = "An unidentified browser";
if(preg_match('/Google Chrome/i', "$viewer")) {
$browser = "Google Chrome";
}
else if(preg_match('/Brave/i',"$viewer")){
$browser = "Brave";
}
else if(preg_match('/Microsoft Edge/i',"$viewer")){
$browser = "Microsoft Edge";
}
/* do not use this solution */
// if(preg_match('/MSIE/i', "$viewer")) {
// $browser = "Internet Explorer";
// }
// elseif (preg_match('/Netscape/i', "$viewer")) {
// $browser = "Netscape";
// }
// elseif (preg_match('/Mozilla/i', "$viewer")) {
// $browser = "Mozilla";
// }
$useragent = $_SERVER['HTTP_USER_AGENT'];
$platform = "An unidentified operating system!";
if(preg_match('/Windows/i', "$useragent")) {
$platform = "Windows!";
}
elseif (preg_match('/Linux/i', "$useragent")) {
$platform = "Linux!";
}
/* do not use this solution */
echo "Browser: $browser<br>";
echo "Platform: $platform";
?>
</body>
</html>
Ở ví dụ trên, hàm preg_match() giúp nhận dạng trình duyệt dựa trên HTTP_USER_AGENT. Hơn nữa, nó bao gồm mã để kiểm tra hệ điều hành của người dùng, có thể là Linux hoặc Windows.
Bài tập
Use this SQL statements below to create database and insert sample data use for the exam:
CREATE DATABASE product_management;
USE product_management;
CREATE TABLE products (
id INT AUTO_INCREMENT PRIMARY KEY,
product_name VARCHAR(255) NOT NULL UNIQUE,
price INT CHECK (price > 0),
stock INT CHECK (stock >= 1)
);
CREATE TABLE orders (
id INT AUTO_INCREMENT PRIMARY KEY,
product_id INT,
quantity INT CHECK (quantity > 0),
order_date DATE DEFAULT (CURDATE()),
FOREIGN KEY (product_id) REFERENCES products(id) ON DELETE RESTRICT
);
INSERT INTO products (product_name, price, stock) VALUES
('Dell Inspiron Laptop', 15000000, 20),
('HP Pavilion Laptop', 18000000, 5),
('MacBook Air M1', 25000000, 15),
('Logitech Wireless Mouse', 500000, 50),
('Razer Mechanical Keyboard', 2000000, 8),
('Sony WH-1000XM4 Headphones', 7000000, 12),
('LG 24-inch Monitor', 3500000, 25),
('Samsung 1TB SSD', 3200000, 18);
INSERT INTO orders (product_id, quantity) VALUES
(1, 2),
(3, 1),
(6, 3);
Câu 1:
Hiển thị danh sách sản phẩm có điều kiện lọc
Tạo tệp index.php và viết mã PHP để hiển thị danh sách tất cả các sản phẩm, được sắp xếp theo giá theo thứ tự giảm dần
Khi người dùng nhấp vào “Thêm sản phẩm”, họ sẽ điều hướng đến add_product.php
Khi người dùng nhấp vào “chỉnh sửa”, họ sẽ điều hướng đến edit_product.php với tham số chứa id của sản phẩm hiện tại.
Câu 2:
Trong tệp add_product.php, Tạo biểu mẫu để nhập thông tin chi tiết về sản phẩm (tên, giá, kho) và xử lý việc chèn vào bảng sản phẩm.
Xác thực rằng product_name là duy nhất.
Đảm bảo giá lớn hơn 0 và kho ít nhất là 1.
Câu 3:
Trong edit_product.php Tạo một biểu mẫu để cập nhật tên, giá và kho của sản phẩm dựa trên id của sản phẩm đó.
Đảm bảo id tồn tại trước khi cập nhật.
Xác thực rằng product_name là duy nhất.
Đảm bảo giá lớn hơn 0 và kho ít nhất là 1.
Câu 4:
Hiển thị danh sách sản phẩm có nút "Xóa" cho mỗi hàng.
Hiển thị cảnh báo xác nhận bằng JavaScript trước khi xóa.
Nếu sản phẩm có đơn hàng hiện tại, hãy ngăn chặn việc xóa và thông báo cảnh báo "Không thể xóa sản phẩm vì đã có trong đơn hàng!".
Nếu không, hãy xóa sản phẩm khỏi cơ sở dữ liệu