Ignore:
Timestamp:
2013/06/28 14:53:23 (11 years ago)
Author:
shutta
Message:

#2277 (エラーチェックのチェック処理の見直し)
r22891,r22904(脆弱性対応)を2_13-devにもコミット。

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

Legend:

Unmodified
Added
Removed
  • branches/version-2_13-dev/data/class/SC_CheckError.php

    r22879 r22911  
    2727 *---------------------------------------------------------------------- 
    2828 */ 
    29 class SC_CheckError 
    30 { 
     29class SC_CheckError { 
    3130    var $arrErr = array(); 
    3231    var $arrParam; 
    3332 
    3433    // チェック対象の値が含まれる配列をセットする。 
    35     function __construct($array = '') 
    36     { 
     34    function __construct($array = '') { 
    3735        if ($array != '') { 
    3836            $this->arrParam = $array; 
     
    4341    } 
    4442 
    45     function doFunc($value, $arrFunc) 
    46     { 
     43    function doFunc($value, $arrFunc) { 
    4744        foreach ($arrFunc as $key) { 
    4845            $this->$key($value); 
     
    5653     * @return void 
    5754     */ 
    58     function HTML_TAG_CHECK($value) 
    59     { 
     55    function HTML_TAG_CHECK($value) { 
    6056        if (isset($this->arrErr[$value[1]])) { 
    6157            return; 
     
    6359        $this->createParam($value); 
    6460        // HTMLに含まれているタグを抽出する 
    65         $arrTagIncludedHtml = array(); 
    66         preg_match_all('/<\/?([a-z]+)/i', $this->arrParam[$value[1]], $arrTagIncludedHtml); 
    67         // 抽出結果を小文字に変換 
    68         foreach ($arrTagIncludedHtml[1] as $key => $matchedTag) { 
    69             $arrTagIncludedHtml[1][$key] = strtolower($matchedTag); 
    70         } 
     61        preg_match_all('/<\/?([a-z]+)/i', $this->arrParam[$value[1]], $arrTagIncludedHtml = array()); 
     62 
    7163        $arrDiffTag = array_diff($arrTagIncludedHtml[1], $value[2]); 
    7264 
     
    8981     * @return void 
    9082     */ 
    91     function EXIST_CHECK($value) 
    92     { 
     83    function EXIST_CHECK($value) { 
    9384        if (isset($this->arrErr[$value[1]])) { 
    9485            return; 
     
    109100     * @return void 
    110101     */ 
    111     function EXIST_CHECK_REVERSE($value) 
    112     { 
     102    function EXIST_CHECK_REVERSE($value) { 
    113103        if (isset($this->arrErr[$value[0]])) { 
    114104            return; 
    115105        } 
    116         $this->createParam($value); 
     106        // $this->createParam($value); 
    117107        if (strlen($this->arrParam[$value[0]]) == 0) { 
    118108            $this->arrErr[$value[0]] = '※ ' . $value[0] . 'が入力されていません。<br />'; 
     
    127117     * @return void 
    128118     */ 
    129     function SPTAB_CHECK($value) 
    130     { 
     119    function SPTAB_CHECK($value) { 
    131120        if (isset($this->arrErr[$value[1]])) { 
    132121            return; 
     
    145134     * @return void 
    146135     */ 
    147     function NO_SPTAB($value) 
    148     { 
     136    function NO_SPTAB($value) { 
    149137        if (isset($this->arrErr[$value[1]])) { 
    150138            return; 
     
    157145 
    158146    /* ゼロで開始されている数値の判定 */ 
    159     function ZERO_START($value) 
    160     { 
     147    function ZERO_START($value) { 
    161148        if (isset($this->arrErr[$value[1]])) { 
    162149            return; 
     
    175162     * @return void 
    176163     */ 
    177     function SELECT_CHECK($value) 
    178     { 
     164    function SELECT_CHECK($value) { 
    179165        if (isset($this->arrErr[$value[1]])) { 
    180166            return; 
     
    193179     * @return void 
    194180     */ 
    195     function EQUAL_CHECK($value) 
    196     { 
     181    function EQUAL_CHECK($value) { 
    197182        if (isset($this->arrErr[$value[2]]) || isset($this->arrErr[$value[3]])) { 
    198183            return; 
    199184        } 
    200         $this->createParam($value); 
     185        // $this->createParam($value); 
    201186        // 文字数の取得 
    202187        if ($this->arrParam[$value[2]] !== $this->arrParam[$value[3]]) { 
     
    212197     * @return void 
    213198     */ 
    214     function DIFFERENT_CHECK($value) 
    215     { 
     199    function DIFFERENT_CHECK($value) { 
    216200        if (isset($this->arrErr[$value[2]]) || isset($this->arrErr[$value[3]])) { 
    217201            return; 
    218202        } 
    219         $this->createParam($value); 
     203        // $this->createParam($value); 
    220204        // 文字数の取得 
    221205        if ($this->arrParam[$value[2]] == $this->arrParam[$value[3]]) { 
     
    231215     * @return void 
    232216     */ 
    233     function GREATER_CHECK($value) 
    234     { 
     217    function GREATER_CHECK($value) { 
    235218        if (isset($this->arrErr[$value[2]]) || isset($this->arrErr[$value[3]])) { 
    236219            return; 
    237220        } 
    238         $this->createParam($value); 
     221        // $this->createParam($value); 
    239222        // 文字数の取得 
    240223        if ($this->arrParam[$value[2]] != '' && $this->arrParam[$value[3]] != '' && ($this->arrParam[$value[2]] > $this->arrParam[$value[3]])) { 
     
    250233     * @return void 
    251234     */ 
    252     function MAX_LENGTH_CHECK($value) 
    253     { 
     235    function MAX_LENGTH_CHECK($value) { 
    254236        if (isset($this->arrErr[$value[1]])) { 
    255237            return; 
     
    269251     * @return void 
    270252     */ 
    271     function MIN_LENGTH_CHECK($value) 
    272     { 
     253    function MIN_LENGTH_CHECK($value) { 
    273254        if (isset($this->arrErr[$value[1]])) { 
    274255            return; 
     
    288269     * @return void 
    289270     */ 
    290     function MAX_CHECK($value) 
    291     { 
     271    function MAX_CHECK($value) { 
    292272        if (isset($this->arrErr[$value[1]])) { 
    293273            return; 
     
    307287     * @return void 
    308288     */ 
    309     function MIN_CHECK($value) 
    310     { 
     289    function MIN_CHECK($value) { 
    311290        if (isset($this->arrErr[$value[1]])) { 
    312291            return; 
     
    325304     * @return void 
    326305     */ 
    327     function NUM_CHECK($value) 
    328     { 
     306    function NUM_CHECK($value) { 
    329307        if (isset($this->arrErr[$value[1]])) { 
    330308            return; 
     
    343321     * @return void 
    344322     */ 
    345     function NUM_POINT_CHECK($value) 
    346     { 
     323    function NUM_POINT_CHECK($value) { 
    347324        if (isset($this->arrErr[$value[1]])) { 
    348325            return; 
     
    354331    } 
    355332 
    356     function ALPHA_CHECK($value) 
    357     { 
     333    function ALPHA_CHECK($value) { 
    358334        if (isset($this->arrErr[$value[1]])) { 
    359335            return; 
     
    378354     * @return void 
    379355     */ 
    380     function TEL_CHECK($value) 
    381     { 
     356    function TEL_CHECK($value) { 
    382357        $telItemLen = isset($value[4]) ? $value[4] : TEL_ITEM_LEN; 
    383358        $telLen = isset($value[5]) ? $value[5] : TEL_LEN; 
     
    420395        value[1]    : 判定対象要素名 
    421396    */ 
    422     function FULL_EXIST_CHECK($value) 
    423     { 
     397    function FULL_EXIST_CHECK($value) { 
    424398        $max = count($value); 
    425399        $this->createParam($value); 
     
    449423        value[1]    : 判定対象要素名 
    450424    */ 
    451     function ALL_EXIST_CHECK($value) 
    452     { 
     425    function ALL_EXIST_CHECK($value) { 
    453426        $max = count($value); 
    454427 
     
    481454        value[1]    : 判定対象要素名 
    482455    */ 
    483     function ONE_EXIST_CHECK($value) 
    484     { 
     456    function ONE_EXIST_CHECK($value) { 
    485457        $max = count($value); 
    486458        $this->createParam($value); 
     
    510482        value[1]    : 判定対象要素名 
    511483    */ 
    512     function TOP_EXIST_CHECK($value) 
    513     { 
     484    function TOP_EXIST_CHECK($value) { 
    514485        $max = count($value); 
    515486        $this->createParam($value); 
     
    544515    // 入力文字がカナ以外ならエラーを返す 
    545516    // value[0] = 項目名 value[1] = 判定対象文字列 
    546     function KANA_CHECK($value) 
    547     { 
     517    function KANA_CHECK($value) { 
    548518        if (isset($this->arrErr[$value[1]])) { 
    549519            return; 
     
    558528    // 入力文字がカナ以外ならエラーを返す 
    559529    // value[0] = 項目名 value[1] = 判定対象文字列 
    560     function KANABLANK_CHECK($value) 
    561     { 
     530    function KANABLANK_CHECK($value) { 
    562531        if (isset($this->arrErr[$value[1]])) { 
    563532            return; 
     
    572541    // 入力文字が英数字以外ならエラーを返す 
    573542    // value[0] = 項目名 value[1] = 判定対象文字列 
    574     function ALNUM_CHECK($value) 
    575     { 
     543    function ALNUM_CHECK($value) { 
    576544        if (isset($this->arrErr[$value[1]])) { 
    577545            return; 
     
    586554    // 入力文字が英数記号以外ならエラーを返す 
    587555    // value[0] = 項目名 value[1] = 判定対象文字列 
    588     function GRAPH_CHECK($value) 
    589     { 
     556    function GRAPH_CHECK($value) { 
    590557        if (isset($this->arrErr[$value[1]])) { 
    591558            return; 
     
    600567    // 入力値で0が許されない場合エラーを返す 
    601568    // value[0] = 項目名 value[1] = 判定対象 
    602     function ZERO_CHECK($value) 
    603     { 
     569    function ZERO_CHECK($value) { 
    604570        $this->createParam($value); 
    605571        if ($this->arrParam[$value[1]] == '0') { 
     
    611577    // 入力文字の桁数判定 → 最小桁数<入力文字列<最大桁数 
    612578    // value[0] = 項目名 value[1] = 判定対象文字列 value[2] = 最小桁数 value[3] = 最大桁数 
    613     function NUM_RANGE_CHECK($value) 
    614     { 
     579    function NUM_RANGE_CHECK($value) { 
    615580        if (isset($this->arrErr[$value[1]])) { 
    616581            return; 
     
    627592    // 入力文字の桁数判定 → 入力文字列 = 桁数 以外はNGの場合 
    628593    // value[0] = 項目名 value[1] = 判定対象文字列 value[2] = 桁数 
    629     function NUM_COUNT_CHECK($value) 
    630     { 
     594    function NUM_COUNT_CHECK($value) { 
    631595        if (isset($this->arrErr[$value[1]])) { 
    632596            return; 
     
    647611     * @return void 
    648612     */ 
    649     function EMAIL_CHECK($value) 
    650     { 
     613    function EMAIL_CHECK($value) { 
    651614        if (isset($this->arrErr[$value[1]])) { 
    652615            return; 
     
    697660    // メールアドレスに使用する文字を正規表現で判定する 
    698661    //  value[0] = 項目名 value[1] = 判定対象メールアドレス 
    699     function EMAIL_CHAR_CHECK($value) 
    700     { 
     662    function EMAIL_CHAR_CHECK($value) { 
    701663        if (isset($this->arrErr[$value[1]])) { 
    702664            return; 
     
    711673    // URLを正規表現で判定する。デフォルトでhttp://があってもOK 
    712674    //  value[0] = 項目名 value[1] = 判定対象URL 
    713     function URL_CHECK($value) 
    714     { 
     675    function URL_CHECK($value) { 
    715676        if (isset($this->arrErr[$value[1]])) { 
    716677            return; 
     
    723684    /* IPアドレスの判定 */ 
    724685    //  value[0] = 項目名 value[1] = 判定対象IPアドレス文字列 
    725     function IP_CHECK($value) 
    726     { 
     686    function IP_CHECK($value) { 
    727687        if (isset($this->arrErr[$value[1]])) { 
    728688            return; 
     
    747707    // 受け取りがない場合エラーを返す 
    748708    // value[0] = 項目名 value[1] = 判定対象 value[2]=array(拡張子) 
    749     function FILE_EXT_CHECK($value) 
    750     { 
     709    function FILE_EXT_CHECK($value) { 
    751710        if (isset($this->arrErr[$value[1]]) || count($value[2]) == 0) { 
    752711            return; 
     
    774733    // 受け取りがない場合エラーを返す 
    775734    // value[0] = 項目名 value[1] = 判定対象  value[2] = 指定ディレクトリ 
    776     function FIND_FILE($value) 
    777     { 
     735    function FIND_FILE($value) { 
    778736        if (isset($this->arrErr[$value[1]])) { 
    779737            return; 
     
    798756    // 受け取りがない場合エラーを返す 
    799757    // value[0] = 項目名 value[1] = 判定対象  value[2] = 指定サイズ(KB) 
    800     function FILE_EXIST_CHECK($value) 
    801     { 
     758    function FILE_EXIST_CHECK($value) { 
    802759        if (isset($this->arrErr[$value[1]])) { 
    803760            return; 
     
    812769    // 受け取りがない場合エラーを返す 
    813770    // value[0] = 項目名 value[1] = 判定対象  value[2] = 指定サイズ(KB) 
    814     function FILE_SIZE_CHECK($value) 
    815     { 
     771    function FILE_SIZE_CHECK($value) { 
    816772        if (isset($this->arrErr[$value[1]])) { 
    817773            return; 
     
    831787    // 入力文字が英数字,'_','-'以外ならエラーを返す 
    832788    // value[0] = 項目名 value[1] = 判定対象文字列 
    833     function FILE_NAME_CHECK($value) 
    834     { 
     789    function FILE_NAME_CHECK($value) { 
    835790        if (isset($this->arrErr[$value[1]])) { 
    836791            return; 
     
    845800    // 入力文字が英数字,'_','-'以外ならエラーを返す 
    846801    // value[0] = 項目名 value[1] = 判定対象文字列 
    847     function FILE_NAME_CHECK_BY_NOUPLOAD($value) 
    848     { 
     802    function FILE_NAME_CHECK_BY_NOUPLOAD($value) { 
    849803        if (isset($this->arrErr[$value[1]])) { 
    850804            return; 
     
    861815    // value[2] = MM 
    862816    // value[3] = DD 
    863     function CHECK_DATE($value) 
    864     { 
     817    function CHECK_DATE($value) { 
    865818        if (isset($this->arrErr[$value[1]])) { 
    866819            return; 
     
    885838    // value[4] = HH 
    886839    // value[5] = mm 
    887     function CHECK_DATE2($value) 
    888     { 
     840    function CHECK_DATE2($value) { 
    889841        if (isset($this->arrErr[$value[1]])) { 
    890842            return; 
     
    906858    // value[1] = YYYY 
    907859    // value[2] = MM 
    908     function CHECK_DATE3($value) 
    909     { 
     860    function CHECK_DATE3($value) { 
    910861        if (isset($this->arrErr[$value[1]])) { 
    911862            return; 
     
    928879    // value[2] = MM 
    929880    // value[3] = DD 
    930     function CHECK_BIRTHDAY($value) 
    931     { 
     881    function CHECK_BIRTHDAY($value) { 
    932882        if (isset($this->arrErr[$value[1]])) { 
    933883            return; 
     
    936886        $this->createParam($value); 
    937887        // 年が入力されている。 
    938         if (strlen($this->arrParam[$value[1]]) >= 1) { 
     888        if ($this->arrParam[$value[1]] > 0) { 
     889 
    939890            // 年の数字チェック、最小数値制限チェック 
    940891            $this->doFunc(array($value[0].'(年)', $value[1], BIRTH_YEAR), array('NUM_CHECK', 'MIN_CHECK')); 
     
    973924    // value[6] = end_month 
    974925    // value[7] = end_day 
    975     function CHECK_SET_TERM($value) 
    976     { 
     926    function CHECK_SET_TERM($value) { 
     927 
    977928        // 期間指定 
    978929        if (isset($this->arrErr[$value[2]]) || isset($this->arrErr[$value[5]])) { 
    979930            return; 
    980931        } 
    981         $this->createParam($value); 
     932        // $this->createParam($value); 
    982933        if ((strlen($this->arrParam[$value[2]]) > 0 || strlen($this->arrParam[$value[3]]) > 0 || strlen($this->arrParam[$value[4]]) > 0) && ! checkdate($this->arrParam[$value[3]], $this->arrParam[$value[4]], $this->arrParam[$value[2]])) { 
    983934            $this->arrErr[$value[2]] = '※ ' . $value[0] . 'を正しく指定してください。<br />'; 
     
    987938        } 
    988939        if ((strlen($this->arrParam[$value[2]]) > 0 && strlen($this->arrParam[$value[3]]) > 0 && strlen($this->arrParam[$value[4]]) > 0) &&  (strlen($this->arrParam[$value[5]]) > 0 || strlen($this->arrParam[$value[6]]) > 0 || strlen($this->arrParam[$value[7]]) > 0)) { 
     940 
    989941            $date1 = $this->arrParam[$value[2]] .sprintf('%02d', $this->arrParam[$value[3]]) .sprintf('%02d',$this->arrParam[$value[4]]) .'000000'; 
    990942            $date2 = $this->arrParam[$value[5]] .sprintf('%02d', $this->arrParam[$value[6]]) .sprintf('%02d',$this->arrParam[$value[7]]) .'235959'; 
     
    1022974 
    1023975    /*-----------------------------------------------------------------*/ 
    1024     function CHECK_SET_TERM2($value) 
    1025     { 
     976    function CHECK_SET_TERM2($value) { 
     977 
    1026978        // 期間指定 
    1027979        if (isset($this->arrErr[$value[2]]) || isset($this->arrErr[$value[8]])) { 
    1028980            return; 
    1029981        } 
    1030         $this->createParam($value); 
     982        // $this->createParam($value); 
    1031983        if ((strlen($this->arrParam[$value[2]]) > 0 || strlen($this->arrParam[$value[3]]) > 0 || strlen($this->arrParam[$value[4]]) > 0 || strlen($this->arrParam[$value[5]]) > 0) && ! checkdate($this->arrParam[$value[3]], $this->arrParam[$value[4]], $this->arrParam[$value[2]])) { 
    1032984            $this->arrErr[$value[2]] = '※ ' . $value[0] . 'を正しく指定してください。<br />'; 
     
    1036988        } 
    1037989        if ((strlen($this->arrParam[$value[2]]) > 0 && strlen($this->arrParam[$value[3]]) > 0 && strlen($this->arrParam[$value[4]]) > 0 && strlen($this->arrParam[$value[5]]) > 0) &&  (strlen($this->arrParam[$value[8]]) > 0 || strlen($this->arrParam[$value[9]]) > 0 || strlen($this->arrParam[$value[10]]) > 0 || strlen($this->arrParam[$value[11]]) > 0)) { 
     990 
    1038991            $date1 = $this->arrParam[$value[2]] .sprintf('%02d', $this->arrParam[$value[3]]) .sprintf('%02d',$this->arrParam[$value[4]]) .sprintf('%02d',$this->arrParam[$value[5]]).sprintf('%02d',$this->arrParam[$value[6]]).sprintf('%02d',$this->arrParam[$value[7]]); 
    1039992            $date2 = $this->arrParam[$value[8]] .sprintf('%02d', $this->arrParam[$value[9]]) .sprintf('%02d',$this->arrParam[$value[10]]) .sprintf('%02d',$this->arrParam[$value[11]]).sprintf('%02d',$this->arrParam[$value[12]]).sprintf('%02d',$this->arrParam[$value[13]]); 
     
    10641017    // value[4] = end_year 
    10651018    // value[5] = end_month 
    1066     function CHECK_SET_TERM3($value) 
    1067     { 
     1019    function CHECK_SET_TERM3($value) { 
     1020 
    10681021        // 期間指定 
    10691022        if (isset($this->arrErr[$value[2]]) || isset($this->arrErr[$value[4]])) { 
    10701023            return; 
    10711024        } 
    1072         $this->createParam($value); 
     1025        // $this->createParam($value); 
    10731026        if ((strlen($this->arrParam[$value[2]]) > 0 || strlen($this->arrParam[$value[3]]) > 0) && ! checkdate($this->arrParam[$value[3]], 1, $this->arrParam[$value[2]])) { 
    10741027            $this->arrErr[$value[2]] = '※ ' . $value[0] . 'を正しく指定してください。<br />'; 
     
    10781031        } 
    10791032        if ((strlen($this->arrParam[$value[2]]) > 0 && strlen($this->arrParam[$value[3]]) > 0 && (strlen($this->arrParam[$value[4]]) > 0 || strlen($this->arrParam[$value[5]]) > 0))) { 
     1033 
    10801034            $date1 = $this->arrParam[$value[2]] .sprintf('%02d', $this->arrParam[$value[3]]); 
    10811035            $date2 = $this->arrParam[$value[4]] .sprintf('%02d', $this->arrParam[$value[5]]); 
     
    10881042 
    10891043    //ディレクトリ存在チェック 
    1090     function DIR_CHECK($value) 
    1091     { 
     1044    function DIR_CHECK($value) { 
    10921045        if (isset($this->arrErr[$value[1]])) { 
    10931046            return; 
     
    11001053 
    11011054    // ドメインチェック 
    1102     function DOMAIN_CHECK($value) 
    1103     { 
     1055    function DOMAIN_CHECK($value) { 
    11041056        if (isset($this->arrErr[$value[1]])) { 
    11051057            return; 
     
    11131065    // メールアドレスを正規表現で判定する 
    11141066    // value[0] = 項目名 value[1] = 判定対象メールアドレス 
    1115     function MOBILE_EMAIL_CHECK($value) 
    1116     { 
     1067    function MOBILE_EMAIL_CHECK($value) { 
    11171068        if (isset($this->arrErr[$value[1]])) { 
    11181069            return; 
     
    11331084     * @return void 
    11341085     */ 
    1135     function CHECK_REGIST_CUSTOMER_EMAIL($value) 
    1136     { 
     1086    function CHECK_REGIST_CUSTOMER_EMAIL($value) { 
    11371087        if (isset($this->arrErr[$value[1]])) { 
    11381088            return; 
     
    11601110     * @example $objErr->doFunc(array('URL', 'contents', $arrReviewDenyURL), array('PROHIBITED_STR_CHECK')); 
    11611111     */ 
    1162     function PROHIBITED_STR_CHECK($value) 
    1163     { 
     1112    function PROHIBITED_STR_CHECK($value) { 
    11641113        if (isset($this->arrErr[$value[1]]) || empty($this->arrParam[$value[1]])) { 
    11651114            return; 
     
    11691118        $prohibitedStr = str_replace(array('|', '/'), array('\|', '\/'), $value[2]); 
    11701119 
    1171         $pattern = '/' . join('\b|\b', $prohibitedStr) . '\b/i'; 
    1172         if (preg_match_all($pattern, $targetStr, $matches)) { 
     1120        $pattern = '/' . join('|', $prohibitedStr) . '/i'; 
     1121        if (preg_match_all($pattern, $targetStr, $matches = array())) { 
    11731122            $this->arrErr[$value[1]] = '※ ' . $value[0] . 'は入力できません。<br />'; 
    11741123        } 
     
    11821131     * @return void 
    11831132     */ 
    1184     function EVAL_CHECK($value) 
    1185     { 
     1133    function EVAL_CHECK($value) { 
    11861134        if (isset($this->arrErr[$value[0]])) { 
    11871135            return; 
    11881136        } 
    1189         $this->createParam($value); 
     1137        // $this->createParam($value); 
    11901138        if ($this->evalCheck($value[1]) === false) { 
    11911139            $this->arrErr[$value[0]] = '※ ' . $value[0] . ' の形式が不正です。<br />'; 
     
    12041152     * @return bool パラメーターとして適切な文字列か 
    12051153     */ 
    1206     function evalCheck($value) 
    1207     { 
     1154    function evalCheck($value) { 
    12081155        return @eval('return is_scalar(' . $value . ');'); 
    12091156    } 
     
    12161163     * @return void 
    12171164     */ 
    1218     function createParam($value) 
    1219     { 
    1220         foreach ($value as $key) { 
    1221             if (is_string($key) || is_int($key)) { 
    1222                 if (!isset($this->arrParam[$key]))  $this->arrParam[$key] = ''; 
    1223             } 
    1224         } 
     1165    function createParam($value) { 
     1166         foreach ($value as $val_key => $key) { 
     1167             if ($val_key != 0 && (is_string($key) || is_int($key))) { 
     1168                 if (!is_numeric($key) && preg_match('/^[a-z0-9_]+$/i', $key)) { 
     1169                     if (!isset($this->arrParam[$key])) $this->arrParam[$key] = ''; 
     1170                     if (strlen($this->arrParam[$key]) > 0 
     1171                           && (preg_match('/^[[:alnum:]\-\_]*[\.\/\\\\]*\.\.(\/|\\\\)/',$this->arrParam[$key]) || !preg_match('/\A[^\x00-\x08\x0b\x0c\x0e-\x1f\x7f]+\z/u', $this->arrParam[$key]))) { 
     1172                         $this->arrErr[$value[1]] = '※ ' . $value[0] . 'に禁止された記号の並びまたは制御文字が入っています。<br />'; 
     1173                     } 
     1174                 } else if (preg_match('/[^a-z0-9_]/i', $key)) { 
     1175                     trigger_error('', E_USER_ERROR); 
     1176                 } 
     1177             } 
     1178         } 
    12251179    } 
    12261180 
     
    12321186     * @return boolean 値が10進数の数値表現のみの場合 true 
    12331187     */ 
    1234     function numelicCheck($string) 
    1235     { 
     1188    function numelicCheck($string) { 
    12361189        /* 
    12371190         * XXX 10進数の数値表現か否かを調べたいだけだが, 
     
    12401193         */ 
    12411194        $string = (string) $string; 
    1242  
    12431195        return strlen($string) > 0 && !ctype_digit($string); 
    12441196    } 
  • branches/version-2_13-dev/data/class/SC_FormParam.php

    r22856 r22911  
    290290            } 
    291291        } else { 
    292             $objErr = new SC_CheckError_Ex(array(0 => $value)); 
    293             $objErr->doFunc(array($disp_name, 0, $length), array($func)); 
     292            $objErr = new SC_CheckError_Ex(array(($error_last_key ? $error_last_key : $error_key) => $value)); 
     293            $objErr->doFunc(array($disp_name, ($error_last_key ? $error_last_key : $error_key), $length), array($func)); 
    294294            if (!SC_Utils_Ex::isBlank($objErr->arrErr)) { 
    295295                foreach ($objErr->arrErr as $message) { 
Note: See TracChangeset for help on using the changeset viewer.