PHP は、さまざまなインターネット アプリケーションや Web サイトの開発に使用できる、非常に人気のあるサーバー側スクリプト言語です。 PHP 開発では、ファイルのアップロードを処理する必要があることがよくあります。したがって、後続の操作で適切に処理できるように、アップロードされたファイルの種類を判断できる必要があります。
この記事では、PHP を使用してアップロードされたファイルの種類を判断する方法を紹介します。まず、ファイルの種類がどのように決定されるかを理解する必要があります。
ファイルタイプ判定
ファイルの内容からファイルタイプを判定します。コンピュータでは、各ファイルにはファイル ヘッダーが含まれています。ファイル ヘッダーはファイルの最初の数バイトであり、ファイルの属性と形式を記述するために使用されます。ファイルヘッダーの内容を読み取ることで、ファイルの種類を判断できます。
ファイルの種類が異なると、ファイル ヘッダーの形式も異なります。たとえば、JPEG 画像のファイルヘッダーは「FF D8」で構成され、GIF 画像のファイルヘッダーは「GIF89a」で構成されます。一般的なファイル タイプのファイル ヘッダー形式は、オンラインで検索すると入手できます。
PHP によるファイル タイプの決定
PHP では、次の 2 つの方法を使用して、アップロードされたファイルのタイプを決定できます。
MIME (MultiPurpose Internet Mail Extensions) は、ファイル タイプを記述するための標準です。各ファイル タイプには固有の MIME タイプがあります。ファイルをアップロードすると、ブラウザはファイルの MIME タイプを自動的に検出し、それをデータの一部としてサーバーに送信します。
PHP では、$_FILES 配列の type 属性を使用して、アップロードされたファイルの MIME タイプを取得できます。例:
$type = $_FILES['file']['type']; if ($type == 'image/jpeg' || $type == 'image/png') { // 处理上传的图片文件 } else if ($type == 'video/mp4' || $type == 'video/avi') { // 处理上传的视频文件 } else { // 文件类型不支持 }
上記のコードでは、まずアップロードされたファイルの MIME タイプを取得し、次にさまざまなファイル タイプに基づいてさまざまな操作を実行します。
このアプローチの欠点は、ブラウザがファイルの種類を常に正しく認識するとは限らないため、ブラウザの脆弱性に対して脆弱であることです。たとえば、攻撃者は .jpg ファイルを .png ファイルとしてアップロードし、悪意のあるスクリプトを実行する可能性があります。
PHP では、finfo_open() および finfo_file() 関数を使用して、アップロードされたファイルのファイル ヘッダーを読み取り、判断できます。ファイルヘッダーとファイルタイプに基づきます。例:
$finfo = finfo_open(FILEINFO_MIME_TYPE); $type = finfo_file($finfo, $_FILES['file']['tmp_name']); if ($type == 'image/jpeg' || $type == 'image/png') { // 处理上传的图片文件 } else if ($type == 'video/mp4' || $type == 'video/avi') { // 处理上传的视频文件 } else { // 文件类型不支持 } finfo_close($finfo);
上記のコードでは、まず finfo_open() 関数を使用してファイル情報オブジェクトを作成し、次に finfo_file() 関数を使用してアップロードされたファイルのファイル ヘッダーを読み取ります。最後に、ファイルの種類に基づいてさまざまな操作が実行されます。
ファイル ヘッダーは攻撃に対して脆弱ではないため、ファイル ヘッダーを使用してファイル タイプを決定することは、MIME タイプを使用するよりも信頼性が高くなります。ただし、この方法にはいくつかの欠点もあります。たとえば、ファイルの種類によってはヘッダー形式が異なる場合があるため、事前に関連情報を見つけておく必要があります。
結論
PHP では、アップロードされたファイルの種類を判断することは非常に重要なタスクです。 MIME タイプとファイル ヘッダーの両方を使用してファイル タイプを決定できますが、それぞれに独自の長所と短所があります。
アップロードされたファイル タイプの判定の精度とセキュリティを向上させるために、組み合わせ方式を使用し、MIME タイプとファイル ヘッダー方式の両方を使用してファイル タイプを判定することをお勧めします。
以上がPHP はインストール ファイルの種類を決定しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。