ホームページ > データベース > mysql チュートリアル > PHP ファイルのアップロード検証コードが正しく機能しないのはなぜですか?

PHP ファイルのアップロード検証コードが正しく機能しないのはなぜですか?

Barbara Streisand
リリース: 2024-11-03 11:55:03
オリジナル
729 人が閲覧しました

Why Is My PHP File Upload Validation Code Not Working Correctly?

PHP ファイルのアップロード: ファイルの種類とサイズの制限を確認する

PHP でファイルのアップロードを処理するには、多くの場合、ファイルの種類とサイズの制限を確認する必要があります。提供されたコード スニペットは両方の基準を検証しようとしますが、問題が発生します。コードを詳しく調べてエラーを特定しましょう。

1

2

3

4

5

<code class="php">//check file extension and size

$resume = ($_FILES['resume']['name']);

$reference = ($_FILES['reference']['name']);

$ext = strrchr($resume, ".");

$ext1 = strrchr($reference, ".");</code>

ログイン後にコピー

このコードは、両方のファイルのファイル名と拡張子をキャプチャします。ただし、その後の検証ロジックには欠陥があります。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

<code class="php">if (!(

    ($_FILES["resume"]["type"] == "application/doc")

    || ($_FILES["resume"]["type"] == "application/docx")

    || ($_FILES["resume"]["type"] == "application/pdf")

    && (($_FILES["reference"]["type"] == "application/doc")

    || ($_FILES["reference"]["type"] == "application/docx")

    || ($_FILES["reference"]["type"] == "application/pdf"))

    && (($ext == ".pdf") || ($ext == ".doc") || ($ext == ".docx"))

    && (($ext1 == ".pdf") || ($ext1 == ".doc") || ($ext1 == ".docx"))

    && ($_FILES["resume"]["size"] < 400000) //accept upto 500 kb

    && ($_FILES["reference"]["size"] < 400000)

)) {

    //stop user

} else {

    //allow files to upload

}</code>

ログイン後にコピー

コードは、ファイル タイプを検証するための正しいロジックを使用できません。 MIME タイプをチェックする代わりに、ファイル名拡張子に依存しますが、これは信頼性が高くありません。さらに、サイズ検証は両方のファイルに適用されません。

これらの問題を修正するために、MIME タイプを使用し、両方のファイル サイズを正しくチェックする改訂されたコード スニペットを次に示します。

1

2

3

4

5

6

7

8

9

<code class="php">function allowed_file() {

    $allowed = array('application/doc', 'application/pdf', 'application/docx');

 

    if (in_array($_FILES['resume']['type'], $allowed) && in_array($_FILES['reference']['type'], $allowed)) {

        if ($_FILES["resume"]["size"] < 400000 && $_FILES["reference"]["size"] < 400000) {

            // Begin file upload here...

        }

    }

}</code>

ログイン後にコピー

このコードまず、ファイルの MIME タイプが許可リストに含まれているかどうかを確認します。そうであれば、両方のファイル サイズが指定された制限内であるかどうかを確認します。これにより、許可されたファイルの種類とサイズのみがアップロードに受け入れられます。

以上がPHP ファイルのアップロード検証コードが正しく機能しないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
関連するチュートリアル
人気のおすすめ
最新のコース
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート