1

私の英語はあまり上手ではありません、ごめんなさい。

PHP 言語を使用していますが、プロファイル画像のアップロードに問題があります。私のコードはタイプに基づいて画像をフィルタリングしますが、サーバーには、常に同じ IP からの、受け入れられないタイプのファイルがあります。

タイプチェックが原因だと思いますが、よくわかりません。助けてください!

$bild = array('jpg', 'jpeg', 'png', 'gif');
if (in_array($_FILES['image']['type'], $bild) {
    mysqli_laden($_FILES);
}
4

1 に答える 1

2

mysqli_laden は、サーバーにアップロードするカスタム関数であると想定しています。$_FILES["image"]["type"] を使用する場合は、ファイル自体ではなくブラウザから情報を取得するので注意してください。ファイルの MIME タイプを検証する、はるかに信頼性の高い finfo_open 関数を使用する必要があります。ここで確認してください: http://www.php.net/manual/en/function.finfo-open.php

あなたのコードは次のようになります

$bild = array('image/jpg', 'image/jpeg', 'image/png', 'image/gif');
$image = $_FILES['image']['type'];
$finfo = new finfo(FILEINFO_MIME);
$image_inf = $finfo->file($image);

if (in_array($image_inf, $bild) {
    mysqli_laden($_FILES);
}

お役に立てれば

于 2013-11-14T18:50:03.613 に答える