Hướng dẫn image validation in php - xác thực hình ảnh trong php

Tôi có một lựa chọn đầu vào tệp như sau trong một biểu mẫu mà tôi gửi dữ liệu từ sử dụng phương thức POST.


Tôi muốn xác nhận rằng người dùng đã chọn một tệp và muốn kiểm tra xem tệp có phải là tệp hình ảnh không (PNG, JPG)

Tôi cũng bị mắc kẹt vì một dòng trong mã của tôi đang tạo ra lỗi. Tại sao?

'Khóa mảng' InputFile 'không được xác định'

if (isset($_POST['submit'])) {
   $file = $_FILES['inputFile']; //THIS LINE IS GENERATING AN ERROR
}

Đã hỏi ngày 7 tháng 6 năm 2021 lúc 13:55Jun 7, 2021 at 13:55

Hướng dẫn image validation in php - xác thực hình ảnh trong php

3

Xem: https://www.php.net/manual/en/features.file-upload.post-method.php

foreach ($_FILES["pictures"]["error"] as $key => $error) {
if ($error == UPLOAD_ERR_OK) {
    $tmp_name = $_FILES["pictures"]["tmp_name"][$key];
    // basename() may prevent filesystem traversal attacks;
    // further validation/sanitation of the filename may be appropriate
    $name = basename($_FILES["pictures"]["name"][$key]);
    move_uploaded_file($tmp_name, "data/$name");
}

}

Xem thêm: Lỗi khóa mảng không xác định khi tải lên hình ảnh trên PHP

Có vẻ như bạn đang tìm kiếm $ _Files ["InputFile"] ["Tên"] - Goodluck

Đã trả lời ngày 7 tháng 6 năm 2021 lúc 14:49Jun 7, 2021 at 14:49

Hướng dẫn image validation in php - xác thực hình ảnh trong php

Bạn có thể sử dụng một cái gì đó như:


Và chỉ định các định dạng bạn muốn mà không cần PHP

Đã trả lời ngày 7 tháng 6 năm 2021 lúc 14:06Jun 7, 2021 at 14:06

2

Ngoài validate  form bằng Javascript ra thì chúng ta nên sử dụng PHP để validate nữa bởi chỉ validate bằng Javascript thôi thì chưa đủ độ bảo mật. Nếu người dùng cố tình tắt Javascript thì họ hoàn toàn có thể lách qua được lớp bảo vệ đó của website, nên trong bài viết này mình sẽ hướng dẫn các bạn cách validate form bằng PHP trước khi lưu trữ vào cơ sở dữ liệu.

Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.freetuts.net, không được copy dưới mọi hình thức.

1. Sưu tầm các hàm validate trong PHP

Trước khi vào bài thì mình muốn các bạn hãy sưu tầm các hàm kiểm tra dữ liệu vào một file nhé. Ở đây mình có sưu tầm một hàm, bạn có thể tham khảo và sử dụng cho dự án của mình. 

Bạn tạo file validate.php với nội dung như sau:

Bài viết này được đăng tại [free tuts .net]

// Kiểm tra định dạng email
function is_email($str) {
    return (!preg_match("/^([a-z0-9\+_\-]+)(\.[a-z0-9\+_\-]+)*@([a-z0-9\-]+\.)+[a-z]{2,6}$/ix", $str)) ? FALSE : TRUE;
}

Sau này bạn nên tự mình sưu tầm nhiều hàm hơn nữa nhé.

2. Validate form bằng PHP

Để validate form bằng PHP thì chúng ta phải thông qua hai công đoạn, công đoạn thứ nhất là lấy dữ liệu và kiểm tra dữ liệu, công đoạn thứ hai là hiển thị thông báo lỗi và hiển thị dữ liệu mà người dùng đã nhập để họ khỏi mất công nhập lại.

Mình sẽ làm một ví dụ là form liên hệ nhé các bạn. Bạn hãy tạo file

if (isset($_POST['submit'])) {
   $file = $_FILES['inputFile']; //THIS LINE IS GENERATING AN ERROR
}
0 và nhập nội dung HTML sau:



    
        Freetuts.net - Form liên hệ
        
        
    
    
        
        

freetuts.net - contact form

Tên của bạn
Email của bạn
Nội dung liên hệ

Giao diện chạy lên sẽ như sau:

Bây giờ mình sẽ thực hiện hai công đoạn trên nhé.

Công đoạn 1: Kiểm tra dữ liệu

Thứ nhất mình sẽ code PHP validate trong đoạn code

if (isset($_POST['submit'])) {
   $file = $_FILES['inputFile']; //THIS LINE IS GENERATING AN ERROR
}
1, thứ hai mình không lưu vào database mà sẽ comment vị trí sẽ code để lưu cho các bạn hiểu thôi nhé.mình không lưu vào database mà sẽ comment vị trí sẽ code để lưu cho các bạn hiểu thôi nhé.

Công đoạn 2: Hiên thị lỗi và dữ liệu

Chúng ta có hai biến cục bộ đó là biến

if (isset($_POST['submit'])) {
   $file = $_FILES['inputFile']; //THIS LINE IS GENERATING AN ERROR
}
2 và
if (isset($_POST['submit'])) {
   $file = $_FILES['inputFile']; //THIS LINE IS GENERATING AN ERROR
}
3, dựa vào hai biến này chúng ta show thông tin ra như sau:

Tên của bạn
Email của bạn
Nội dung liên hệ

Và đây là toàn bộ nội dung của file

if (isset($_POST['submit'])) {
   $file = $_FILES['inputFile']; //THIS LINE IS GENERATING AN ERROR
}
0.



    
        Freetuts.net - Form liên hệ
        
        
    
    
        
        

freetuts.net - contact form

Tên của bạn
Email của bạn
Nội dung liên hệ

Chạy lên nếu bạn nhập dữ liệu bị lỗi thì sẽ như hình sau:

Thật tuyệt vời =))

3. Lời kết

Vậy là mình đã giới thiệu xong cách sử dụng PHP để validate dữ liệu của form, hy vọng bài này sẽ giúp hữu ích với các bạn. Bài tiếp theo mình sẽ hướng dẫn các bạn cách kết hợp validate cả Javascript lẫn PHP để giúp website bảo mật hơn.