ホームページ  >  記事  >  データベース  >  PHP ファイルのアップロードでファイルの種類とサイズを制限するにはどうすればよいですか?

PHP ファイルのアップロードでファイルの種類とサイズを制限するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-01 04:58:02697ブラウズ

How to Restrict File Types and Size in PHP File Uploads?

PHP ファイルのアップロード: ファイルの種類とサイズを効率的に制限する

PHP では、ファイルのアップロードを制御し、特定のファイル タイプを確実に受け入れることが重要です。あるユーザーは最近、既存の検証コードに関する問題に遭遇しました:

<code class="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"] < 400000) //accept upto 500 kb
&&  ($_FILES["reference"]["size"] < 400000)) {

//stop user
} else {
// allow files to upload
}</code>

ユーザーによると、このコードは未承認のファイル タイプ (TXT など) の通過を許可し、サイズ制限は強制されませんでした。

解決策: MIME タイプと適切なサイズのチェックに依存する

これらの問題に対処するには、より堅牢なアプローチが推奨されます。

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

//Allowed mime-type files
$allowed = array('application/doc', 'application/pdf', 'another/type');

//Validate uploaded file type
if(in_array($_FILES['resume']['type'], $allowed) AND in_array($_FILES['reference']['type'], $allowed)){

//Check file size
if($_FILES["resume"]["size"] < 400000 AND $_FILES["reference"]["size"] < 400000 ){

//File types and size are accepted, proceed with file processing
}
}
}</code>

説明:

この改良されたコードは、ファイル拡張子ではなく MIME (MultiPurpose Internet Mail Extension) タイプを利用します。 MIME タイプはファイル形式を正確に表すため、改ざんされる可能性が低くなります。さらに、履歴書ファイルと参照ファイルの両方のファイル サイズを個別にチェックし、制限が適用されていることを確認します。

以上がPHP ファイルのアップロードでファイルの種類とサイズを制限するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。