画像のバリデーション

getimagesizeを使って画像の有効性を判定

PHP

if (! file_exists($file_name)) { // エラー(存在しない) } if (filesize($file_name) <= 0) { // エラー(サイズ不明) } elseif (filesize($file_name) > 1024 * 1024 * 5) { // エラー(サイズ上限超過) 5M(1024 * 1024 * 5) } $path_parts = pathinfo($file_name); if (! preg_match('/^[\x21-\x7e]{1,50}+$/', $path_parts['filename'])) { // エラー(半角英数記号50文字まで) // (参考)ファイル名に次の文字は使用できない( \ /:* ? " < > |) } $file_ext = strtolower($path_parts['extension']); if (! preg_match('/^(gif|jpe?g|png)$/i', $file_ext)) { // エラー(拡張子が一致しない) } list($width, $height, $type, $attr) = getimagesize($file_name); if (empty($width) || empty($height) || empty($type)) { // エラー(画像以外のファイル) } else { if ($width > 3200) { // エラー(幅上限超過) } if ($height > 2400) { // エラー(高さ上限超過) } // 1 = GIF // 2 = JPG // 3 = PNG // 4 = SWF // 5 = PSD // 6 = BMP // 7 = TIFF(intel byte order) // 8 = TIFF(motorola byte order) // 9 = JPC // 10 = JP2 // 11 = JPX // 12 = JB2 // 13 = SWC // 14 = IFF // 15 = WBMP // 16 = XBM if ($type > 3) { // エラー(gif、jpg、png以外の画像) } elseif ($type == '1' && $file_ext != 'gif') { // エラー(gif 画像タイプと拡張子が一致しない) } elseif ($type == '2' && ($file_ext != 'jpg' && $file_ext != 'jpeg')) { // エラー(jpg 画像タイプと拡張子が一致しない) } elseif ($type == '3' && $file_ext != 'png') { // エラー(png 画像タイプと拡張子が一致しない) } }

最新の記事

プロフィール

流されるままにウェブ業界で仕事しています。主にLAPP環境でPHPを書いています。最近はjQueryで遊んでいます。
※動作確認について