ここの情報は古いです。ご理解頂いた上でお取り扱いください。

Changeset 2923


Ignore:
Timestamp:
May 16, 2007, 5:10:45 PM (12 years ago)
Author:
ogawa
Message:

#761:ファイルアップロード機能に拡張子制限機能を入れる
#741:0byteのファイルをアップロードできない

Location:
OpenPNE/branches/2.8.x
Files:
14 edited

Legend:

Unmodified
Added
Removed
  • OpenPNE/branches/2.8.x/config.php.sample

    r2659 r2923  
    309309
    310310///
     311// ファイルアップロード機能
     312///
     313
     314// ファイルアップロード機能を使用するかどうか
     315define('OPENPNE_USE_FILEUPLOAD', true);
     316
     317// アップロードファイルのファイルサイズ制限(KB)
     318define('FILE_MAX_FILESIZE', 300);
     319
     320// 許可する拡張子のリスト(カンマ(,)区切り)
     321// 未指定の場合は全て許可
     322//define('FILE_ALLOWED_EXTENTIONS', 'pdf,xls,ppt,zip');
     323define('FILE_ALLOWED_EXTENTIONS', '');
     324
     325///
    311326// 外部RSS取得
    312327///
     
    471486define('CHECK_IMG_AUTH', false);
    472487
    473 // ファイルアップロード機能を使用するかどうか
    474 define('OPENPNE_USE_FILEUPLOAD', true);
    475 
    476 
    477488?>
  • OpenPNE/branches/2.8.x/webapp/lib/OpenPNE/Config.php

    r2839 r2923  
    4242            'USE_BIZ_DIR',
    4343            'SEND_USER_DATA',
    44             'FILE_TYPE',
    4544            'LIMIT_DOMAIN1',
    4645            'LIMIT_DOMAIN2',
     
    130129            'USE_BIZ_DIR' => '0',
    131130            'SEND_USER_DATA' => '0',
    132             'FILE_TYPE' => '',
    133131            'LIMIT_DOMAIN1' => '',
    134132            'LIMIT_DOMAIN2' => '',
     
    156154            'IMAGE_MAX_WIDTH' => 0,
    157155            'IMAGE_MAX_HEIGHT' => 0,
     156            'OPENPNE_USE_FILEUPLOAD' => true,
     157            'FILE_MAX_FILESIZE' => 300,
     158            'FILE_ALLOWED_EXTENTIONS' => '',
    158159            'MAIL_ADDRESS_PREFIX' => '',
    159160            'MAIL_ADDRESS_HASHED' => true,
  • OpenPNE/branches/2.8.x/webapp/lib/db/etc.php

    r2658 r2923  
    788788}
    789789
    790 // 指定されたファイルの拡張子はアップロード許可があるのかどうか
    791 function db_is_permit_file_type($filename)
    792 {
    793     $file_type = FILE_TYPE;
    794     $permit_list = explode(',', $file_type);
    795 
    796     // 指定がなければ全許容
    797     if (empty($file_type)) {
    798         return true;
    799     }
    800 
    801     $pieces = explode('.', $filename);
    802 
    803     if (in_array(array_pop($pieces), $permit_list)) {
    804         return true;
    805     } else {
    806         return false;
    807     }
    808 }
    809 
    810790?>
  • OpenPNE/branches/2.8.x/webapp/lib/smarty_plugins/function.t_form.php

    r2120 r2923  
    1919        if ($params['_enctype'] == 'file' || $params['_enctype'] == 'multipart') {
    2020            $enctype = 'multipart/form-data';
    21             $params['MAX_FILE_SIZE'] = IMAGE_MAX_FILESIZE * 1024;
     21            $params['MAX_FILE_SIZE'] = max(IMAGE_MAX_FILESIZE * 1024, FILE_MAX_FILESIZE * 1024);
    2222        }
    2323        unset($params['_enctype']);
  • OpenPNE/branches/2.8.x/webapp/lib/util/util.php

    r2913 r2923  
    556556}
    557557
     558/**
     559 * アップロード可能な拡張子のリストを取得
     560 */
     561function util_get_file_allowed_extensions($format = null)
     562{
     563    $list = array();
     564    if (FILE_ALLOWED_EXTENTIONS) {
     565        $exts = explode(',', FILE_ALLOWED_EXTENTIONS);
     566        foreach ((array)$exts as $ext) {
     567            if (trim($ext) !== '') {
     568                $list[] = trim($ext);
     569            }
     570        }
     571    }
     572    if ($format === 'string') {
     573        if ($list) {
     574            foreach ($list as $key => $value) {
     575                $list[$key] = '*.' . $value;
     576            }
     577            $list = implode('; ', $list);
     578        } else {
     579            $list = '';
     580        }
     581    }
     582    return $list;
     583}
     584
     585/**
     586 * アップロード可能な拡張子かどうか
     587 */
     588function util_check_file_extention($filename)
     589{
     590    $extension = pathinfo($filename, PATHINFO_EXTENSION);
     591    $list = util_get_file_allowed_extensions();
     592    return (!$list || in_array($extension, $list));
     593}
     594
    558595?>
  • OpenPNE/branches/2.8.x/webapp/modules/admin/templates/edit_c_admin_config.tpl

    r2839 r2923  
    308308</select></td>
    309309</tr>
    310 
    311310<tr class="cell28">
    312311<th colspan="2">退会者のデータ</th>
     
    318317</select></td>
    319318</tr>
    320 
    321 <tr class="cell30">
    322 <th colspan="2">添付ファイル拡張子</th>
    323 <td>
    324 <span class="info">添付ファイルで使用できるファイルの拡張子をカンマ区切りで記述してください</span><br />
    325 <input class="basic" name="FILE_TYPE" type="text" value="({$smarty.const.FILE_TYPE})" size="30" />
    326 </td>
    327 </tr>
    328 
    329319</table>
    330320<p class="textBtn"><input type="submit" value="設定変更する"></p>
  • OpenPNE/branches/2.8.x/webapp/modules/admin/validate/do/update_c_admin_config.ini

    r2839 r2923  
    157157default = "1"
    158158
    159 [FILE_TYPE]
    160 type = "string"
    161 default = ""
    162 
    163159[OPENPNE_ENABLE_ROLLOVER]
    164160type = "bool"
  • OpenPNE/branches/2.8.x/webapp/modules/pc/do/c_topic_add_insert_c_commu_topic.php

    r2860 r2923  
    1919
    2020        //---添付ファイル
    21         $filename4_tmpfile = $requests['filename4_tmpfile'];
    22         $filename4_original_filename = $requests['filename4_original_filename'];
    23 
    24         // 添付ファイルの拡張子が許可されているか
    25         if (!db_is_permit_file_type($filename4_original_filename)) {
    26             $_REQUEST['target_c_commu_id'] = $c_commu_id;
    27             $_REQUEST['err_msg'] = 'アップロードできるファイルの拡張子は('.FILE_TYPE.')です';
    28             openpne_forward('pc', 'page', "c_topic_add");
    29             exit;
     21        if (OPENPNE_USE_FILEUPLOAD) {
     22            $filename4_tmpfile = $requests['filename4_tmpfile'];
     23            $filename4_original_filename = $requests['filename4_original_filename'];
     24           
     25            if ($filename4_tmpfile) {
     26                // 拡張子制限
     27                if (!util_check_file_extention($filename4_original_filename)) {
     28                    $_REQUEST['target_c_commu_id'] = $c_commu_id;
     29                    $_REQUEST['err_msg'] = sprintf('アップロードできるファイルの種類は(%s)です', util_get_file_allowed_extensions('string'));
     30                    openpne_forward('pc', 'page', "c_topic_add");
     31                    exit;
     32                }
     33            }
    3034        }
    3135
  • OpenPNE/branches/2.8.x/webapp/modules/pc/do/c_topic_edit_update_c_commu_topic.php

    r2659 r2923  
    5858            }
    5959        }
    60         if ($upfile_obj4['error'] !== UPLOAD_ERR_NO_FILE) {
    61             if (OPENPNE_USE_FILEUPLOAD) {
    62                 $filesize = $upfile_obj4['size'];
    63                 if ((!$filesize)  || ($filesize > IMAGE_MAX_FILESIZE * 1024)) {
    64                     $err_msg[] = '添付ファイルは'.IMAGE_MAX_FILESIZE.'KB以内のファイルにしてください';
     60
     61        if (OPENPNE_USE_FILEUPLOAD) {
     62            if ($upfile_obj4['error'] !== UPLOAD_ERR_NO_FILE) {
     63                // ファイルサイズ制限
     64                if ($upfile_obj4['size'] === 0) {
     65                    $err_msg[] = '空のファイルはアップロードできません';
    6566                }
    6667
    67                 // 添付ファイルの拡張子が許可されているか
    68                 if (!db_is_permit_file_type($upfile_obj4["name"])) {
    69                     $err_msg[] = 'アップロードできるファイルの拡張子は('.FILE_TYPE.')です';
     68                if ($upfile_obj4['size'] > FILE_MAX_FILESIZE * 1024) {
     69                    $err_msg[] = 'ファイルは' . FILE_MAX_FILESIZE . 'KB以内のファイルにしてください';
    7070                }
    7171
    72             } else {
    73                 $err_msg[] = 'ファイルのアップロードはできません。';
     72                // 拡張子制限
     73                if (!util_check_file_extention($upfile_obj4['name'])) {
     74                    $err_msg[] = sprintf('アップロードできるファイルの種類は(%s)です', util_get_file_allowed_extensions('string'));
     75                }
    7476            }
    7577        }
     
    120122            'body' => $body,
    121123        );
    122         $c_topic = c_topic_detail_c_topic4c_commu_topic_id($c_commu_topic_id);
     124        $c_topic = db_commu_c_topic4c_commu_topic_id($c_commu_topic_id);
    123125        if ($filename1) {
    124126            $update_c_commu_topic_comment["image_filename1"] = $filename1;
     
    135137        if ($filename4) {
    136138            $update_c_commu_topic_comment['filename4'] = $filename4;
    137             db_file_delete_c_file($c_topic['filename4']);
     139            db_file_delete_c_file($c_topic['filename']);
    138140        }
    139141        db_commu_update_c_commu_topic_comment($c_commu_topic_id, $update_c_commu_topic_comment);
  • OpenPNE/branches/2.8.x/webapp/modules/pc/page/c_topic_add.php

    r1856 r2923  
    5151        $this->set('body', $body);
    5252
     53        // 許可されている拡張子のリスト
     54        $this->set('allowed_extensions', util_get_file_allowed_extensions('string'));
     55
    5356        return 'success';
    5457    }
  • OpenPNE/branches/2.8.x/webapp/modules/pc/page/c_topic_add_confirm.php

    r2669 r2923  
    6565        }
    6666
    67         if ($upfile_obj4['error'] !== UPLOAD_ERR_NO_FILE) {
    68             if (OPENPNE_USE_FILEUPLOAD) {
    69                 $filesize = filesize($upfile_obj4['tmp_name']);
    70                 if ((!$filesize)  || ($filesize > IMAGE_MAX_FILESIZE * 1024)) {
    71                     $err_msg[] = '添付ファイルは'.IMAGE_MAX_FILESIZE.'KB以内のファイルにしてください';
     67        if (OPENPNE_USE_FILEUPLOAD) {
     68            if ($upfile_obj4['error'] !== UPLOAD_ERR_NO_FILE) {
     69                // ファイルサイズ制限
     70                if ($upfile_obj4['size'] === 0) {
     71                    $err_msg[] = '空のファイルはアップロードできません';
    7272                }
    7373
    74                 // 添付ファイルの拡張子が許可されているか
    75                 if (!db_is_permit_file_type($upfile_obj4["name"])) {
    76                     $err_msg[] = 'アップロードできるファイルの拡張子は('.FILE_TYPE.')です';
     74                if ($upfile_obj4['size'] > FILE_MAX_FILESIZE * 1024) {
     75                    $err_msg[] = 'ファイルは' . FILE_MAX_FILESIZE . 'KB以内のファイルにしてください';
    7776                }
    7877
    79             } else {
    80                 $err_msg[] = 'ファイルのアップロードはできません。';
     78                // 拡張子制限
     79                if (!util_check_file_extention($upfile_obj4['name'])) {
     80                    $err_msg[] = sprintf('アップロードできるファイルの種類は(%s)です', util_get_file_allowed_extensions('string'));
     81                }
    8182            }
    8283        }
  • OpenPNE/branches/2.8.x/webapp/modules/pc/page/c_topic_edit.php

    r2647 r2923  
    5454        $this->set('err_msg', $err_msg);
    5555        $this->set('c_topic', $c_topic);
     56
     57        // 許可されている拡張子のリスト
     58        $this->set('allowed_extensions', util_get_file_allowed_extensions('string'));
     59
    5660        return 'success';
    5761    }
  • OpenPNE/branches/2.8.x/webapp/modules/pc/templates/c_topic_add.tpl

    r2653 r2923  
    4545<tr>
    4646<td style="width:1px;" class="bg_01" align="center"><img src="./skin/dummy.gif" style="width:1px;height:1px;" class="dummy"></td>
    47 <td style="width:150px;" class="bg_05" align="left" valign="middle">
     47<td style="width:150px;" class="bg_05" align="center" valign="middle">
    4848
    4949<div class="padding_s">
     
    7171<tr>
    7272<td class="bg_01" align="center"><img src="./skin/dummy.gif" style="width:1px;height:1px;" class="dummy"></td>
    73 <td class="bg_05" align="left" valign="middle">
     73<td class="bg_05" align="center" valign="middle">
    7474
    7575<div class="padding_s">
     
    9797<tr>
    9898<td class="bg_01" align="center"><img src="./skin/dummy.gif" style="width:1px;height:1px;" class="dummy"></td>
    99 <td class="bg_05" align="left" valign="middle">
     99<td class="bg_05" align="center" valign="middle">
    100100
    101101<div class="padding_s">
     
    123123<tr>
    124124<td class="bg_01" align="center"><img src="./skin/dummy.gif" style="width:1px;height:1px;" class="dummy"></td>
    125 <td class="bg_05" align="left" valign="middle">
     125<td class="bg_05" align="center" valign="middle">
    126126
    127127<div class="padding_s">
     
    151151<tr>
    152152<td class="bg_01" align="center"><img src="./skin/dummy.gif" style="width:1px;height:1px;" class="dummy"></td>
    153 <td class="bg_05" align="left" valign="middle">
     153<td class="bg_05" align="center" valign="middle">
    154154
    155155<div class="padding_s">
     
    179179<tr>
    180180<td class="bg_01" align="center"><img src="./skin/dummy.gif" style="width:1px;height:1px;" class="dummy"></td>
    181 <td class="bg_05" align="left" valign="middle">
     181<td class="bg_05" align="center" valign="middle">
    182182
    183183<div class="padding_s">
     
    192192<div class="padding_s">
    193193
    194 <input type="file" name="uploadfile" size="40">
     194<input type="file" name="uploadfile" size="40"><br>
     195
     196※ファイルサイズは({$smarty.const.FILE_MAX_FILESIZE})KB以内({if $allowed_extensions})、ファイルの種類は(({$allowed_extensions}))({/if})のファイルがアップロードできます。
    195197
    196198</div>
  • OpenPNE/branches/2.8.x/webapp/modules/pc/templates/c_topic_edit.tpl

    r2647 r2923  
    213213<a href="({t_url m=pc a=do_c_topic_edit_delete_c_commu_topic_comment_file})&amp;target_c_commu_topic_id=({$c_topic.c_commu_topic_id})&amp;sessid=({$PHPSESSID})">削除</a><br>
    214214({/if})
    215 <input type="file" name="filename4" size="40">
     215<input type="file" name="filename4" size="40"><br>
     216
     217※ファイルサイズは({$smarty.const.FILE_MAX_FILESIZE})KB以内({if $allowed_extensions})、ファイルの種類は(({$allowed_extensions}))({/if})のファイルがアップロードできます。
    216218
    217219</div>
Note: See TracChangeset for help on using the changeset viewer.