Ignore:
Timestamp:
2012/03/04 16:34:48 (11 years ago)
Author:
Seasoft
Message:

#1684 (PHPの言語特性に合わせた簡素な実装に改善する)
#1685 (SC_CheckError#FILE_EXT_CHECK ファイル名を送出しないとすり抜けの懸念)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/version-2_12-dev/data/class/pages/admin/products/LC_Page_Admin_Products_ProductClass.php

    r21532 r21586  
    572572            $this->arrErr['down_realfilename'][$index] = '※ ダウンロード販売用ファイル名のファイルサイズは' . $size . $byte . '以下のものを使用してください。<br />'; 
    573573        } else { 
    574             $array_ext = explode('.', $_FILES['down_realfilename']['name'][$index]); 
    575             $is_error = true; 
    576             $strExt = ''; 
    577  
    578             foreach (explode(',', DOWNLOAD_EXTENSION) as $checkExt) { 
    579                 $ext = ''; 
    580                 // チェック拡張子のピリオドの数を取得('tar.gz'の場合1個、'jpg'のように通常は0個) 
    581                 $count_period = substr_count($checkExt, '.'); 
    582                 if ($count_period > 0) { 
    583                     for ($i = max(array_keys($array_ext)) - $count_period; $i < count($array_ext); $i++) { 
    584                         $ext .= $array_ext[$i] . '.'; 
     574            // SC_CheckError::FILE_EXT_CHECK とのソース互換を強めるための配列 
     575            $value = array( 
     576                0 => 'ダウンロード販売用ファイル名', 
     577                1 => 'down_realfilename', 
     578                2 => explode(',', DOWNLOAD_EXTENSION), 
     579            ); 
     580            // ▼SC_CheckError::FILE_EXT_CHECK から移植 
     581            $match = false; 
     582            if (strlen($_FILES[$value[1]]['name'][$index]) >= 1) { 
     583                $filename = $_FILES[$value[1]]['name'][$index]; 
     584 
     585                foreach ($value[2] as $check_ext) { 
     586                    $match = preg_match('/' . preg_quote('.' . $check_ext) . '$/i', $filename) >= 1; 
     587                    if ($match === true) { 
     588                        break 1; 
    585589                    } 
    586                     $ext = preg_replace("/.$/", "" ,$ext); 
    587                 } else { 
    588                     $ext = $array_ext[ count ($array_ext) - 1 ]; 
    589                 } 
    590                 $ext = strtolower($ext); 
    591  
    592                 if ($ext == $checkExt) { 
    593                     $is_error = false; 
    594                 } 
    595                 if ($strExt == '') { 
    596                     $strExt .= $checkExt; 
    597                 } else { 
    598                     $strExt .= "・$checkExt"; 
    599                 } 
    600             } 
    601             if ($is_error) { 
    602                 $this->arrErr['down_realfilename'][$index] = '※ ダウンロード販売用ファイル名で許可されている形式は、' . $strExt . 'です。<br />'; 
    603             } 
     590                } 
     591            } 
     592            if ($match === false) { 
     593                $str_ext = implode('・', $value[2]); 
     594                $this->arrErr[$value[1]][$index] = '※ ' . $value[0] . 'で許可されている形式は、' . $str_ext . 'です。<br />'; 
     595            } 
     596            // ▲SC_CheckError::FILE_EXT_CHECK から移植 
    604597 
    605598            $uniqname = date('mdHi') . '_' . uniqid('').'.'; 
Note: See TracChangeset for help on using the changeset viewer.