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']);