「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > PHP ファイルのアップロード検証コードが正しく機能しないのはなぜですか?

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

2024 年 11 月 15 日に公開
ブラウズ:266

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

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

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

//check file extension and size
$resume = ($_FILES['resume']['name']);
$reference = ($_FILES['reference']['name']);
$ext = strrchr($resume, ".");
$ext1 = strrchr($reference, ".");

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

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"] 

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

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

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"] 

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

最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3