PHP Upload file

Upload file là một vấn đề quan trọng và cần thiết khi lập trình web. Chúng ta cần tải hình ảnh lên hosting, tải file ….
Đoạn code nhỏ trong php sau đây cho phép bạn làm thực hiện điều đó thật đơn giản.

PHP Upload file
PHP Upload file

Cấu hình file “php.ini”

Đầu tiên, để chắc chắn PHP cho phép upload file, chúng ta cần kiểm tra trong file php.ini. Trong file php.ini tìm đến dòng file_uploads gán = On

file_uploads = On

Thiết kế trang html

<!DOCTYPE html>
<html>
<body>
<h1>PHP - Upload file demo <a href="http://tuanitpro.com">http://tuanitpro.com</a></h1>
<form action="upload2.php" method="post" enctype="multipart/form-data">
    Chọn file upload:
    <input type="file" name="fileToUpload" id="fileToUpload">
    <input type="submit" value="Tải lên" name="submit">
</form>
<hr/>

</body>
</html>

Có vài quy tắc bạn cần nhớ.

  • Form phải để phương thức POST
  • Bắt buộc phải có thuộc tính
    enctype="multipart/form-data"
  • action của form chỉ đến trang upload2.php, là trang chứa code PHP thực hiện phía server.

Code trang upload2.php

<?php

if(isset($_POST["submit"])) {
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType = pathinfo($target_file,PATHINFO_EXTENSION);
	// Kiểm tra file upload lên có phải là ảnh không?

    $check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
    if($check !== false) {
        echo "File có định dạng - " . $check["mime"] . ".";
        $uploadOk = 1;
    } else {
        echo "Chỉ cho phép hình ảnh.";
        $uploadOk = 0;
    }
 
// Kiểm tra file tồn tại hay chưa?
if (file_exists($target_file)) {
    echo "File đã tồn tại.";
    $uploadOk = 0;
}
// Kiểm tra kích thước file 500000 byte
if ($_FILES["fileToUpload"]["size"] > 500000) {
    echo "File quá lớn.";
    $uploadOk = 0;
}
// Kiểm tra định dạng ảnh hợp lệ không?
if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
&& $imageFileType != "gif" ) {
    echo "Chỉ cho phép các định dạng sau: JPG, JPEG, PNG & GIF";
    $uploadOk = 0;
}
// Kiểm tra điều kiện trước khi upload?
if ($uploadOk == 0) {
    echo "Upload thất bại.";
// Nếu ok thì cho phép upload file
} else {
    if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
        echo " File ".$target_dir. basename( $_FILES["fileToUpload"]["name"]). " upload thành công.";
        echo '<br/><img src="'.$target_dir. basename( $_FILES["fileToUpload"]["name"]).'" width="160" />';
    } else {
        echo "Upload file thất bại, vui lòng thử lại.";
    }
}
}
?>

Một số giải thích:

  • $target_dir = “uploads/” – thư mục chứa file tải lên. Nằm cùng cấp với upload2.php
  • $target_file đường dẫn tập tin được tải lên
  • $uploadOk=1 để kiểm tra dữ liệu trước khi upload
  • $imageFileType kiểm tra phần mở rộng của tập tin
  • Tiếp theo kiểm tra xem ảnh có thật hay bị giả mạo (vd: social.php => social.png)

Chúc các bạn thành công.

Cách loại bỏ dấu tiếng Việt với PHP

Khi bạn cần tìm kiếm không dấu hoặc tạo các URL thân thiện cho website thì việc loại bỏ dấu cho Tiếng Việt khá quan trọng. Bài viết sẽ hướng dẫn các bạn cách thực hiện việc này với ngôn ngữ PHP.

1.

Xây dựng hàm vn_str_filter($str) để loại bỏ dấu tiếng Việt khỏi 1 chuỗi. Khi gọi hàm: vn_str_filter(“Hoàng Sa, Trường Sa là của Việt Nam”) sẽ được kết quả là “Hoang Sa, Truong Sa la cua Viet Nam”.

2.

Ta sử dụng 2 hàm sau:

foreach() //duyệt mảng
preg_replace // tìm và thay thế các âm tiếng Việt từ có dấu thành không dấu.

3.

Ta viết hàm vn_str_filter như sau:

<?php
function vn_str_filter ($str){
        $unicode = array(
            'a'=>'á|à|ả|ã|ạ|ă|ắ|ặ|ằ|ẳ|ẵ|â|ấ|ầ|ẩ|ẫ|ậ',
            'd'=>'đ',
            'e'=>'é|è|ẻ|ẽ|ẹ|ê|ế|ề|ể|ễ|ệ',
            'i'=>'í|ì|ỉ|ĩ|ị',
            'o'=>'ó|ò|ỏ|õ|ọ|ô|ố|ồ|ổ|ỗ|ộ|ơ|ớ|ờ|ở|ỡ|ợ',
            'u'=>'ú|ù|ủ|ũ|ụ|ư|ứ|ừ|ử|ữ|ự',
            'y'=>'ý|ỳ|ỷ|ỹ|ỵ',
			'A'=>'Á|À|Ả|Ã|Ạ|Ă|Ắ|Ặ|Ằ|Ẳ|Ẵ|Â|Ấ|Ầ|Ẩ|Ẫ|Ậ',
            'D'=>'Đ',
            'E'=>'É|È|Ẻ|Ẽ|Ẹ|Ê|Ế|Ề|Ể|Ễ|Ệ',
            'I'=>'Í|Ì|Ỉ|Ĩ|Ị',
            'O'=>'Ó|Ò|Ỏ|Õ|Ọ|Ô|Ố|Ồ|Ổ|Ỗ|Ộ|Ơ|Ớ|Ờ|Ở|Ỡ|Ợ',
            'U'=>'Ú|Ù|Ủ|Ũ|Ụ|Ư|Ứ|Ừ|Ử|Ữ|Ự',
            'Y'=>'Ý|Ỳ|Ỷ|Ỹ|Ỵ',
        );
        
       foreach($unicode as $nonUnicode=>$uni){
            $str = preg_replace("/($uni)/i", $nonUnicode, $str);
       }
		return $str;
    }
	
?>

4.

Khi sử dụng ta gọi:

<?php
echo vn_str_filter('Hoàng Sa, Trường Sa là của Việt Nam');
?>