8 phương pháp phổ biến để truyền tham số giữa các tệp PHP

Bài viết này trình bày 8 phương pháp phổ biến để truyền tham số giữa các tệp PHP. Nội dung được phân loại theo ngữ cảnh sử dụng và mức độ an toàn, kèm ví dụ cụ thể giúp bạn dễ dàng áp dụng.
 
1. Biến siêu toàn cục (dùng để chia sẻ dữ liệu giữa các request)
 
1. $_GET / $_POST
Mục đích: Truyền tham số qua URL hoặc form (client → server)
Ví dụ:
 
“`php
// file1.php
<a href=”file2.php?id=123&name=John”>Chuyển tiếp</a>
 
// file2.php
$id = $_GET[‘id’];     // Nhận 123
$name = $_GET[‘name’]; // Nhận John
“`
 
Lưu ý: Cần lọc đầu vào bằng `filter_input()` để tránh tấn công XSS.
 
2. $_SESSION**
Mục đích: Giữ dữ liệu trong suốt phiên làm việc (yêu cầu `session_start()`)
Ví dụ:
 
“`php
// file1.php
session_start();
$_SESSION[‘user’] = ‘Alice’;
 
// file2.php
session_start();
echo $_SESSION[‘user’]; // In ra Alice
“`
 
An toàn: Cấu hình thêm các tùy chọn bảo mật như `session.cookie_httponly`.
 
3. $_COOKIE**
Mục đích: Lưu dữ liệu nhỏ trên client, được gửi lại mỗi request
Ví dụ:
 
“`php
// file1.php
setcookie(“theme”, “dark”, time() + 86400);
 
// file2.php
echo $_COOKIE[‘theme’]; // In ra dark
“`
 
Hạn chế: Dữ liệu giới hạn khoảng 4KB, dễ bị sửa đổi nên cần xác thực.
 
2. Bao gồm tệp (chia sẻ dữ liệu trong cùng request)**
 
**4. include / require + biến**
Mục đích: Chia sẻ trực tiếp biến trong cùng phạm vi
Ví dụ:
 
“`php
// config.php
$db_host = ‘localhost’;
 
// file1.php
include ‘config.php’;
echo $db_host; // In ra localhost
“`
 
Nhược điểm: Biến có thể bị trùng tên hoặc ghi đè ngoài ý muốn.
 
3. Lưu trữ qua file (dữ liệu bền vững)
 
5. Đọc/ghi tệp
Mục đích: Lưu và đọc dữ liệu tạm qua file
Ví dụ:
 
“`php
// file1.php
file_put_contents(‘data.txt’, ‘Hello World’);
 
// file2.php
$data = file_get_contents(‘data.txt’); // Đọc Hello World
“`
 
Lưu ý: Xử lý khóa file (`LOCK_EX`) để tránh xung đột khi nhiều request.
 
6. Cơ sở dữ liệu
Mục đích: Lưu và chia sẻ dữ liệu có cấu trúc (MySQL, v.v.)
Ví dụ:
 
“`php
// file1.php
$pdo = new PDO(‘mysql:host=localhost;dbname=test’, ‘user’, ‘pass’);
$pdo->exec(“INSERT INTO messages (content) VALUES (‘Hello’)”);
 
// file2.php
$stmt = $pdo->query(“SELECT content FROM messages”);
$data = $stmt->fetchAll();
“`
 
An toàn: Luôn dùng prepared statement để tránh SQL injection.
 
4. Tuần tự hóa & giải tuần tự hóa
 
7. serialize() và unserialize()
Mục đích: Lưu trữ mảng hoặc object phức tạp
Ví dụ:
 
“`php
// file1.php
$data = [‘name’ => ‘Bob’, ‘age’ => 30];
file_put_contents(‘data.dat’, serialize($data));
 
// file2.php
$data = unserialize(file_get_contents(‘data.dat’));
echo $data[‘name’]; // In ra Bob
“`
 
Rủi ro: Nếu dữ liệu không đáng tin cậy, có thể bị thực thi mã độc.
 
5. Lập trình hướng đối tượng
 
8. Thuộc tính tĩnh của class / Mẫu Singleton
Mục đích: Quản lý trạng thái toàn cục
Ví dụ:
 
“`php
// Config.php
class Config {
    public static $value = ‘default’;
}
 
// file1.php
Config::$value = ‘new value’;
 
// file2.php
echo Config::$value; // In ra new value
“`
 
So sánh và gợi ý sử dụng
 
| Phương pháp       | Ngữ cảnh phù hợp           | An toàn    | Bền vững     | Giới hạn dữ liệu |
| —————– | ————————– | ———- | ———— | —————- |
| $_GET / $_POST  | Truyền form / URL          | Thấp       | Không        | Nhỏ              |
| $_SESSION        | Dữ liệu phiên              | Cao        | Theo session | Vừa              |
| $_COOKIE         | Lưu cấu hình client        | Trung bình | Dài hạn      | Nhỏ              |
| include / require | Chia sẻ config nội bộ      | Trung bình | Không        | Lớn              |
| File              | Lưu dữ liệu không nhạy cảm | Thấp       | Dài hạn      | Lớn              |
| Database          | Dữ liệu có cấu trúc        | Cao        | Dài hạn      | Lớn              |
| serialize         | Dữ liệu dạng mảng/object   | Thấp       | Dài hạn      | Lớn              |
| Class tĩnh        | Quản lý cấu hình toàn cục  | Trung bình | Theo request | Lớn              |
 
Tóm tắt:
 
* Dữ liệu tạm thời: Ưu tiên `$_SESSION` hoặc `include` (chú ý phạm vi biến)
* Dữ liệu client: Dùng `$_GET`, `$_POST`, `$_COOKIE` (cần lọc kỹ đầu vào)
* Lưu trữ lâu dài: Sử dụng file hoặc database
* Quản lý trạng thái toàn cục: Dùng thuộc tính tĩnh hoặc singleton

Tài nguyên này được người dùng tải lên và nội dung được lấy từ Internet. Trang web này chỉ giới thiệu miễn phí để học tập và chia sẻ. Nếu có bất kỳ vấn đề bản quyền hoặc vấn đề nào khác, vui lòng liên hệ với biên tập viên của trang web này để xử lý!

Lưu ý quan trọng: : Nếu phần mềm liên quan đến thanh toán, thành viên, nạp tiền, v.v., thì đây là những hành động của nhà phát triển phần mềm hoặc công ty sở hữu phần mềm đó và không liên quan gì đến trang web này. Cư dân mạng cần phải tự đưa ra phán đoán của mình.

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *