Php nếu hình ảnh

Tôi đang tìm cách kiểm tra xem hình ảnh có tồn tại trên máy chủ web hay không và sau đó nếu hình ảnh tồn tại, hãy hiển thị hình ảnh đó cùng với tiêu đề và một số thông tin. Nếu nó không tồn tại, tôi không muốn hiển thị thông tin nào cả

Có thể kiểm tra xem một tệp có tồn tại trên một trang web khác hay không nếu tôi có vị trí chính xác của tệp đó?

Tập lệnh tôi đang cố sử dụng ở bên dưới nhưng nó vẫn trả về hình ảnh không có ở đó mặc dù tôi biết một số trong số chúng là

Nếu tải xuống hình ảnh bằng PHP, bước đầu tiên để tránh lỗi là đảm bảo rằng URL hợp lệ. Một phương pháp tuyệt vời cho việc này là kiểm tra mã phản hồi HTTP của URL

200 có nghĩa là “ok” và URL hợp lệ và không thay đổi

403, 404, 302 và 301 là một số mã HTTP chính cần tìm khi kiểm tra xem URL không còn chứa những gì nó nên làm

Sử dụng exif_imagetype() làm phương thức yêu cầu cũng cung cấp tùy chọn để xác nhận loại hình ảnh mà nội dung thực sự là. Sau đó, kiểm tra khóa trong chuỗi tiêu đề phản hồi HTTP

$image_url = 'https://i.redd.it/fnxbn804hpd31.jpg';
$image_type_check = @exif_imagetype($image_url);//Get image type + check if exists
if (strpos($http_response_header[0], "403") || strpos($http_response_header[0], "404") || strpos($http_response_header[0], "302") || strpos($http_response_header[0], "301")) {
    echo "403/404/302/301<br>";
} else {
    echo "image exists<br>";
}

Hình ảnh được lấy từ Reddit, chạy đoạn mã trên (kể từ khi điều này được đăng) chỉ cần trả về "hình ảnh tồn tại" vì URL là phản hồi HTTP 200

Nếu tôi thay đổi URL và thêm một số ký tự ngẫu nhiên vào đó thì rất có thể đó không phải là URL hợp lệ và trả về “403/404/302/301”

to checking file is image, I used this:

