1

このコードで JPEG ファイルと PNG ファイルが無効であると表示される理由がわかりません。このコードで JPEG と PNG のみを受け入れ、他のすべてのファイル タイプを拒否するようにしたいのですが、現在はすべてを拒否しています。

<?

echo '
    <form method="post" action="upload.php">
        <input type="text" placeholder="url" name="url" /> <input type="submit" value="check" name="submit" />
    </form>
';

if (isset($_POST["submit"])) {

$url = $_POST["url"];

echo '<strong>URL:</strong> ' . $url;
echo '<br /><br />';

if(!filter_var($url, FILTER_VALIDATE_URL)) { //not valid f-in url
  echo('Invalid url given'); 

} else {
    if (exif_imagetype($url) != IMAGETYPE_JPEG || exif_imagetype($url) != IMAGETYPE_PNG) {
        echo 'Invalid Image<br />';
    } else {
        echo "Works.";
    }
}

}
?>
4

3 に答える 3

3

あなたのステートメントロジックは逆です。これは本質的にあなたが書いているものです:

$image_type = exif_imagetype($url);
if ($image_type != IMAGETYPE_JPEG || $image_type != IMAGETYPE_PNG) {
    echo 'Invalid Image<br />';
} else {
    echo "Works.";
}

これは、「画像の種類が JPEG または PNG でない場合、無効です」という意味です。代わりに、次のことが必要です。

if( $image_type == IMAGETYPE_JPEG || $image_type == IMAGETYPE_PNG) {
    echo "Works.";
} else {
    echo "Invalid Image<br />";
}

「画像タイプがJPEGまたはPNGの場合、有効です」または:

if ($image_type != IMAGETYPE_JPEG && $image_type != IMAGETYPE_PNG) {
    echo 'Invalid Image<br />';
} else {
    echo "Works.";
}

「画像がJPEGでもPNGでもない場合は無効です」。

于 2012-06-25T23:15:16.887 に答える
2

これらの条件は AND で結合する必要があります。

if (exif_imagetype($url) != IMAGETYPE_JPEG && exif_imagetype($url) != IMAGETYPE_PNG)
    /* invalid image */

文章のように読んでください: JPEGなく、PNG でもない場合は無効です

さらに、EXIF の結果を独自の変数に格納し、メソッドを 2 回呼び出す代わりに比較に使用します。

$itype = exif_imagetype($url);

if ($itype != IMAGETYPE_JPEG && $itype != IMAGETYPE_PNG)
    /* invalid image */
于 2012-06-25T23:14:25.597 に答える
0

!=等しくないことを意味します。それを削除して使用します==

于 2012-06-25T23:15:32.850 に答える