Chương 10: Làm Việc Với Tệp Trong PHP

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:

  1. 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.
  2. 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.
  3. 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ữ.
  4. 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.
  5. 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.

Viết một bình luận