Changeset 23005


Ignore:
Timestamp:
2013/07/28 20:43:47 (7 years ago)
Author:
poego
Message:

#2283 resize_image.phpの処理をID基準に変更

既存のファイル名を渡す形も残している。
テンプレート側は、おすすめ商品ブロックのみひとまず対応。
やはり毎回DB処理を走らせるのは余計な負荷な気がするので、利用箇所は限定させたい

Location:
branches/version-2_13-dev/data
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • branches/version-2_13-dev/data/Smarty/templates/default/frontparts/bloc/recommend.tpl

    r22959 r23005  
    3131                            <div class="productImage"> 
    3232                                <a href="<!--{$smarty.const.P_DETAIL_URLPATH}--><!--{$arrProduct.product_id|u}-->"> 
    33                                     <img src="<!--{$smarty.const.ROOT_URLPATH}-->resize_image.php?image=<!--{$arrProduct.main_list_image|sfNoImageMainList|h}-->&amp;width=80&amp;height=80" alt="<!--{$arrProduct.name|h}-->" /> 
     33                                    <img src="<!--{$smarty.const.ROOT_URLPATH}-->resize_image.php?product_id=<!--{$arrProduct.product_id|u}-->&amp;image_key=main_list_image&amp;width=80&amp;height=80" alt="<!--{$arrProduct.name|h}-->" /> 
    3434                                </a> 
    3535                            </div> 
  • branches/version-2_13-dev/data/class/pages/LC_Page_ResizeImage.php

    r22926 r23005  
    6464        $this->lfInitParam($objFormParam); 
    6565        $objFormParam->setParam($_GET); 
    66         $arrForm  = $objFormParam->getHashArray(); 
     66        $arrErr = $objFormParam->checkError(); 
     67        if (SC_Utils_Ex::isBlank($arrErr)) { 
    6768 
    68         $file = NO_IMAGE_REALFILE; 
     69            $arrForm  = $objFormParam->getHashArray(); 
    6970 
    70         // NO_IMAGE_REALFILE以外のファイル名が渡された場合、ファイル名のチェックを行う 
    71         if (strlen($arrForm['image']) >= 1 
    72             && $arrForm['image'] !== NO_IMAGE_REALFILE) { 
    73             // ファイル名が正しく、ファイルが存在する場合だけ、$fileを設定 
    74             if (!$this->lfCheckFileName()) { 
    75                 GC_Utils_Ex::gfPrintLog('invalid access :resize_image.php image=' . $arrForm['image']); 
    76             } elseif (file_exists(IMAGE_SAVE_REALDIR . $arrForm['image'])) { 
    77                 $file = IMAGE_SAVE_REALDIR . $arrForm['image']; 
     71            // TODO: ファイル名を直接指定するような処理は避けるべき 
     72            // NO_IMAGE_REALFILE以外のファイル名が直接渡された場合、ファイル名のチェックを行う 
     73            if (strlen($arrForm['image']) >= 1 && $arrForm['image'] !== NO_IMAGE_REALFILE ) { 
     74                if (!$this->lfCheckFileName($arrForm['image'])) { 
     75                    GC_Utils_Ex::gfPrintLog('invalid access :resize_image.php image=' . $arrForm['image']); 
     76                } 
     77                $file = SC_Utils_Ex::getSaveImagePath($arrForm['image']); 
     78            } else { 
     79                // 商品画像を取得する 
     80                $file = $this->lfGetProductImage($arrForm); 
    7881            } 
     82 
     83            // リサイズ画像の出力 
     84            $this->lfOutputImage($file, $arrForm['width'], $arrForm['height']); 
    7985        } 
    80  
    81         // リサイズ画像の出力 
    82         $this->lfOutputImage($file, $arrForm['width'], $arrForm['height']); 
    8386    } 
    8487 
    8588    function lfInitParam(&$objFormParam) 
    8689    { 
     90        $objFormParam->addParam('商品ID', 'product_id', INT_LEN, 'n',  array('NUM_CHECK', 'MAX_LENGTH_CHECK')); 
     91        $objFormParam->addParam('商品イメージキー', 'image_key', STEXT_LEN, '',  array('GRAPH_CHECK', 'MAX_LENGTH_CHECK')); 
    8792        $objFormParam->addParam('画像ファイル名', 'image', STEXT_LEN, 'a',  array('MAX_LENGTH_CHECK')); 
    8893        $objFormParam->addParam('画像の幅', 'width', STEXT_LEN, 'n',  array('NUM_CHECK')); 
     
    9398     * ファイル名の形式をチェック. 
    9499     * 
     100     * @deprecated 2.13.0 商品IDを渡す事を推奨 
     101     * @param $image 
    95102     * @return boolean 正常な形式:true 不正な形式:false 
    96103     */ 
    97     function lfCheckFileName() 
     104    function lfCheckFileName($image) 
    98105    { 
    99         $file    = trim($_GET['image']); 
     106        $file    = trim($image); 
    100107        if (!preg_match("/^[[:alnum:]_\.-]+$/i", $file)) { 
    101108            return false; 
     
    103110            return true; 
    104111        } 
     112    } 
     113 
     114    /** 
     115     * 商品画像のパスを取得する 
     116     * 
     117     * @param $arrForm 
     118     * @return string 指定された商品画像のパス 
     119     */ 
     120    function lfGetProductImage($arrForm) 
     121    { 
     122        $objQuery = SC_Query_Ex::getSingletonInstance(); 
     123        $table = 'dtb_products'; 
     124        $col = $arrForm['image_key']; 
     125        $product_id = $arrForm['product_id']; 
     126        //指定されたカラムが存在する場合にのみ商品テーブルからファイル名を取得 
     127        if (SC_Helper_DB_Ex::sfColumnExists($table, $col, '', '', false)) { 
     128            $product_image = $objQuery->get($col, $table, 'product_id = ?', array($product_id)); 
     129        } else { 
     130            GC_Utils_Ex::gfPrintLog('invalid access :resize_image.php image_key=' . $col); 
     131            $product_image = ''; 
     132        } 
     133        // ファイル名が正しく、ファイルが存在する場合だけ、$fileを設定 
     134        $file = SC_Utils_Ex::getSaveImagePath($product_image); 
     135 
     136        return $file; 
    105137    } 
    106138 
  • branches/version-2_13-dev/data/class/util/SC_Utils.php

    r22939 r23005  
    13941394 
    13951395    /** 
     1396     * 指定の画像のパスを返す 
     1397     * 
     1398     * @param $filename 
     1399     * @return string $file 画像のパス、画像が存在しない場合、NO_IMAGE_REALFILEを返す 
     1400     */ 
     1401    function getSaveImagePath($filename) 
     1402    { 
     1403        $file = NO_IMAGE_REALFILE; 
     1404 
     1405        // ファイル名が与えられており、ファイルが存在する場合だけ、$fileを設定 
     1406        if (!SC_Utils_Ex::isBlank($filename) && file_exists(IMAGE_SAVE_REALDIR . $filename)) { 
     1407            $file = IMAGE_SAVE_REALDIR . $filename; 
     1408        } 
     1409        return $file; 
     1410    } 
     1411 
     1412    /** 
    13961413     * 一覧-メイン画像のファイル指定がない場合、専用の画像ファイルに書き換える。 
    13971414     * 
Note: See TracChangeset for help on using the changeset viewer.