function is_image($path)
{
    $a = getimagesize($path);
    $image_type = $a[2];

________số 8

i made function img_resize($path,$tmp_name,$new_name,$new_width)
this could be useful.

$imagesizedata = getimagesize($file);
if ($imagesizedata ) {
//do something
}
0

$imagesizedata = getimagesize($file);
if ($imagesizedata ) {
//do something
}
1

$imagesizedata = getimagesize($file);
if ($imagesizedata ) {
//do something
}
2

Hầu hết chúng ta sẽ bắt gặp các giải pháp phổ biến trong PHP để kiểm tra xem tệp đã tải lên có phải là hình ảnh hay không, bạn có thể đã thử cách thông thường để kiểm tra các tiện ích mở rộng và chấp nhận tệp là hình ảnh hợp lệ, nếu ai đó nham hiểm tải lên tệp độc hại thì sao? . jpg hoặc. ảnh gif?. Tôi cá là hầu hết chúng ta sẽ sử dụng cách sau để xác thực hình ảnh được tải lên trong PHP

Kiểm tra xem hình ảnh đã tải lên có hợp lệ với getimagesize() trong PHP

$imagesizedata = getimagesize($file);
if ($imagesizedata ) {
//do something
}

nhưng các tài liệu PHP nói rằng không sử dụng getimagesize() để kiểm tra xem một tệp đã cho có phải là một hình ảnh hợp lệ không. đúng là getimagesize() trả về một mảng với một số giá trị ngẫu nhiên cho chiều cao và chiều rộng của hình ảnh, khi tệp đã cho không phải là hình ảnh hợp lệ

Kiểm tra xem hình ảnh đã tải lên có hợp lệ hay không bằng cách kiểm tra các tiện ích mở rộng

$type=$_FILES[ 'image' ][ 'type' ];     
$extensions=array( 'image/jpeg', 'image/png', 'image/gif' );
if( in_array( $type, $extensions )){
//do something
}

nhưng ở đây bạn chỉ kiểm tra các phần mở rộng, như tôi đã nói trước đó, bất kỳ ai cũng có thể đổi tên tệp có nội dung khác thành jpg hoặc gif và tải chúng lên mà không gặp vấn đề gì

Kiểm tra xem hình ảnh đã tải lên có hợp lệ với dữ liệu exif và fileinfo trong PHP không

Bây giờ, hãy thử một vài thứ để kiểm tra xem hình ảnh đã cho có hợp lệ hay không, nhưng trước khi đi vào ví dụ, hãy để tôi nói cho bạn biết, ngay cả các hàm sau trong PHP cũng sẽ không xác thực hình ảnh một cách chính xác

  • finfo_file( )
  • mime_content_type( )
  • exif_imagetype( )

Tất cả các chức năng trên sẽ trả về loại mime/hình ảnh cho hình ảnh nhất định, nhưng chúng cũng sẽ không thành công nếu chúng tôi tải tệp lên sau khi thay đổi phần mở rộng hoặc gian lận bằng vài byte đầu tiên của tiêu đề hình ảnh. Đây là ví dụ tôi đã nói về. Tôi có nội dung sau trong một tệp và lưu nó dưới dạng motion. gif

GIF89a<
<?php
echo "Hello";

và sử dụng mã PHP sau để kiểm tra tính hợp lệ của hình ảnh, bạn có thể thấy tôi đã thử bốn hàm PHP thường được đề xuất để kiểm tra xem hình ảnh đã cho có hợp lệ hay không và mỗi hàm đều thất bại

<?php
$finfo = finfo_open(FILEINFO_MIME_TYPE); // return mime type - all mimetype extension
$filename = "motion.gif";
echo $filename . ": " . finfo_file( $finfo, $filename ) . "<br>";
echo $filename . ": "  . mime_content_type( $filename )  . "<br>";
echo "exif: " . exif_imagetype( $filename )  . "<br>";
print_r( getimagesize( $filename ) );
finfo_close( $finfo );

đây là đầu ra của đoạn mã trên

Php nếu hình ảnh
Vì vậy, tất cả các giải pháp được đề cập ở trên để kiểm tra xem các tệp đã tải lên có phải là hình ảnh hợp lệ hay không cuối cùng sẽ đánh lừa chúng tôi, giải pháp tốt nhất duy nhất là sử dụng chức năng imagecreate trong PHP, chúng tôi có các chức năng riêng cho jpg, gif , png hoặc để tạo hình ảnh với . chức năng imagecreate sẽ trả về false khi không thể tạo hình ảnh với tệp hình ảnh đã cho. , vì vậy bạn có thể kiểm tra xem tệp đã cho có phải là jpg hoặc gif hoặc png hợp lệ không

đây là mã tôi đã thử, để xác thực các tệp hình ảnh đã tải lên

<?php
$filename = "motion.gif";
$error = '';   
$type = exif_imagetype( $filename );
switch( $type ) {
case 1:
$isimage = @imagecreatefromgif( $filename );
$error .= ( !$isimage ) ? "extn - gif, but not a valid gif" : '  valid gif';
break;
case 2: 
$isimage = @imagecreatefromjpeg( $filename );
$error .= ( !$isimage ) ? "extn - jpg, but not a valid jpg" : '  valid jpg';
break;
case 3:
echo "png : ";
$isimage = @imagecreatefrompng( $filename );
$error .= ( !$isimage ) ? "extn - png, but not a valid png" : ' valid png';
break;
default: //if there is no exif data
$error .= "Not an image" ;
}
echo $error;
?>

Bạn có thể thử nghiệm với nhiều hình ảnh khác nhau và gian lận với một vài tiêu đề đầu tiên của jpg, gif hoặc png

Kiểm tra xem Tệp đã tải lên có phải là Hình ảnh trong PHP không

được gắn thẻ trên. nếu tệp đã tải lên là một hình ảnh hợp lệ    php kiểm tra xem tệp đã tải lên có hợp lệ không    Tệp được tải lên php là một hình ảnh    PHP Xác thực tệp tải lên    Xác thực nội dung hình ảnh đã tải lên bằng php

Làm cách nào để kiểm tra xem tệp có phải là hình ảnh trong PHP không?

Sử dụng phần mở rộng tệp và chức năng getimagesize để phát hiện xem tệp đã tải lên có đúng định dạng hay không chỉ là bước kiểm tra ở cấp độ mục nhập và có thể bỏ qua đơn giản bằng cách tải lên tệp có phần mở rộng đúng và một số byte .

Làm cách nào để kiểm tra loại hình ảnh trong PHP?

Hàm imagetypes() là một hàm có sẵn trong PHP được sử dụng để trả về các loại hình ảnh được thư viện cài đặt sẵn của PHP hỗ trợ.

Làm cách nào để kiểm tra hình ảnh đã tải lên hay chưa trong PHP?

Hàm is_uploaded_file() trong PHP là một hàm sẵn có dùng để kiểm tra xem tệp đã chỉ định có được tải lên qua HTTP POST hay không. Tên của tệp được gửi dưới dạng tham số cho hàm is_uploaded_file() và trả về True nếu tệp được tải lên qua HTTP POST.

Làm cách nào để kiểm tra xem một hình ảnh có tồn tại trong một thư mục trong PHP không?

Hàm file_exists() kiểm tra xem tệp hoặc thư mục có tồn tại không.