Nếu tệp được tải lên máy chủ, có cách nào sử dụng PHP, để đảm bảo rằng tệp đó thực sự là một hình ảnh chứ không chỉ là tệp có đuôi .jpg hoặc .gif?Xác nhận rằng tệp là hình ảnh trong PHP
Trả lời
Sử dụng (một phần) thư viện GD.
array getimagesize (string $filename [, array &$imageinfo ])
Yếu tố đầu tiên của mảng sẽ là 0 nếu không có hình ảnh. PHP: getimagesize
Nếu bạn chưa cài đặt GD (hầu hết thời gian bạn sẽ làm), bạn có thể đọc tiêu đề tệp là Shane mentioned.
EDIT: Thực ra, như Neal đã chỉ ra trong các ý kiến, thư viện GD thậm chí không bắt buộc phải sử dụng chức năng này. Vì vậy, hãy sử dụng nó.
Cách hiệu quả nhất sẽ là xem xét các byte bắt đầu của tệp và kiểm tra thông số tệp 'số ma thuật'. Here is a list of magic numbers.
Điều đó sẽ hiệu quả hơn là kích hoạt GD, nhưng tôi nghĩ rằng với nhị phân mở, v.v. đầu của hầu hết mọi người. –
Nếu đó là sự thật - nó khá đáng thất vọng. Không phải hầu hết mọi người ở đây đều có bằng cấp CS? –
Tôi không .. nhưng tôi đã viết mã kể từ khi tôi 7. Đáng ngạc nhiên, nhiều người có thể nhận được bằng cấp mà không thực sự biết những gì họ đang phải. Tôi nói từ kinh nghiệm, bởi vì tôi thực sự có bằng cấp về kỹ thuật dân dụng, và tôi biết rất nhiều "thanh trượt" chỉ trượt qua. Một mức độ không có nghĩa là bất cứ điều gì. Bằng chứng rằng bạn có thể làm điều gì đó. – snicker
Đối với hồ sơ: Bây giờ trong 2013+ chúng ta có thể:
Đối với tối đa. khả năng tương thích (Nếu bạn không có thư viện GD).
Sử dụng luôn sẵn mime-content-type ((PHP 4> = 4.3.0, PHP 5))
$type = mime_content_type($filename);
if (strstr($type, 'image/'))
{
echo 'is image';
}
Bản cập nhật này hiện không được chấp nhận: http://us3.php.net/manual/en/function.mime-content-type.php – bonez
Cách tốt nhất để kiểm tra xem tập tin là một hình ảnh
function is_image($path)
{
$a = getimagesize($path);
$image_type = $a[2];
if(in_array($image_type , array(IMAGETYPE_GIF , IMAGETYPE_JPEG ,IMAGETYPE_PNG , IMAGETYPE_BMP)))
{
return true;
}
return false;
}
hơn: http://www.binarytides.com/php-check-if-file-is-an-image/
- 1. Xác nhận rằng động từ yêu cầu là POST
- 2. Xác minh một hình ảnh từ xa thực sự là một tệp hình ảnh trong ruby?
- 3. PHP kiểm tra xem tệp có phải là hình ảnh
- 4. xác nhận hình ảnh trong MVC
- 5. Nhận dạng hình dạng php trong hình ảnh
- 6. Java xác nhận tiêu đề hình ảnh
- 7. jquery: xác nhận rằng trường văn bản là số
- 8. Xác nhận rằng cuộc gọi IPN là từ PayPal?
- 9. Chú thích xác nhận Hibernate - xác nhận rằng ít nhất một trường không phải là rỗng
- 10. cách tốt nhất để xác định xem URL có phải là hình ảnh trong PHP
- 11. Xuất hình ảnh thô từ hình ảnh Imagick trong PHP
- 12. Nhận dạng hình ảnh trong hình ảnh trong C#
- 13. Kích thước hình ảnh không chính xác trong android khi sử dụng tệp hình ảnh bitmap
- 14. Phát hiện xem tệp hình ảnh PNG có phải là hình ảnh trong suốt không?
- 15. Nhận URL hình ảnh trong tệp CSS bằng Java?
- 16. pixel hình ảnh PHP?
- 17. Nhận hồ sơ ICC hình ảnh bằng PHP hoặc Imagick
- 18. CURL PHP gửi hình ảnh
- 19. Hình ảnh xác thực vô hình tốt là gì?
- 20. Hình ảnh hoặc tệp trong GNU Smalltalk?
- 21. PHP xác nhận email
- 22. lớp php ... xác nhận
- 23. cắt dán hình ảnh trong PHP
- 24. Tải lên tệp PHP - hình ảnh chỉ kiểm tra
- 25. Android: nhận kích thước tệp hình ảnh trước khi chia sẻ hình ảnh (Intent.ACTION_SEND)
- 26. Django PIL: IOError Không thể xác định tệp hình ảnh
- 27. PHP - Cách ghi tài nguyên hình ảnh vào tệp
- 28. Nhà máy-cô gái tạo ra rằng bỏ qua xác nhận mô hình của tôi
- 29. Nhận dạng hình ảnh
- 30. Nhận một hình ảnh Mathematica trong Java
@Neal - Thật ra, tôi đã không! Tôi không ý kiến. Cảm ơn bạn đã chỉ ra điều đó. Câu trả lời đã được chỉnh sửa. Không phải lần đầu tiên tôi được RTFMn – snicker
Không vấn đề gì^_^Rất vui được trợ giúp! – Neal
Tốt hơn và * nhanh hơn * để sử dụng 'exif_imagetype'. – Brett