Bài 9: Các Hàm Xử Lý File Và Upload File Trong PHP
Có thể bạn quan tâm
- HOTLINE: 0973.523.627
- EMAIL: contact@hoclaptrinhweb.org
- SKYPE: ecode.support
Đối với dữ liệu của website phần lớn chúng ta đều lưu trữ trong CSDL tuy nhiên cũng có đôi lúc việc lưu trữ dữ liệu với file sẽ thuận tiện hơn rất nhiều do dễ dàng thay đổi chẳng hạn như lưu trữ thông tin truy cập CSDL cho ứng dụng web hoặc lưu trữ thông tin cấu hình email...
Việc nắm vững kiến thức về xử lý file và quyền hạn của file, thư mục (trong Linux) khi học PHP không những giúp bạn dễ dàng lưu trữ thông tin cho website mà còn giúp bạn tăng tính bảo mật cho các file và thư mục quan trọng.
Để biểu diễn cho dấu phân cách trong đường dẫn chúng ta sử dụng dấu \ trên hệ điều hành Windows còn trên Linux chúng ta sử dụng dấu /. Để đơn giản hóa khi biểu diễn ký tự phân cách trong đường dẫn PHP dùng hằng DIRECTORY_SEPARATOR để biểu diễn.
Ví dụ:
DEFINE('DS', DIRECTORY_SEPARATOR); $path = 'www'.DS.'site'.DS.'admin'; //Biểu diễn cho đường dẫn tương đối $path = www/site/admin (trên Linux) và $path = www\site\admin (trên Windows)Dưới đây là một số hàm thường sử dụng để xử lý file và thư mục trong PHP
- is_file($path): trả về TRUE nếu $path tồn tại và là một file
- is_dir($path): trả về TRUE nếu $path tồn tại và là một thư mục
- file_exists($path): trả về TRUE nếu $path tồn tại và là một file hoặc thư mục
- getcwd(): trả về chuỗi biểu diễn thư mục hiện tại đang làm việc
- scandir($path): trả về một mảng chứa danh sách file và thư mục trong đường dẫn $path nếu $path là tên 1 thư mục tồn tại, nếu không trả về FALSE
Chúng ta xem qua một ví dụ đơn giản liệt kê các file và thư mục hiện hành:
<?php $path = getcwd(); $items = scandir($path); //hoặc có thể viết là: $items = scandir('.'); echo "<p>Content of $path</p>"; echo '<ul>'; foreach ($items as $item) { echo '<li>' . $item . '</li>'; } echo '</ul>'; ?>Đọc file
Để đọc file chúng ta sử dụng hàm fread($file, $length) và để ghi file chúng ta sử dụng hàm fwrite($file, $data).
Ví dụ:
<?php $fp = @fopen('welcome.txt', "r"); if (!$fp) { echo 'File not found'; } else { $data = fread($fp, filesize('welcome.txt')); echo $data; fclose($fp); } ?>Trong ví dụ trên chúng ta đọc file welcome.txt ở chế độ chỉ đọc (r) và để tránh trường hợp xảy ra lỗi khi không tìm thấy file chúng ta đặt ký tự @ trước hàm fopen(). Hàm filesize() sẽ trả về toàn bộ kích thước của file cần đọc. Sau khi đọc xong chúng ta đóng lại file qua hàm fclose() để xóa bỏ vị trí của con trỏ đang duyệt file.
Ghi file
<?php $filename = 'test.txt'; $content = "hoclaptrinhweb.org\n"; if (is_writable($filename)) { if (!$file= fopen($filename, 'a')) { echo "Cannot open file ($filename)"; exit; } if (fwrite($file, $content) === FALSE) { echo "Không thể viết file ($filename)"; exit; } echo "Ghi thành công. Đã ghi nội dung ($content) vào file ($filename)"; fclose($file); } else { echo "The file $filename is not writable"; } ?>Trước khi thực hiện thao tác ghi file chúng ta nên kiểm tra file có quyền khi hay không bằng cách sử dụng hàm is_writeable($filename).
Upload file
Xử lý upload file là công việc mà chúng ta thường xuyên gặp nhất khi làm việc với file và form upload file cũng là nơi để hacker dễ dàng khai thác lỗ hỏng nhằm upload shellscript lên trên webserver. Vì vậy chúng ta cần kiểm tra kỹ định dạng file trước khi di chuyển nó sang thư mục được chỉ định trên website.
Để có thể upload được file chúng ta cần có input field với type="file" và trên form upload chúng ta cần chỉ định thuộc tính enctype="multipart/form-data"
<?php if(isset($_FILES['image'])){ $errors= array(); $file_name = $_FILES['image']['name']; $file_size = $_FILES['image']['size']; $file_tmp = $_FILES['image']['tmp_name']; $file_type = $_FILES['image']['type']; $file_ext=strtolower(end(explode('.',$_FILES['image']['name']))); $expensions= array("jpeg","jpg","png"); if(in_array($file_ext,$expensions)=== false){ $errors[]="Chỉ hỗ trợ upload file JPEG hoặc PNG."; } if($file_size > 2097152) { $errors[]='Kích thước file không được lớn hơn 2MB'; } if(empty($errors)==true) { move_uploaded_file($file_tmp,"images/".$file_name); echo "Success"; }else{ print_r($errors); } } ?> <html> <body> <form action = "" method = "POST" enctype = "multipart/form-data"> <input type = "file" name = "image" /> <input type = "submit"/> <ul> <li>Sent file: <?php echo $_FILES['image']['name']; ?> <li>File size: <?php echo $_FILES['image']['size']; ?> <li>File type: <?php echo $_FILES['image']['type'] ?> </ul> </form> </body> </html>Khi người dùng submit form, file sẽ được upload lên thư mục tạm của webserver và tên của file đã upload cũng là một tên tạm thời do webserver sinh ra, do đó để di chuyển nó đến thư mục được chỉ định trên webserver chúng ta cần sử dụng hàm move_upload_file($ten_file_tam, $duong_dan_den_thu_muc_moi).
Bài viết liên quan:- Bài 1: Giới thiệu về ngôn ngữ lập trình PHP và hướng dẫn cài đặt
- Bài 2: Cú pháp khai báo PHP, sử dụng hằng và biến
- Bài 3: Các kiểu dữ liệu và phạm vi biến trong PHP
- Bài 4: Toán tử trong PHP
- Bài 5: Các lệnh điều khiển trong PHP
- Bài 6: Mảng trong lập trình PHP
- Bài 7: Thao tác với chuỗi trong PHP
- Bài 8: Xử lý và lấy dữ liệu từ form trong PHP
- Bài 10 - Lập trình hướng đối tượng trong PHP
- Bài 11 - Thao tác với CSDL trong PHP thông qua PDO
Lập trình web PHP & MySQL
Lập trình PHP nâng cao
Thiết kế giao diện web
Thiêt kế website bằng Wordpress
Lập trình Java
Lập trình Android
Đào tạo SEO
Đào tạo marketing online
Khóa học Photoshop CS6
eCode - Đào tạo lập trình web và digital marketingBạn đang ở: Trang chủ / LẬP TRÌNH / HỌC PHP / Bài 9: Các hàm xử lý file và upload file trong PHP
Từ khóa » Trình đọc File Php
-
Phần Mềm đọc File Php
-
Đọc File Trong PHP - Học Lập Trình PHP Online - VietTuts
-
Làm Việc Với File Trong PHP
-
Cách để Mở Tập Tin PHP - WikiHow
-
Mở (open) Và đọc (read) File Trong PHP - Góc Học IT
-
Tự Học PHP | Đọc File Trong PHP »
-
Bài 22: Các Hàm Xử Lý File Trong Php - Freetuts
-
Cách Chạy File PHP Trên XAMPP - Thủ Thuật
-
Download PHP Expert Editor 4.3 - Ngôn Ngữ Lập Trình PHP
-
Thao Tác Với File Trong PHP
-
Cách Tạo Và Chạy Một Tập Tin PHP - Web Cơ Bản
-
Bài 12: Thao Tác Với FILE Trong PHP - Góc Làm Web
-
Làm Thế Nào để Mở Tập Tin .PHP? Thông Tin Về đuôi - Driversol