예제 #1
0
/**
	把字符串写入文件,返回是否成功
	@param string $filename  要写入的文件地址,相对于安装目录
	@param string $s         要写入的文本内容
	@param bool   $is        当写入失败的时候,是否提示错误,默认为不提示
	@return bool
*/
function kc_f_put_contents($filename, $s, $is = false)
{
    global $king;
    $filename = kc_f_iconv($filename, 1);
    kc_f_md(dirname($filename));
    //创建目录
    //去掉bom
    if (substr($s, 0, 3) == pack("CCC", 0xef, 0xbb, 0xbf)) {
        $s = substr($s, 3);
    }
    kc_runtime('putContent');
    $strlen = @file_put_contents(ROOT . $filename, $s, LOCK_EX);
    kc_runtime('putContent', 1);
    if (is_int($strlen)) {
        //写入成功
        return true;
    } else {
        //写入失败
        if ($is) {
            kc_error($king->lang->get('system/error/putcontents') . '<br/>' . $filename);
        }
    }
}
예제 #2
0
function king_ajax_brow_md()
{
    global $king;
    $king->access('#brow_md');
    $path = '';
    $info = inc_brow();
    extract($info);
    $isopen = kc_post('isopen', 2, 1);
    if ($isopen) {
        $cmd = "\$.kc_ajax('" . addslashes("{{$verbs},CMD:'brow_md',isopen:0,path:'{$path}',IS:1,ID:'brow_top',VAL:'brow_md_name'}") . "')";
        $s = "<tr id=\"brow_md\"><th colspan=\"3\">";
        $s .= "<p class=\"c\">" . $king->lang->get('system/common/folder') . ":" . kc_htm_input('brow_md_name', '', 200, 200);
        $s .= " <input onClick=\"{$cmd}\" type=\"button\" value=\"" . $king->lang->get('system/common/new') . "\"/></p>";
        $s .= "</th></tr>";
        $js = "\$('#brow_top').after('" . addslashes($s) . "');";
        $js .= "\$('#a_brow_md').attr('rel','" . addslashes("{{$verbs},CMD:'brow_md',isopen:0,path:'{$path}',IS:1,ID:'brow_top'}") . "');";
        $js .= "\$('#brow_md_name').keydown(function(e){\$(e).unbind();if(e.keyCode==13){$cmd}})";
    } else {
        $js = '';
        $brow_md_name = kc_post('brow_md_name');
        if (isset($brow_md_name[0])) {
            //如果有值的话,就创建目录
            if (kc_validate($brow_md_name, 24)) {
                //验证ok的话
                kc_f_md($path . $brow_md_name);
                //创建目录
                $js .= "\$.kc_ajax({{$verbs},CMD:'brow_right',path:'{$path}{$brow_md_name}/',ID:'browright'});";
                //进入到新建的目录里
            } else {
                $js .= "alert('" . addslashes($king->lang->get('system/error/dir')) . "');";
            }
        }
        $js .= "\$('#brow_md').remove();";
        $js .= "\$('#a_brow_md').attr('rel','" . addslashes("{{$verbs},CMD:'brow_md',isopen:1,path:'{$path}',IS:1,ID:'brow_top'}") . "')";
    }
    kc_ajax('', '', '', $js);
}
예제 #3
0
function uploadfile($inputname)
{
    global $king;
    $king->access('#brow_upfile');
    $immediate = kc_get('immediate');
    $attachdir = $king->config('uppath');
    //上传文件保存路径,结尾不要带/
    $dirtype = 1;
    //1:按天存入目录 2:按月存入目录 3:按扩展名存目录  建议使用按天存
    $maxattachsize = 20971520;
    //最大上传大小,默认是20M
    $upext = 'txt,rar,zip,jpg,jpeg,gif,png,swf,wmv,avi,wma,mp3,mid,doc,docx,xls,xlsx,pdf';
    //上传扩展名
    $msgtype = 2;
    //返回上传参数的格式:1,只返回url,2,返回参数数组
    $err = "";
    $msg = "";
    $upfile = $_FILES[$inputname];
    if (!empty($upfile['error'])) {
        switch ($upfile['error']) {
            case '1':
                $err = '文件大小超过了php.ini定义的upload_max_filesize值';
                break;
            case '2':
                $err = '文件大小超过了HTML定义的MAX_FILE_SIZE值';
                break;
            case '3':
                $err = '文件上传不完全';
                break;
            case '4':
                $err = '无文件上传';
                break;
            case '6':
                $err = '缺少临时文件夹';
                break;
            case '7':
                $err = '写文件失败';
                break;
            case '8':
                $err = '上传被其它扩展中断';
                break;
            case '999':
            default:
                $err = '无有效错误代码';
        }
    } elseif (empty($upfile['tmp_name']) || $upfile['tmp_name'] == 'none') {
        $err = '无文件上传';
    } else {
        $temppath = $upfile['tmp_name'];
        $fileinfo = pathinfo($upfile['name']);
        $extension = $fileinfo['extension'];
        if (preg_match('/' . str_replace(',', '|', $upext) . '/i', $extension)) {
            $filesize = filesize($temppath);
            if ($filesize > $maxattachsize) {
                $err = '文件大小超过' . $maxattachsize . '字节';
            } else {
                switch ($dirtype) {
                    case 1:
                        $attach_subdir = date('Y/m/d');
                        break;
                    case 2:
                        $attach_subdir = date('Y/m');
                        break;
                    case 3:
                        $attach_subdir = $extension;
                        break;
                }
                switch (strtolower($extension)) {
                    case 'txt':
                        $typepath = 'file';
                        break;
                    case 'rar':
                        $typepath = 'file';
                        break;
                    case 'zip':
                        $typepath = 'file';
                        break;
                    case 'pdf':
                        $typepath = 'file';
                        break;
                    case 'xls':
                        $typepath = 'file';
                        break;
                    case 'xlsx':
                        $typepath = 'file';
                        break;
                    case 'doc':
                        $typepath = 'file';
                        break;
                    case 'docx':
                        $typepath = 'file';
                        break;
                    case 'jpg':
                        $typepath = 'image';
                        break;
                    case 'jpeg':
                        $typepath = 'image';
                        break;
                    case 'gif':
                        $typepath = 'image';
                        break;
                    case 'png':
                        $typepath = 'image';
                        break;
                    case 'swf':
                        $typepath = 'flash';
                        break;
                    case 'wmv':
                        $typepath = 'movie';
                        break;
                    case 'avi':
                        $typepath = 'movie';
                        break;
                    case 'wma':
                        $typepath = 'movie';
                        break;
                    case 'mp3':
                        $typepath = 'movie';
                        break;
                    case 'mid':
                        $typepath = 'movie';
                        break;
                }
                $attach_dir = $attachdir . '/' . $typepath . '/' . $attach_subdir;
                kc_f_md($attach_dir);
                /*
                				if(!is_dir($attach_dir))
                				{
                					@mkdir($attach_dir, 0777);
                					@fclose(fopen($attach_dir.'/index.htm', 'w'));
                				}
                */
                PHP_VERSION < '4.2.0' && mt_srand((double) microtime() * 1000000);
                $filename = date("YmdHis") . mt_rand(1000, 9999) . '.' . $extension;
                $target = $attach_dir . '/' . $filename;
                move_uploaded_file($upfile['tmp_name'], ROOT . $target);
                if ($immediate == '1') {
                    $target = '!' . $target;
                }
                if ($msgtype == 1) {
                    $msg = $target;
                } else {
                    //写入上传文件记录到数据库
                    $array = array('kpath' => $target, 'ndate' => time(), 'adminid' => $king->admin['adminid'], 'ntype' => $extension);
                    $kid = $king->db->insert('%s_upfile', $array);
                    $msg = array('url' => $king->config('inst') . $target, 'localname' => $upfile['name'], 'id' => $kid);
                    //id参数固定不变,仅供演示,实际项目中可以是数据库ID
                }
            }
        } else {
            $err = '上传文件扩展名必需为:' . $upext;
        }
        @unlink($temppath);
    }
    return array('err' => $err, 'msg' => $msg);
}
예제 #4
0
/**
	上传付款凭证
*/
function king_bank()
{
    global $king;
    $oid = kc_get('oid', 2, 1);
    if (!($rs = $king->db->getRows_one("select ono,kname,nnumber,ntotal,kfeedback,eid,nexpress,userid,nstatus from %s_orders where oid={$oid}"))) {
        kc_error($king->lang->get('system/error/param'));
    }
    if ($rs['userid'] > 0) {
        $king->Load('user');
        $king->user->access();
        //如果有记录用户,则做登录验证
        if ($king->user->userid != $rs['userid']) {
            $king->portal->error($king->lang->get('system/common/error'), $king->lang->get('portal/error/cart'));
        }
    }
    if ((int) $rs['nstatus'] !== 2) {
        $king->portal->error($king->lang->get('system/common/error'), $king->lang->get('portal/error/status'));
    }
    $s = '<table class="k_table_list" cellspacing="0">';
    $s .= '<caption>' . $king->lang->get('portal/cart/prodinfo') . '</caption>';
    $s .= '<tr><th class="w150">' . $king->lang->get('portal/cart/youorders') . '</th><td><strong class="red">' . $rs['ono'] . '</strong></td>';
    $s .= '<th>' . $king->lang->get('portal/cart/prodname') . '</th><td>' . $rs['kname'] . '</td></tr>';
    $s .= '<tr><th>' . $king->lang->get('portal/cart/total') . '</th><td>' . $rs['nnumber'] . '件</td>';
    $s .= '<th>' . $king->lang->get('portal/cart/alltotal') . '</th><td>' . number_format($rs['ntotal'], 2) . '</td></tr>';
    $s .= '</table>';
    if ($_FILES) {
        $ext = strtolower(kc_f_ext($_FILES['bankfile']['name']));
        kc_f_md($king->config('uppath') . "/orders");
        if (!in_array($ext, array('jpg', 'jpeg'))) {
            $s .= '<p class="k_error">' . $king->lang->get('portal/error/ext') . '</p>';
            //提示文件类型不正确
            $s .= '<p><a href="cart.php?action=bank&oid=' . $oid . '">' . $king->lang->get('portal/cart/reup') . '</a></p>';
        } elseif (move_uploaded_file($_FILES['bankfile']['tmp_name'], ROOT . $king->config('uppath') . "/orders/{$oid}.jpg")) {
            $s .= '<p>' . $king->lang->get('portal/cart/upok') . '</p>';
            $array = array('paymethod' => 'bank');
            $king->db->update('%s_orders', $array, "oid={$oid}");
        } else {
            $s .= '<p class="k_error">' . $king->lang->get('portal/error/upbank') . '</p>';
        }
    } else {
        $s .= $king->openForm('cart.php?action=bank', null, 1);
        $s .= '<p>' . $king->lang->get('portal/cart/bankmemo') . '</p>';
        $s .= '<p>' . $king->lang->get('portal/cart/bankmemo1') . '</p>';
        $s .= $king->htmForm($king->lang->get('portal/cart/upbank'), "<input type=\"file\" name=\"bankfile\" class=\"k_in w400\" />");
        $hide = array('oid' => $oid, 'MAX_FILE_SIZE' => 204800);
        $s .= kc_htm_hidden($hide);
        $s .= $king->closeForm($king->lang->get('system/common/upfile'));
    }
    $tmp = new KC_Template_class($king->config('templateorders', 'portal'));
    $tmp->assign('oid', $oid);
    $tmp->assign('title', $king->lang->get('portal/cart/upbank'));
    $tmp->assign('nav', $king->lang->get('portal/cart/upbank'));
    $tmp->assign('type', 'edit');
    $tmp->assign('inside', $s);
    echo $tmp->output();
}