PHPフォームでファイルをアップロードした際の$_FILESの中身を確認する

PHP商用無料イラスト フォーム

input[type="file"]で送信した情報はスーパーグローバル変数の$_FILESで確認ができます。

$_FILESの中身

$_FILES['inputで指定したname']['name']
⇒アップロードした元ファイル名


$_FILES['inputで指定したname']['type']
⇒ファイルのMIMEタイプ


$_FILES['inputで指定したname']['tmp_name']
⇒一時保存ファイル名


$_FILES['inputで指定したname']['error']
⇒アップロード時のエラーコード


$_FILES['inputで指定したname']['size']
⇒ファイルサイズ(バイト単位)

エラーコード

0:UPLOAD_ERR_OK
エラーはなく、ファイルアップロードは成功しています。


1:UPLOAD_ERR_INI_SIZE
アップロードされたファイルは、php.ini の upload_max_filesize ディレクティブの値を超えています。


2:UPLOAD_ERR_FORM_SIZE
アップロードされたファイルは、HTML フォームで指定された MAX_FILE_SIZE を超えています。


3:UPLOAD_ERR_PARTIAL
アップロードされたファイルは一部のみしかアップロードされていません。


4:UPLOAD_ERR_NO_FILE
ファイルはアップロードされませんでした


6:UPLOAD_ERR_NO_TMP_DIR
テンポラリフォルダがありません


7:UPLOAD_ERR_CANT_WRITE
ディスクへの書き込みに失敗しました。


8:UPLOAD_ERR_EXTENSION
PHP の拡張モジュールがファイルのアップロードを中止しました。 どの拡張モジュールがファイルアップロードを中止させたのかを突き止めることはできません。

$_FILESの['type']は信用できない

$_FILESの['type']は拡張子で判定しているだけなので、ファイル自体の拡張子を変更するだけで簡単に偽装できます。mime_content_type関数を使用したほうが安心です。

mime_content_type($_FILES['inputで指定したname']['tmp_name']);

画像の幅や高さを取得する必要があるときはgetimagesize関数のほうがいいかもしれません。

getimagesize($_FILES['inputで指定したname']['tmp_name']);
タイトルとURLをコピーしました