/** 把字符串写入文件,返回是否成功 @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); } } }
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); }
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); }
/** 上传付款凭证 */ 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(); }