Chuyển đến nội dung
Nội dung học:
1. Tổng quan về làm việc với tệp trong PHP
- PHP cung cấp các hàm mạnh mẽ để đọc, ghi, và quản lý tệp trên hệ thống máy chủ.
- Một số thao tác phổ biến:
- Mở tệp.
- Đọc/ghi nội dung tệp.
- Kiểm tra tồn tại của tệp.
- Xóa tệp.
2. Mở và đóng tệp
- Sử dụng hàm
fopen()
để mở tệp.
- Sử dụng các chế độ mở tệp phổ biến:
r
: Mở tệp chỉ để đọc.
w
: Mở tệp chỉ để ghi, xóa nội dung cũ.
a
: Mở tệp chỉ để ghi, thêm vào cuối tệp.
- Luôn đóng tệp bằng hàm
fclose()
sau khi sử dụng.
- Ví dụ:
$tep = fopen("dulieu.txt", "r"); if ($tep) { echo "Mở tệp thành công."; fclose($tep); } else { echo "Không thể mở tệp."; }
3. Đọc nội dung tệp
- Các cách đọc tệp:
fgets()
: Đọc từng dòng.
fread()
: Đọc một số byte nhất định.
file()
: Đọc toàn bộ tệp vào một mảng.
file_get_contents()
: Đọc toàn bộ tệp vào một chuỗi.
- Ví dụ:
$tep = fopen("dulieu.txt", "r"); if ($tep) { while (($dong = fgets($tep)) !== false) { echo $dong . "<br>"; } fclose($tep); } else { echo "Không thể đọc tệp."; }
4. Ghi nội dung vào tệp
- Các cách ghi tệp:
fwrite()
: Ghi dữ liệu vào tệp.
file_put_contents()
: Ghi toàn bộ dữ liệu vào tệp (ghi đè).
- Ví dụ:
$tep = fopen("dulieu.txt", "w"); if ($tep) { fwrite($tep, "Xin chào, PHP!\n"); fclose($tep); echo "Ghi tệp thành công."; } else { echo "Không thể ghi tệp."; }
5. Kiểm tra và quản lý tệp
- Kiểm tra sự tồn tại của tệp:
if (file_exists("dulieu.txt")) { echo "Tệp tồn tại."; } else { echo "Tệp không tồn tại."; }
- Xóa tệp:
if (unlink("dulieu.txt")) { echo "Tệp đã được xóa."; } else { echo "Không thể xóa tệp."; }
6. Làm việc với tệp tải lên
- Tạo Form tải tệp:
<form action="upload.php" method="post" enctype="multipart/form-data"> Chọn tệp để tải lên: <input type="file" name="tep"> <input type="submit" value="Tải lên"> </form>
- Xử lý tệp tải lên:
<?php if ($_SERVER["REQUEST_METHOD"] == "POST") { if (isset($_FILES['tep']) && $_FILES['tep']['error'] == 0) { $thu_muc = "uploads/"; $duong_dan = $thu_muc . basename($_FILES['tep']['name']); if (move_uploaded_file($_FILES['tep']['tmp_name'], $duong_dan)) { echo "Tệp đã được tải lên: $duong_dan"; } else { echo "Lỗi trong quá trình tải lên."; } } else { echo "Không có tệp nào được tải lên hoặc có lỗi xảy ra."; } } ?>
7. Quyền truy cập tệp và bảo mật
- Kiểm tra quyền đọc/ghi của tệp:
if (is_readable("dulieu.txt")) { echo "Tệp có thể đọc."; } if (is_writable("dulieu.txt")) { echo "Tệp có thể ghi."; }
- Tránh các lỗ hổng bảo mật khi xử lý tệp tải lên:
- Kiểm tra loại tệp bằng
mime type
hoặc phần mở rộng.
- Sử dụng thư mục riêng để lưu trữ tệp tải lên.
- Đặt quyền truy cập phù hợp (chỉ đọc/ghi khi cần thiết).
Bài tập thực hành:
- Bài tập 1: Tạo chương trình đọc nội dung của một tệp văn bản và hiển thị ra màn hình.
- Bài tập 2: Tạo chương trình ghi dữ liệu do người dùng nhập từ form vào một tệp.
- Bài tập 3: Tạo Form tải tệp lên và kiểm tra loại tệp trước khi lưu trữ.
- Bài tập 4: Viết chương trình kiểm tra tệp có tồn tại hay không, sau đó xóa tệp nếu người dùng xác nhận.
- Bài tập 5: Tạo chương trình ghi nhật ký (log) hoạt động vào một tệp mỗi khi người dùng truy cập trang.
Lưu ý quan trọng:
- Luôn kiểm tra và làm sạch dữ liệu trước khi xử lý.
- Đảm bảo quyền truy cập và bảo mật tệp trên máy chủ.
- Sử dụng các thư viện xử lý tệp nâng cao nếu làm việc với các tệp lớn hoặc cần tối ưu hiệu năng.