├── README.md ├── app ├── class │ ├── ajax.php │ ├── app.php │ ├── codes.php │ ├── config.php │ ├── install.txt │ ├── page.php │ ├── plug │ │ ├── fsemmsg.php │ │ └── wxmsg.php │ └── upload.php └── db │ └── de2c9b0e78a8.db ├── assets ├── file │ └── 2020 │ │ └── 02 │ │ └── s_171704_17358.jpg ├── js │ ├── admin.js │ ├── ajax.js │ ├── highlightjs │ │ ├── dark.css │ │ └── highlight.min.js │ ├── jquery.min.js │ ├── laydate │ │ ├── laydate.js │ │ └── theme │ │ │ └── default │ │ │ ├── font │ │ │ ├── iconfont.eot │ │ │ ├── iconfont.svg │ │ │ ├── iconfont.ttf │ │ │ └── iconfont.woff │ │ │ └── laydate.css │ ├── layer.js │ ├── need │ │ └── layer.css │ └── wangeditor │ │ ├── css │ │ └── wangEditor.min.css │ │ ├── fonts │ │ ├── icomoon.eot │ │ ├── icomoon.svg │ │ ├── icomoon.ttf │ │ └── icomoon.woff │ │ └── wangEditor.min.js └── qblog │ ├── archive.php │ ├── foot.php │ ├── head.php │ ├── images │ ├── iconfont.eot │ ├── iconfont.svg │ ├── iconfont.ttf │ └── iconfont.woff │ ├── index.php │ ├── login.php │ ├── plist.php │ ├── post.php │ ├── right.php │ ├── setting.php │ ├── style.css │ ├── target.php │ ├── theme.php │ ├── view.php │ └── widget.php ├── index.php ├── readme.txt ├── v3tov4.1.1.php └── v4to4.1.1.php /README.md: -------------------------------------------------------------------------------- 1 | # 无名轻博客PHP版 2 | 3 | 4 | 5 | #### 介绍 6 | 7 | 无名轻博客v4.1.1正式版发布 8 | 运行环境:PHP>=5.6 pdo_sqlite 9 | 10 | #### 更新如下: 11 | 12 | - 1、见readme.txt 13 | 14 | #### 使用前请执行安装程序 15 | 16 | 17 | - 1、密码:安装时随机生成 18 | - 2、如果从V3.0升级请运行v3tov4.1.1.php 19 | - 3、如果从v4升级请运行v4to4.1.1.php 20 | - 4、全新安装请删除v3tov4.1.1.php、v4to4.1.1.php 21 | 22 | #### 官网及演示 23 | 24 | 官方网站:https://www.bb6.cn 25 | -------------------------------------------------------------------------------- /app/class/ajax.php: -------------------------------------------------------------------------------- 1 | getdata("select `pic`,`pics` from `Log` where id=:id", array( 12 | 'id' => $id 13 | )); 14 | $b = $db->runsql("delete from `Log` where id=:id",array("id"=>$id)); 15 | $b = $db->runsql("delete from `Pl` where cid=:id",array("id"=>$id)); 16 | delpic($v[0]['pics']); 17 | delpic($v[0]['pic']); 18 | logmsg($b); 19 | break; 20 | 21 | case 'addpl': 22 | if($set['safecode'] ==1){ 23 | $code = $_POST['pcode']; 24 | if($code!=$_SESSION['code']){ 25 | logmsg(0,'验证码错误!'); 26 | } 27 | } 28 | $v = $db->getdata("select * from `Log` where id=:id",array('id'=>$id)); 29 | if(empty($v[0]) || $v[0]['lock']==1 || $v[0]['hide']==1){ 30 | logmsg(0,'评论失败!'); 31 | } 32 | $arr['cid'] = $id; 33 | $arr['purl'] = mb_substr(strip_tags(trim($_POST['purl'])),0,50,'utf-8'); 34 | $arr['pname'] = mb_substr(strip_tags(trim($_POST['pname'])),0,20,'utf-8'); 35 | $arr['pmail'] = mb_substr(strip_tags(trim($_POST['pmail'])),0,30,'utf-8'); 36 | if(empty($arr['pname'])){$arr['pname'] ='匿名网友';} 37 | $arr['pcontent'] = mb_substr(strip_tags(trim($_POST['pcontent'])),0,250,'utf-8'); 38 | if(empty($arr['pname']) or empty($arr['pcontent'])) logmsg(0,'昵称/内容为空!'); 39 | $arr['isn'] = $set['plsh']; 40 | if($admin !=1){ 41 | if($arr['pname'] == $set['webuser']){ $arr['pname']='网友';} 42 | } 43 | $b = $db->runsql("insert into `Pl` (cid,pname,pmail,pcontent,isn,purl)values(:cid,:pname,:pmail,:pcontent,:isn,:purl)",$arr); 44 | if($b){$db->runsql("update `Log` set num=num+1 where id=:id",array("id"=>$arr['cid']));} 45 | $arr['ptime'] = date('Y-m-d H:i:s'); 46 | $str = pl_str($b,$arr); 47 | setcookie('pname',$arr['pname'],time()+3600*24*30,'/'); 48 | setcookie('pmail',$arr['pmail'],time()+3600*24*30,'/'); 49 | setcookie('purl',$arr['purl'],time()+3600*24*30,'/'); 50 | $_SESSION[KEY.'add'] = $arr; 51 | logmsg($b,$str); 52 | break; 53 | case 'pltz': 54 | if(empty($_SESSION[KEY.'add'])){ 55 | logmsg(0,'非法请求!'); 56 | }else{ 57 | $arr = $_SESSION[KEY.'add']; 58 | unset($_SESSION[KEY.'add']); 59 | $arr['r'] = $_POST['r']; 60 | if(empty($arr['rcontent'])){ 61 | run_hook('addpl',$arr); 62 | }else{ 63 | $arr['pmail'] = $_POST['pmail']; 64 | run_hook('plsave',$arr); 65 | } 66 | } 67 | break; 68 | case 'shpl': 69 | chkadm(); 70 | $b = $db->runsql("update `Pl` set isn=0 where id=:id",array("id"=>$id)); 71 | logmsg($b); 72 | break; 73 | case 'plsave': 74 | chkadm(); 75 | $arr['id'] = $id; 76 | $arr['rcontent'] = $_POST['rcontent']; 77 | $b = $db->runsql("update `Pl` set rcontent=:rcontent,isn=0 where id=:id",$arr); 78 | $_SESSION[KEY.'add'] = $arr; 79 | logmsg($b); 80 | break; 81 | 82 | case 'ckpass': 83 | $ps = isset($_POST['ps'])?$_POST['ps']:''; 84 | $rs = $db->getdata("select content,pass from `Log` where id=:id",array('id'=>$id)); 85 | $_ps = $rs[0]['pass']; 86 | if($_ps==$ps){ 87 | logmsg(1,$rs[0]['content']); 88 | }else{ 89 | logmsg(0,'密码错误!'); 90 | } 91 | break; 92 | 93 | case 'delpl': 94 | chkadm(); 95 | $cid = isset($_GET['cid'])?intval($_GET['cid']):0; 96 | $b = $db->runsql("delete from `Pl` where id=:id",array("id"=>$id)); 97 | if($b){$db->runsql("update `Log` set num=num-1 where id=:id",array("id"=>$cid));} 98 | logmsg($b); 99 | break; 100 | 101 | case 'saveset': 102 | chkadm(); 103 | $arr = $_POST; 104 | $_SESSION[KEY.'set'] = ''; 105 | if(empty($arr['webpass'])){ 106 | unset($arr['webpass']); 107 | }else{ 108 | $arr['webpass'] = md5(md5(KEY.$arr['webpass'])); 109 | } 110 | $sql = arr_sql('Set','update',$arr); 111 | $arr['id'] = 1; 112 | $b = $db->runsql($sql,$arr); 113 | logmsg($b); 114 | break; 115 | 116 | case 'savewid': 117 | chkadm(); 118 | $arr = $_POST; 119 | if($id >0){ 120 | $arr['id'] = $id; 121 | $b = $db->runsql("update `Wid` set title=:title,html=:html,ord=:ord where id=:id",$arr); 122 | }else{ 123 | $b = $db->runsql("insert into `Wid`(title,html,ord)values(:title,:html,:ord)",$arr); 124 | } 125 | logmsg($b); 126 | break; 127 | 128 | case 'delwid': 129 | chkadm(); 130 | //if($id>4){ 131 | $b = $db->runsql("delete from `Wid` where id=:id",array('id'=>$id)); 132 | logmsg(1); 133 | //}else{ 134 | //logmsg(0,'系统侧栏不能删除!'); 135 | //} 136 | break; 137 | 138 | case 'delpic': 139 | chkadm(); 140 | $pic = $_POST['pic']; 141 | delpic($pic); 142 | break; 143 | 144 | case 'thum': 145 | chkadm(); 146 | if(!empty($d)){ 147 | if(strpos($d,'/b_')>1){ 148 | $Image = ROOT_PATH.$d; 149 | $imgInfo = @getimagesize($Image); 150 | $saveImage = str_replace('/b_','/s_',$Image); 151 | createImg($Image,$saveImage,$imgInfo,ImgW,ImgH,1); 152 | $thum = str_replace(ROOT_PATH,'',$saveImage); 153 | logmsg(1,$thum); 154 | }else{ 155 | logmsg(0,'图片地址错误!'); 156 | } 157 | }else{ 158 | logmsg(0,'图片地址错误!'); 159 | } 160 | break; 161 | 162 | case 'savelog': 163 | chkadm(); 164 | $arr = $_POST; 165 | $c = $arr['c']; 166 | $id = intval($arr['id']); 167 | unset($arr['c']); 168 | unset($arr['id']); 169 | if(empty($arr['pass'])){ 170 | if(empty($arr['sum'])){ 171 | $arr['sum'] = mb_substr(strip_tags($arr['content']),0,100,'utf-8'); 172 | if(empty($arr['sum'])){ 173 | if(strpos($arr['content'],'runsql($sql,$arr); 188 | }else{ 189 | $sql = arr_sql('Log','update',$arr); 190 | $arr['id'] = $id; 191 | $b = $db->runsql($sql,$arr); 192 | if($b==1) { 193 | $db->runsql("update `Pl` set `hide`=:hide where `cid`=:cid",array("hide"=>$arr['hide'],"cid"=>$id)); 194 | $b=$arr['id']; 195 | } 196 | } 197 | logmsg($b); 198 | break; 199 | 200 | case 'zdlog': 201 | chkadm(); 202 | $arr['id'] = $id; 203 | $arr['ist'] = intval($d); 204 | $b = $db->runsql("update `Log` set ist=:ist where id=:id",$arr); 205 | $msg = $d==0?'置顶':'取消'; 206 | logmsg($b,$msg); 207 | break; 208 | case 'upcache': 209 | chkadm(); 210 | unset($_SESSION[KEY.'set']); 211 | unset($_SESSION[KEY.'hooks']); 212 | $db->runsql("VACUUM"); 213 | logmsg(1,'更新完成,请刷新页面!'); 214 | break; 215 | case 'aplug': 216 | chkadm(); 217 | $f = 'plug/'.str_replace('..','',$d); 218 | if(is_file($f)) { 219 | require_once $f; 220 | $func = str_replace('.php','',$d).'_init'; 221 | if(function_exists($func)){ 222 | $init = $func(); 223 | $arr['init'] = serialize($init); 224 | if(empty($init['error'])){ 225 | $arr['title'] = $init['title']; 226 | $arr['hook'] = $init['func']; 227 | $sql = arr_sql('Plug','insert',$arr); 228 | $b = $db->runsql($sql,$arr); 229 | unset($_SESSION[KEY.'hooks']); 230 | logmsg($b); 231 | }else{ 232 | logmsg(0,$init['error']); 233 | } 234 | } 235 | } 236 | else{ 237 | logmsg(0,'安装失败!'); 238 | } 239 | break; 240 | case 'eplug': 241 | chkadm(); 242 | $app_hooks = get_hooks(); 243 | $cfg = $app_hooks[$id]['cfg']; 244 | $str = '
'; 245 | $i = 0; 246 | foreach($cfg as $k=>$v){ 247 | $str .= '
'.$v.':
'; 248 | $i++; 249 | } 250 | $str .= '
'; 251 | logmsg(1,$str); 252 | break; 253 | case 'splug': 254 | chkadm(); 255 | $arr['id'] = $id; 256 | $args = $_POST['args']; 257 | foreach($args as $v){ 258 | if(empty($v)){ 259 | logmsg(0,'请输入完整后提交'); 260 | } 261 | } 262 | $arr['args'] = serialize($args); 263 | $b = $db->runsql("update `Plug` set args=:args where id=:id",$arr); 264 | unset($_SESSION[KEY.'hooks']); 265 | logmsg($b); 266 | break; 267 | case 'kgplug': 268 | chkadm(); 269 | $arr['id'] = $id; 270 | $arr['lock'] = intval($d); 271 | $b = $db->runsql("update `Plug` set lock=:lock where id=:id",$arr); 272 | $msg = $d==0?'开启':'关闭'; 273 | unset($_SESSION[KEY.'hooks']); 274 | logmsg($b,$msg); 275 | break; 276 | case 'dplug': 277 | chkadm(); 278 | $b = $db->runsql("delete from `Plug` where id=:id",array('id'=>$id)); 279 | unset($_SESSION[KEY.'hooks'][$id]); 280 | logmsg($b); 281 | break; 282 | default: 283 | logmsg(0); 284 | } 285 | //end switch 286 | 287 | -------------------------------------------------------------------------------- /app/class/app.php: -------------------------------------------------------------------------------- 1 | '发布','set'=>'设置','wid'=>'边栏','logout'=>'退出'); 77 | global $webmenu,$admin,$file,$widget,$set; 78 | echo $webmenu; 79 | if($admin === 0 ){ 80 | $q = $_SERVER['QUERY_STRING']; 81 | if(empty($set['lstr'])){ 82 | echo '
  • 登录
  • '; 83 | }else{ 84 | if($q==$set['lstr']){@header('Location:' . $file.'?act=login&l='.$q);} 85 | } 86 | }else{ 87 | foreach($menu as $k=>$v){ 88 | if ($widget=="0" && $k=='wid') continue; 89 | echo '
  • '.$v.'
  • '; 90 | } 91 | } 92 | } 93 | 94 | function _class(){ 95 | global $class; 96 | if(empty($class[0])) return ''; 97 | $i = 0; 98 | $str = ''; 99 | foreach($class as $v){ 100 | $str .= '
  • '.$v.'
  • '; 101 | $i++; 102 | } 103 | return $str; 104 | } 105 | 106 | function view_admin($id,$ist,$v=0){ 107 | global $admin,$file; 108 | $txt = $ist==1?'取消':'置顶'; 109 | $str = "{$txt} 编辑 删除"; 110 | $def = ""; 111 | if($v==0){ 112 | $def = "返回  我要评论"; 113 | }else if($v==1){ 114 | $def = "返回"; 115 | } 116 | echo $admin==1?$str:$def; 117 | } 118 | 119 | function pl_admin($id,$cid,$isn,$pmail){ 120 | global $admin; 121 | $str = "回复 删除"; 122 | if($isn==1){ 123 | $str .= " 审核"; 124 | } 125 | echo $admin==1?$str:''; 126 | } 127 | 128 | function getset(){ 129 | $db = new DbHelpClass(); 130 | if(empty($_SESSION[KEY.'set'])){ 131 | $rs = $db->getdata("select * from `Set` where id=1"); 132 | $set = $rs[0]; 133 | $_SESSION[KEY.'set'] = $set; 134 | }else{ 135 | $set = $_SESSION[KEY.'set']; 136 | } 137 | return $set; 138 | } 139 | 140 | function logmsg($b,$msg='操作成功!'){ 141 | if($b>0){ 142 | $arr['result'] = 200; 143 | $arr['message'] = $msg; 144 | }else{ 145 | $arr['result'] = 500; 146 | if(empty($msg)){ 147 | $arr['message'] = '操作失败!'; 148 | }else{ 149 | $arr['message'] = $msg; 150 | } 151 | } 152 | $arr['id'] = $b; 153 | echo json_encode($arr);exit(); 154 | } 155 | 156 | function chkadm(){ 157 | if($_SESSION[KEY.'admin']!=1){ 158 | logmsg(0,'未登录!'); 159 | exit(); 160 | } 161 | } 162 | 163 | function jsmsg($n,$m){ 164 | $arr['errno'] = $n; 165 | $arr['data'] = $m; 166 | echo json_encode($arr); 167 | } 168 | 169 | 170 | function vurl($id){ 171 | global $rewrite; 172 | $url = $rewrite?'post-'.$id.'.html':self().'?act=pl&id='.$id; 173 | return $url; 174 | } 175 | 176 | function vcls($tid){ 177 | global $rewrite; 178 | $url = $rewrite?'list-'.$tid.'.html':self().'?tid='.$tid; 179 | return $url; 180 | } 181 | 182 | function vmenu($menu){ 183 | global $rewrite; 184 | $menu = str_replace('@class',_class(),$menu); 185 | return $rewrite?str_replace(array('@index','@comment','@archives'),array('index.html','comment.html','archives.html'),$menu):str_replace(array('@index','@comment','@archives'),array(self(),self().'?act=plist',self().'?act=archives'),$menu); 186 | } 187 | 188 | function target($v,$file){ 189 | $pattern="#(http|https)://(.*\.)?.*\..*#i"; 190 | if(preg_match($pattern,$v)){ 191 | return ' target="_blank" href="'.$file.'?act=target&s='.rawurlencode($v).'"'; 192 | }else{ 193 | return ''; 194 | } 195 | } 196 | 197 | function pv($id){ 198 | if(isset($_SESSION['pv_'.$id])){ 199 | }else{ 200 | $_SESSION['pv_'.$id] = 1; 201 | $db = new DbHelpClass(); 202 | $db->runsql("update `Log` set pv=pv+1 where id=:id",array("id"=>$id)); 203 | } 204 | } 205 | 206 | function self(){ 207 | $self = $_SERVER['PHP_SELF']; 208 | $php_self=substr($self,strrpos($self,'/')+1); 209 | return $php_self; 210 | } 211 | 212 | function agent(){ 213 | if (isset($_SERVER['HTTP_USER_AGENT'])) { 214 | if (preg_match("/(ios|iPad|iPhone|iPod|Android)/i", $_SERVER['HTTP_USER_AGENT'])) { 215 | return '手机'; 216 | }elseif(preg_match("/(MicroMessenger)/i", $_SERVER['HTTP_USER_AGENT'])){ 217 | return '微信'; 218 | }else{ 219 | return '网页'; 220 | } 221 | }else{ 222 | return '网页'; 223 | } 224 | } 225 | 226 | function get_hooks(){ 227 | $db = new DbHelpClass(); 228 | if(empty($_SESSION[KEY.'hooks'])){ 229 | $rs = $db->getdata("select * from `Plug`"); 230 | foreach($rs as $v){ 231 | $arr_plug = unserialize($v['init']); 232 | $arr_plug['args'] = unserialize($v['args']); 233 | $arr_plug['lock'] = $v['lock']; 234 | $app_hooks[$v['id']] = $arr_plug; 235 | } 236 | $_SESSION[KEY.'hooks'] = $app_hooks; 237 | return $app_hooks; 238 | }else{ 239 | return $_SESSION[KEY.'hooks']; 240 | } 241 | } 242 | 243 | function run_hook($act,$arr) { 244 | $app_hooks = get_hooks(); 245 | foreach($app_hooks as $hook) { 246 | if($hook['lock']==1) continue; 247 | $arr_hook = explode(',',$hook['act']); 248 | if(in_array($act,$arr_hook)) { 249 | $file = 'plug/'.$hook['file']; 250 | if(file_exists($file)) { 251 | require_once $file; 252 | $arr['act'] = $act; 253 | $arr['args'] = $hook['args']; 254 | call_user_func($hook['func'].'_run',$arr); 255 | }else { 256 | return false; 257 | } 258 | } 259 | } 260 | } 261 | 262 | function createImg($oldImg,$newImg,$imgInfo,$maxWidth=200,$maxHeight=200,$cut=false) 263 | { 264 | $_n_w = $maxWidth; 265 | $_n_h = $maxHeight; 266 | if( $maxWidth > $imgInfo[0] || $maxHeight > $imgInfo[1] ) 267 | { 268 | $maxWidth = $imgInfo[0]; 269 | 270 | $maxHeight = $imgInfo[1]; 271 | } 272 | else 273 | { 274 | if ( $imgInfo[0] < $imgInfo[1] ) 275 | $maxWidth = ($maxHeight / $imgInfo[1]) * $imgInfo[0]; 276 | else 277 | $maxHeight = ($maxWidth / $imgInfo[0]) * $imgInfo[1]; 278 | } 279 | 280 | $cw = 0; 281 | $ch = 0; 282 | if($cut){ 283 | 284 | 285 | if ($maxWidth < $_n_w) { //如果新高度小于新容器高度 286 | $r = $_n_w / $maxWidth; //按长度求出等比例因子 287 | $maxWidth *= $r; //扩展填充后的长度 288 | $maxHeight *= $r; //扩展填充后的高度 289 | $ch = ($maxHeight - $_n_h) / 2; //求出裁剪点的高度 290 | } 291 | 292 | if ($maxHeight < $_n_h) { //如果新高度小于容器高度 293 | $r = $_n_h / $maxHeight; //按高度求出等比例因子 294 | $maxWidth *= $r; //扩展填充后的长度 295 | $maxHeight *= $r; //扩展填充后的高度 296 | $cw = ($maxWidth - $_n_w) / 2; //求出裁剪点的长度 297 | } 298 | $image_p = imagecreatetruecolor($_n_w, $_n_h); 299 | } else{ 300 | $image_p = imagecreatetruecolor($maxWidth, $maxHeight); 301 | } 302 | 303 | 304 | switch($imgInfo[2]) 305 | { 306 | case 1: 307 | $image = imagecreatefromgif($oldImg); 308 | break; 309 | case 2: 310 | $image = imagecreatefromjpeg($oldImg); 311 | break; 312 | case 3: 313 | $image = imagecreatefrompng($oldImg); 314 | break; 315 | } 316 | 317 | imagecopyresampled($image_p, $image, 0, 0, $cw , $ch , $maxWidth, $maxHeight, $imgInfo[0], $imgInfo[1]); 318 | 319 | imagejpeg($image_p, $newImg); 320 | 321 | imagedestroy($image_p); 322 | 323 | imagedestroy($image); 324 | 325 | return true; 326 | } 327 | 328 | class DbHelpClass 329 | { 330 | private $conn; 331 | private $qxId; 332 | private $ret; 333 | 334 | function __construct() 335 | { 336 | try{ 337 | $this->conn = new PDO('sqlite:'.DB); 338 | } 339 | catch(Exception $errinfo){ 340 | die ("PDO Connection faild.(可能空间不支持pdo_sqlite,详细错误信息:)".$errinfo); 341 | } 342 | 343 | } 344 | 345 | /*读取*/ 346 | function getdata($sql,$params=array()) 347 | { 348 | $bind=$this->conn->prepare($sql); 349 | $arrKeys=array_keys($params); 350 | foreach($arrKeys as $row) 351 | { 352 | if(strpos($sql,"like")>-1){ 353 | $bind->bindValue(":".$row,'%'.$params[$row].'%'); 354 | }else{ 355 | $bind->bindValue(":".$row,$params[$row]); 356 | } 357 | } 358 | $bind->execute();// or die('sql error:'.$sql); 359 | $result=$bind->fetchAll(PDO::FETCH_ASSOC); 360 | return $result; 361 | } 362 | 363 | function total($tab_name,$tj='')//求总记录数目 364 | { 365 | $bind = $this->conn->prepare('SELECT count(id) as c FROM '.$tab_name.' '.$tj); 366 | $bind->execute(); 367 | $result = $bind->fetchAll(); 368 | return $result[0]['c']; 369 | } 370 | /*添加,修改需调用此方法*/ 371 | function runsql($sql,$params=array()) 372 | { 373 | $bind=$this->conn->prepare($sql); 374 | $arrKeys=array_keys($params); 375 | foreach($arrKeys as $row) 376 | { 377 | 378 | $bind->bindValue(":".$row,$params[$row]); 379 | 380 | } 381 | $a = $bind->execute();//or die('sql error'); 382 | if(strpos($sql,"insert")>-1){ 383 | return $this->conn->lastInsertId(); 384 | }else{ 385 | return $a; 386 | } 387 | } 388 | } 389 | function arr_sql($tab,$run,$arr){ 390 | //unset($arr['id']); 391 | $k =array_keys($arr); 392 | if($run == 'insert'){ 393 | $sql = "insert into `{$tab}`(".join(',',$k).")values(:".join(',:',$k).")"; 394 | }else{ 395 | //$k =array_keys($arr); 396 | foreach($k as $v){ 397 | $s[] = $v.'=:'.$v; 398 | } 399 | $sql = "update `{$tab}` set ".join(',',$s)." where id=:id"; 400 | } 401 | return $sql; 402 | } -------------------------------------------------------------------------------- /app/class/codes.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/class/config.php: -------------------------------------------------------------------------------- 1 | 6 | * @copyright Copyright(C)2010, heyue 7 | * @link http://code.google.com/p/yunphp4sae/ 8 | * @license http://www.opensource.org/licenses/bsd-license.php New BSD License 9 | * @version YunPHP4SAE version 1.0.0 10 | * @the class is changed from CodeIgniter 11 | */ 12 | class Page { 13 | 14 | 15 | var $base_url = ''; // 最基础的url,分页函数在最后加上页码 16 | var $total_rows = ''; // 总数 17 | var $per_page = 10; // 每页显示的数量 18 | var $num_links = 2; // 显示在当前页左右的有几个,比如例子中就是2个 19 | var $cur_page = 1; // 默认当前页 20 | 21 | var $first_link = '首页'; //第一页的文字 22 | var $next_link = '>'; //下一页的文字 23 | var $prev_link = '<'; //上一页的文字 24 | var $last_link = '尾页'; //最后一页的文字 25 | 26 | var $full_tag_open = ''; //如果你想在page外面包一层div,css的标签请用这个 27 | var $full_tag_close = ''; //后标签 28 | 29 | var $first_tag_open = ''; //第一页的左边的div css 标签 30 | var $first_tag_close = ''; //第一页右边的div css 标签,下面同 31 | 32 | var $last_tag_open = ''; //最后一页 33 | var $last_tag_close = ''; 34 | 35 | var $cur_tag_open = ''; //当前页 36 | var $cur_tag_close = ''; 37 | 38 | var $next_tag_open = ''; //下一页 39 | var $next_tag_close = ''; 40 | var $prev_tag_open = ''; 41 | var $prev_tag_close = ''; 42 | 43 | var $num_tag_open = ''; //总数 44 | var $num_tag_close = ''; 45 | 46 | var $page_tab_open = ''; //其他不是当前页的页码的div css 47 | var $page_tab_close = ''; 48 | 49 | var $uri_segmentation = ''; //从配置文件中读取分隔符。本分页函数将在url最后加上页码 50 | var $page_uri = ''; //标准生成的uri 51 | 52 | var $suffix = ''; 53 | //处理url stu/list/1 /stu-list-2 54 | function create_links(){ 55 | if($this->total_rows == 0 OR $this->per_page == 0){ 56 | return ''; 57 | } 58 | $num_pages = ceil($this->total_rows / $this->per_page); 59 | if($num_pages == 1){ 60 | return ''; 61 | } 62 | 63 | $pre_page = $this->cur_page-1; 64 | $next_page = $this->cur_page +1; 65 | 66 | if($this->cur_page >=$num_pages){ 67 | $this->cur_page = $num_pages; 68 | $next_page = $num_pages; 69 | } 70 | if($this->cur_page <= 1){ 71 | $this->cur_page = 1; 72 | $pre_page = 1; 73 | } 74 | 75 | $output = ''; 76 | $output .= "$this->full_tag_open"; 77 | $output .= "{$this->first_tag_open}$this->first_link{$this->first_tag_close}"; 78 | $output .="{$this->prev_tag_open}$this->prev_link{$this->prev_tag_close}"; 79 | $show_nums = $this->num_links*2+1;// 显示页码的个数,比如前后2个,加上自己一个,共 5 个 80 | if($num_pages <= $show_nums){ 81 | for($i = 1;$i<=$num_pages;$i++){ 82 | if($i == $this->cur_page){ 83 | $output .= $this->cur_tag_open.$i.$this->cur_tag_close; 84 | }else{ 85 | $output .= "{$this->page_tab_open}$i{$this->page_tab_close}"; 86 | } 87 | } 88 | }else{ 89 | if($this->cur_page < (1+$this->num_links)){ 90 | for($i = 1;$i<=$show_nums;$i++){ 91 | if($i == $this->cur_page){ 92 | $output .= $this->cur_tag_open.$i.$this->cur_tag_close; 93 | }else{ 94 | $output .= "{$this->page_tab_open}$i{$this->page_tab_close}"; 95 | } 96 | } 97 | }else if($this->cur_page >= ($num_pages - $this->num_links)){ 98 | for($i = $num_pages - $show_nums ; $i <= $num_pages ; $i++){ 99 | if($i == $this->cur_page){ 100 | $output .= $this->cur_tag_open.$i.$this->cur_tag_close; 101 | }else{ 102 | $output .= "{$this->page_tab_open}$i{$this->page_tab_close}"; 103 | } 104 | } 105 | }else{ 106 | $start_page = $this->cur_page - $this->num_links; 107 | $end_page = $this->cur_page + $this->num_links; 108 | for($i = $start_page ; $i<=$end_page ; $i++){ 109 | if($i == $this->cur_page){ 110 | $output .= $this->cur_tag_open.$i.$this->cur_tag_close; 111 | }else{ 112 | $output .= "{$this->page_tab_open}$i{$this->page_tab_close}"; 113 | } 114 | } 115 | } 116 | } 117 | 118 | $output .="{$this->next_tag_open}$this->next_link{$this->next_tag_close}"; 119 | $output .= "{$this->last_tag_open}$this->last_link{$this->last_tag_close}"; 120 | //$output .="{$this->num_tag_open}$total_rows{$this->num_tag_close}"; 121 | $output .= $this->full_tag_close; 122 | return $output; 123 | } 124 | /** 125 | * Constructor 126 | * 127 | * @access public 128 | * @param array initialization parameters 129 | */ 130 | function __construct($params = array()) 131 | { 132 | $this->uri_segmentation = '';//Configure::getItem('uri_segmentation','config'); 133 | if (count($params) > 0) 134 | { 135 | $this->initialize($params); 136 | } 137 | } 138 | /** 139 | * 初始化分页函数 140 | * 141 | * @param unknown_type $params 142 | */ 143 | function initialize($params = array()){ 144 | if(count($params) > 0){ 145 | foreach ($params as $k => $v){ 146 | if(isset($this->$k)){ 147 | $this->$k = $v; 148 | } 149 | } 150 | } 151 | if(substr($this->base_url,-1) != $this->uri_segmentation){ 152 | $this->base_url .= $this->uri_segmentation; 153 | } 154 | } 155 | 156 | 157 | } 158 | -------------------------------------------------------------------------------- /app/class/plug/fsemmsg.php: -------------------------------------------------------------------------------- 1 | '邮箱密码','端口'); 10 | if(!function_exists("fsockopen")) { 11 | $config['error'] = "服务器不支持fsockopen!"; 12 | } 13 | return $config; 14 | } 15 | 16 | function fsemmsg_run($arr){ 17 | global $set; 18 | $arg = $arr['args']; 19 | if($arr['act']=='plsave'){ 20 | $email = $arr['pmail']; 21 | if(filter_var($email, FILTER_VALIDATE_EMAIL)==false) return 'pmail empty'; 22 | $text = '您在'.$set['webtitle'].'评论被回复
    回复内容:'.$arr['rcontent']; 23 | $title = '评论回复通知'; 24 | }else{ 25 | $email = empty($set['webmail'])?$arg[1] : $set['webmail']; 26 | $text = '评论地址:'.$set['webtitle'].'
    评论昵称:'.$arr['pname'].'
    评论内容:'.$arr['pcontent']; 27 | $title = '您的博客收到新的评论'; 28 | } 29 | send_mail($email, $title, $text ,$set['webuser'],$arg); 30 | } 31 | 32 | 33 | function send_mail($to, $subject = 'No subject', $body ,$loc='站长',$arg) { 34 | $loc_host = $loc; //发信名 35 | $smtp_host = $arg[0]; //SMTP服务器地址 36 | $smtp_acc = $arg[1]; //Smtp认证的用户名, 37 | $smtp_pass = $arg[2]; //Smtp认证的密码 38 | $smtp_port = $arg[3]; 39 | $from = $arg[1]; //发信人Email地址,你的发信信箱地址 40 | $headers = "Content-Type: text/html; charset=\"utf-8\"\r\nContent-Transfer-Encoding: base64"; 41 | $lb="\r\n"; //linebreak 42 | 43 | $hdr = explode($lb,$headers); //解析后的hdr 44 | if($body) { 45 | $bdy = preg_replace("/^\./","..",explode($lb,$body)); //解析后的Body 46 | } 47 | 48 | $smtp = array( 49 | //1、EHLO,期待返回220或者250 50 | array("EHLO ".$loc_host.$lb,"220,250","HELO error: "), 51 | //2、发送Auth Login,期待返回334 52 | array("AUTH LOGIN".$lb,"334","AUTH error:"), 53 | //3、发送经过Base64编码的用户名,期待返回334 54 | array(base64_encode($smtp_acc).$lb,"334","AUTHENTIFICATION error : "), 55 | //4、发送经过Base64编码的密码,期待返回235 56 | array(base64_encode($smtp_pass).$lb,"235","AUTHENTIFICATION error : ") 57 | ); 58 | //5、发送Mail From,期待返回250 59 | $smtp[] = array("MAIL FROM: <".$from.">".$lb,"250","MAIL FROM error: "); 60 | //6、发送Rcpt To。期待返回250 61 | $smtp[] = array("RCPT TO: <".$to.">".$lb,"250","RCPT TO error: "); 62 | //7、发送DATA,期待返回354 63 | $smtp[] = array("DATA".$lb,"354","DATA error: "); 64 | //8.0、发送From 65 | $smtp[] = array("From: ".$from.$lb,"",""); 66 | //8.2、发送To 67 | $smtp[] = array("To: ".$to.$lb,"",""); 68 | //8.1、发送标题 69 | $smtp[] = array("Subject: ".$subject.$lb,"",""); 70 | //8.3、发送其他Header内容 71 | foreach($hdr as $h) {$smtp[] = array($h.$lb,"","");} 72 | //8.4、发送一个空行,结束Header发送 73 | $smtp[] = array($lb,"",""); 74 | //8.5、发送信件主体 75 | if($bdy) {foreach($bdy as $b) {$smtp[] = array(base64_encode($b.$lb).$lb,"","");}} 76 | //9、发送“.”表示信件结束,期待返回250 77 | $smtp[] = array(".".$lb,"250","DATA(end)error: "); 78 | //10、发送Quit,退出,期待返回221 79 | $smtp[] = array("QUIT".$lb,"221","QUIT error: "); 80 | 81 | //打开smtp服务器端口 82 | //$fp = @fsockopen($smtp_host, $arg[3]); 83 | 84 | 85 | if ($smtp_port == "465") { 86 | //SSL加密通信 87 | $fp = @fsockopen('ssl://'. $smtp_host, $smtp_port); 88 | } 89 | else { 90 | //普通无加密通信 91 | $fp = @fsockopen($smtp_host, $smtp_port); 92 | } 93 | 94 | if (!$fp) echo "Error: Cannot conect to ".$smtp_host.""; 95 | while($result = @fgets($fp, 1024)){ 96 | if(substr($result,3,1) == " ") { break; } 97 | } 98 | 99 | $result_str=""; 100 | //发送smtp数组中的命令/数据 101 | foreach($smtp as $req){ 102 | //发送信息 103 | @fputs($fp, $req[0]); 104 | //如果需要接收服务器返回信息,则 105 | if($req[1]){ 106 | //接收信息 107 | while($result = @fgets($fp, 1024)){ 108 | if(substr($result,3,1) == " ") { break; } 109 | }; 110 | if (!strstr($req[1],substr($result,0,3))){ 111 | $result_str.=$req[2].$result.""; 112 | } 113 | } 114 | } 115 | //关闭连接 116 | @fclose($fp); 117 | return $result_str; 118 | } -------------------------------------------------------------------------------- /app/class/plug/wxmsg.php: -------------------------------------------------------------------------------- 1 | 'token'); 9 | return $config; 10 | } 11 | 12 | function wxmsg_run($arr){ 13 | $token = $arr['args'][0]; 14 | if(!empty($token)){ 15 | $pst['t'] = $token; 16 | $pst['n'] = $arr['pname']; 17 | $pst['p'] = $arr['pcontent']; 18 | $pst['r'] = $arr['r']; 19 | $rawData = http_build_query($pst); 20 | 21 | $ch = curl_init(); 22 | curl_setopt($ch, CURLOPT_URL, 'https://g.fpx.ink/send/'); 23 | curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 24 | curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); // 对认证证书来源的检查 25 | curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); // 从证书中检查SSL加密算法是否存在 26 | curl_setopt($ch,CURLOPT_HEADER,0); 27 | if($rawData){ 28 | curl_setopt($ch, CURLOPT_POST, 1); 29 | curl_setopt($ch, CURLOPT_POSTFIELDS, $rawData); 30 | } 31 | $output = curl_exec($ch); 32 | curl_close($ch); 33 | echo $output; 34 | } 35 | } -------------------------------------------------------------------------------- /app/class/upload.php: -------------------------------------------------------------------------------- 1 | 5242880 ) 16 | { 17 | 18 | upmsg(1,'图片不能超过5M'); 19 | } 20 | else 21 | { 22 | $imgInfo = @getimagesize($_FILES['picture']['tmp_name']); 23 | 24 | if( !$imgInfo || !in_array($imgInfo[2], array(1,2,3)) ) 25 | { 26 | upmsg(1,'您上传的不是一张有效的图片'); 27 | exit(); 28 | } 29 | switch($imgInfo[2]) 30 | { 31 | case 1: 32 | $fileType = ".gif"; 33 | break; 34 | case 2: 35 | $fileType = ".jpg"; 36 | break; 37 | case 3: 38 | $fileType = ".png"; 39 | break; 40 | } 41 | 42 | $savePath = date('Y/m'); 43 | $saveName = "_".date('His')."_".rand().$fileType; 44 | 45 | mkDirs(ROOT_PATH."assets/file/".$savePath); 46 | 47 | 48 | if($act == 'thum'){ $saveImage = ROOT_PATH."assets/file/".$savePath."/s".$saveName;}else{ 49 | $saveImage = ROOT_PATH."assets/file/".$savePath."/b".$saveName; 50 | } 51 | 52 | if( @move_uploaded_file($_FILES['picture']['tmp_name'], $saveImage) ) 53 | { 54 | if($act == 'thum'){ 55 | createImg($saveImage,$saveImage,$imgInfo,ImgW,ImgH,1); 56 | }else{ 57 | if( $imgInfo[0] > $set['width'] || $imgInfo[1] > $set['width'] ) 58 | { 59 | createImg($saveImage,$saveImage,$imgInfo,$set['width'],$set['width']); 60 | 61 | } 62 | //echo $saveImage; 63 | run_hook('upload',array('img'=>$saveImage)); 64 | } 65 | $resImage = str_replace(ROOT_PATH,'',$saveImage); 66 | upmsg(0,'',$resImage); 67 | } 68 | else 69 | { 70 | upmsg(1,'上传失败'); 71 | } 72 | 73 | } //end login else 74 | } 75 | } 76 | 77 | function upmsg($e,$m,$u=''){ 78 | $arr['error'] = $e; 79 | $arr['message'] = $m; 80 | $arr['url']=$u; 81 | echo json_encode($arr); 82 | exit(); 83 | } -------------------------------------------------------------------------------- /app/db/de2c9b0e78a8.db: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/allures/wmqbk-Php/f35bfa8767653545133db57bd3c9985f2518d3d0/app/db/de2c9b0e78a8.db -------------------------------------------------------------------------------- /assets/file/2020/02/s_171704_17358.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/allures/wmqbk-Php/f35bfa8767653545133db57bd3c9985f2518d3d0/assets/file/2020/02/s_171704_17358.jpg -------------------------------------------------------------------------------- /assets/js/admin.js: -------------------------------------------------------------------------------- 1 | var upic = '',pics='',pic_arr='',editor=''; 2 | var apic = 0; 3 | function saveset(){ 4 | var data = $("#formset")._serialize(); 5 | $.post("./app/class/ajax.php?act=saveset",data , function(data) { 6 | errmsg(data.message) 7 | }, 'json'); 8 | 9 | } 10 | function savewid(id){ 11 | var el = $("#formwid"+id+" input[name='title']") 12 | var data = $("#formwid"+id).serialize(); 13 | if(el.val()=='') { 14 | el.focus(); 15 | errmsg("标题不能为空!","#formwid"+id+" "); 16 | return false 17 | }; 18 | $.post("./app/class/ajax.php?act=savewid&id="+id,data , function(data) { 19 | errmsg(data.message,"#formwid"+id+" ") 20 | }, 'json'); 21 | 22 | } 23 | function delwid(id){ 24 | layer.open({ 25 | content: '您确定要删除吗?' 26 | ,btn: ['确定', '取消'] 27 | ,yes: function(index){ 28 | $.get("./app/class/ajax.php?act=delwid&id="+id,function(data){if(data.result=='200'){ window.location.reload();}else{myalert(data.message);}},'json'); 29 | } 30 | }); 31 | } 32 | 33 | function fplug(){ 34 | layer.open({ 35 | type: 1 36 | ,content: '
    文件名:
    ' 37 | ,anim: 'up' 38 | ,style: 'width:300px;padding:10px; border:none;' 39 | }); 40 | } 41 | function dplug(id){ 42 | layer.open({ 43 | content: '您确定要删除吗?' 44 | ,btn: ['确定', '取消'] 45 | ,yes: function(index){ 46 | $.get("./app/class/ajax.php?act=dplug&id="+id,function(data){if(data.result=='200'){ layer.close(index);$('#plug'+id).remove();}else{myalert(data.message);}},'json'); 47 | } 48 | }); 49 | } 50 | function kgplug(id){ 51 | //var that = this; 52 | // console.log(that) 53 | var kgtxt = $('#kg'+id).text(); 54 | var d = kgtxt=='开启'?1:0; 55 | $.get("./app/class/ajax.php?act=kgplug&id="+id+"&d="+d, function(data) { 56 | //layer.closeAll(); 57 | $('#kg'+id).text(data.message); 58 | mymsg(data.message+'成功'); 59 | 60 | }, 'json'); 61 | } 62 | function aplug(){ 63 | var f = $("#fplug").val(); 64 | $.get("./app/class/ajax.php?act=aplug&d="+f, function(data) { 65 | if(data.result=='200'){ 66 | window.location.reload(); 67 | }else{ 68 | myalert(data.message); 69 | } 70 | }, 'json'); 71 | } 72 | function splug(id){ 73 | var arg = $("#eplug"+id).serialize(); 74 | $.post("./app/class/ajax.php?act=splug&id="+id, arg , function(data) { 75 | layer.closeAll(); 76 | mymsg(data.message); 77 | }, 'json'); 78 | } 79 | function eplug(id){ 80 | $.get("./app/class/ajax.php?act=eplug&id="+id,function(data){ 81 | layer.open({ 82 | type: 1 83 | ,content: data.message 84 | ,anim: 'up' 85 | ,style: 'width:300px;padding:10px; border:none;' 86 | }); 87 | },'json'); 88 | 89 | } 90 | 91 | function upCache(){ 92 | $.get("./app/class/ajax.php?act=upcache",function(data){mymsg(data.message);},'json'); 93 | } 94 | 95 | function savelog() { 96 | var data = $("#post").serializeArray(); 97 | var pic = upic, 98 | pics = pic_arr.join(','), 99 | log = editor.$txt.html(); 100 | log = log.replace(/

    [
    ]*<\/p>/g,''), 101 | hide = $('#hide').prop("checked")?1:0, 102 | lock = $('#lock').prop("checked")?1:0; 103 | data.push({name: 'pic', value: upic},{name: 'pics', value:pics},{name:'content', value: log},{name:'hide', value: hide},{name:'lock', value: lock}); 104 | if(log =="" && pic =="" ){ 105 | errmsg("写点什么吧!"); 106 | $("#log").focus(); 107 | return false; 108 | } 109 | layer.open({ 110 | type: 2, 111 | shadeClose: false, 112 | content: '保存中...' 113 | }); 114 | //$("#addpost").attr("disabled",true); 115 | $.post("./app/class/ajax.php?act=savelog", $.param(data), function(data) { 116 | 117 | if (data.result == '200') { 118 | window.location.href = 'index.php?act=pl&id='+data.id; 119 | }else{ 120 | errmsg(data.message); 121 | layer.closeAll(); 122 | } 123 | }, 'json'); 124 | } 125 | 126 | function dellog(id,v){ 127 | layer.open({ 128 | content: '您确定要删除吗?' 129 | ,btn: ['确定', '取消'] 130 | ,yes: function(index){ 131 | $.get("./app/class/ajax.php?act=dellog&id="+id,function(data){if(data.result=='200'){ layer.close(index);if(v=='1'){location.href="./";}else{$("#log-"+id).fadeOut();} }else{myalert(data.message);}},'json'); 132 | } 133 | }); 134 | } 135 | function delpl(id,pid){ 136 | layer.open({ 137 | content: '您确定要删除吗?' 138 | ,btn: ['确定', '取消'] 139 | ,yes: function(index){ 140 | $.get("./app/class/ajax.php?act=delpl&id="+id+"&cid="+pid,function(data){if(data.result=='200'){layer.close(index);$("#Com-"+id).fadeOut();}else{myalert(data.message);}},'json'); 141 | } 142 | }); 143 | } 144 | function shpl(id){ 145 | $.get("./app/class/ajax.php?act=shpl&id="+id,function(data){if(data.result=='200'){$("#sh-"+id).fadeOut();}else{myalert(data.message);}},'json'); 146 | } 147 | function zdlog(id){ 148 | var zdobj=$("#zd-"+id); 149 | var xval=0; 150 | if(zdobj.text()=='置顶'){xval=1}; 151 | $.get("./app/class/ajax.php?act=zdlog&id="+id+"&d="+xval,function(data){if(data.result=='200'){zdobj.text(data.message);}else{myalert(data.message);}},'json'); 152 | } 153 | 154 | function showImg(input) { 155 | var fd = new FormData(); 156 | fd.append("picture",input.files[0]); 157 | $.ajax({ 158 | url: 'app/class/upload.php?act=thum', 159 | type: 'post', 160 | dataType:'json', 161 | processData: false, 162 | contentType: false, 163 | data: fd, 164 | success: function (ret) { 165 | delpic($("#pic")); 166 | upic = ret.url; 167 | apic++; 168 | console.log(upic); 169 | $("#pic").attr("src",upic).show(); 170 | $('#delpic').show(); 171 | } 172 | }) 173 | } 174 | 175 | function delpic(e){ 176 | var p = e.attr('src'); 177 | $.post("app/class/ajax.php?act=delpic", {pic: p}, function(ret){}, 'json'); 178 | } 179 | 180 | function getUrlParam(name) 181 | { 182 | var reg = new RegExp("(^|&)"+ name +"=([^&]*)(&|$)"); 183 | var r = window.location.search.substr(1).match(reg); 184 | if (r!=null) return unescape(r[2]); return null; 185 | } 186 | 187 | function tab(act){ 188 | var num = sessionStorage.getItem("tabLiNum")||0; 189 | if(act=='wid') num = 0; 190 | $('.tabtitle li').eq(num).addClass('on'); 191 | $('.tabcontent').eq(num).show().siblings('.tabcontent').hide(); 192 | $('.tabtitle li').click(function () { 193 | var index = $(this).index(); 194 | $(this).addClass('on').siblings('li').removeClass('on'); 195 | $('.tabcontent').eq(index).show().siblings('.tabcontent').hide(); 196 | if(act=='set') sessionStorage.setItem("tabLiNum",index); 197 | }) 198 | } 199 | 200 | $(document).ready(function() { 201 | var act = getUrlParam('act'); 202 | if (act == 'set' || act == 'wid') { 203 | tab(act); 204 | } else if (act == 'add' || act == 'edit') { 205 | if (act == 'edit') laydate.render({ 206 | elem: '#atime', 207 | type: 'datetime' 208 | }); 209 | 210 | pics = $('#post').data("pics"); 211 | pic_arr = pics == '' ? [] : pics.split(','); 212 | upic = $('#post').data("pic"); 213 | if (upic != '') { 214 | $("#pic").attr("src", upic).show();$('#delpic').show() 215 | } 216 | editor = new wangEditor('log'); 217 | editor.config.menuFixed = false; 218 | editor.config.menus = ['source', 'bold', 'strikethrough', 'eraser', 'forecolor', 'quote', 'alignleft', 'aligncenter', 'alignright', 'link', 'unlink', 'img', 'video', 'insertcode', ]; 219 | editor.config.uploadImgUrl = 'app/class/upload.php'; 220 | editor.config.uploadImgFileName = 'picture'; 221 | editor.config.uploadImgFns.onload = function(resultText, xhr) { 222 | var obj = JSON.parse(resultText); 223 | if (obj.error == 0) { 224 | pic_arr.push(obj.url); 225 | if (upic == '' && apic == 0) { 226 | $.get("./app/class/ajax.php?act=thum&d=" + obj.url, 227 | function(data) { 228 | if (data.result == '200') { 229 | upic = data.message; 230 | $("#pic").attr("src", upic).show(); 231 | $('#delpic').show(); 232 | } else { 233 | myalert(data.message); 234 | } 235 | }, 236 | 'json'); 237 | } 238 | apic++; 239 | editor.command(null, 'insertHtml', ''); 240 | } else { 241 | myalert(obj.message); 242 | } 243 | }; 244 | editor.create(); 245 | $('#delpic').on('click', 246 | function() { 247 | delpic($("#pic")); 248 | upic = ''; 249 | $("#pic").attr("src", '').hide(); 250 | $('#delpic').hide() 251 | }) 252 | } 253 | }) -------------------------------------------------------------------------------- /assets/js/ajax.js: -------------------------------------------------------------------------------- 1 | $.fn._serialize = function () { 2 | var da = this.serializeArray(); 3 | var $elrc = $('input[type=checkbox]', this); 4 | $.each($elrc, function() { 5 | if ($("input[name='" + this.name + "']:checked").length == 0) { 6 | da.push({name: this.name, value:0}); 7 | } 8 | }); 9 | return jQuery.param(da); 10 | } 11 | 12 | function ckradd(e,f){ 13 | var val=$("#"+e+"pcontent").val(); 14 | var url=$("#"+e+"purl").val(); 15 | var mail=$("#"+e+"pmail").val(); 16 | var url_reg = /http(s)?:\/\/([\w-]+\.)+[\w-]+(\/[\w- .\/?%&=]*)?/; 17 | var mail_reg = /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/ 18 | if(val.length<5 || val.length>200){ 19 | errmsg("评论内容必须在5-200字之间!"); 20 | $("#"+e+"pcontent").focus(); 21 | return false; 22 | } 23 | if(mail.length>0){ 24 | if(!mail_reg.test(mail)){ 25 | errmsg("请正确输入邮箱!"); 26 | return false; 27 | } 28 | } 29 | if(url.length>0){ 30 | if(!url_reg.test(url)){ 31 | errmsg("请正确输入网址!"); 32 | return false; 33 | } 34 | } 35 | var code=$("#pcode").val(); 36 | if (f=='1'&&code==''){ 37 | errmsg("请正确输入右侧答案!");$("#pcode").focus();return false; 38 | } 39 | return true 40 | } 41 | 42 | function errmsg(s,el){ 43 | if(!arguments[1]) el = ""; 44 | $(el+'#errmsg').show().text(s).fadeOut(2000); 45 | } 46 | function myalert(str){ 47 | layer.open({ 48 | content: str 49 | ,btn: '确定' 50 | }); 51 | } 52 | function mymsg(str){ 53 | layer.open({ 54 | content: str 55 | ,skin: 'msg' 56 | ,time: 2 //2秒后自动关闭 57 | }); 58 | } 59 | 60 | function StopButton(id,s){ 61 | $("#"+id).attr("disabled",true);  62 | $("#"+id).text("提交("+s+")"); 63 | if(--s>0){ 64 | setTimeout("StopButton('"+id+"',"+s+")",1000); 65 | } 66 | if(s<=0){ 67 | $("#"+id).text(' 提 交 '); 68 | $("#"+id).removeAttr("disabled"); 69 | } 70 | } 71 | function addpl(id,f){ 72 | var ck = ckradd('',f); 73 | if (ck ===false) 74 | { 75 | return ck; 76 | } 77 | //var npname = $("#pname").val(),npurl = $("#purl").val(),nplog = $("#plog").val(),pmail = $("#pmail").val(),nscode=$("#pcode").val(); 78 | var pldata = $("#formpl").serialize(); 79 | //console.log(pldata); 80 | StopButton('add',9); 81 | $.post("./app/class/ajax.php?act=addpl&id="+id, pldata , function(data) { 82 | if(data.result == '200') 83 | { 84 | pldata += "&r="+encodeURIComponent(window.location.href); 85 | $.post("./app/class/ajax.php?act=pltz&d=addpl&id="+id,pldata); 86 | $(".comment_list").append(data.message);$("#pcontent").val('');$("#pcode").val('');reloadcode(); 87 | errmsg(''); 88 | }else{ 89 | errmsg(data.message);$("#pcode").val('');reloadcode();$("#pcode").focus(); 90 | } 91 | },'json'); 92 | } 93 | function repl(pid,cid,pmail){ 94 | var ore = $('#Ctext-'+pid).find('.re span').text(); 95 | var x = 1; 96 | if (ore == ""){x=0;} 97 | var rebox = '

    '; 98 | $('.rebox').remove(); 99 | $('#Ctext-'+pid).append(rebox); 100 | } 101 | function capl(){ 102 | $('.rebox').remove(); 103 | } 104 | function plsave(id,pid,x,pmail){ 105 | var rlog = $("#rlog").val(); 106 | if(rlog==''){ 107 | $("#rlog").focus(); 108 | return false; 109 | } 110 | $.post("./app/class/ajax.php?act=plsave&id=" + pid + "&cid=" + id, { 111 | rcontent: rlog 112 | }, function(data) { 113 | capl(); 114 | if (data.result == '200') { 115 | if(x==1){ 116 | $('#Ctext-'+pid).find('.re span').text(rlog); 117 | }else{ 118 | $('#Ctext-'+pid).append('

      回复'+rlog+'

    '); 119 | } 120 | $.post("./app/class/ajax.php?act=pltz&d=plsave&id="+pid,{rcontent:rlog,pmail:pmail,r:window.location.href}); 121 | } else { 122 | myalert(data.message); 123 | } 124 | }, 'json');} 125 | 126 | function ckpass(id){ 127 | var ps= $("#password").val(); 128 | if (ps!=''){ 129 | $.post("./app/class/ajax.php?act=ckpass&id="+id, {ps:ps}, function(data) {if(data.result=='200'){ $("#article .text").html(data.message)}else{myalert(data.message);}},'json');}else{ 130 | $("#password").focus(); 131 | } 132 | } 133 | 134 | function DotRoll(elm) { 135 | $("body,html").animate({ scrollTop: $(elm).offset().top }, 500); 136 | } 137 | 138 | function reloadcode(){$('#codeimg').attr('src','./app/class/codes.php?t='+Math.random());} 139 | 140 | $(document).ready(function () { 141 | 142 | $('.textPost').on("click",function(e){ 143 | window.location.href = $(this).data('url'); 144 | }); 145 | 146 | $('#menu_toggle').on("click",function(e){ 147 | e.preventDefault(); 148 | $('#menu').toggleClass('close'); 149 | $('.collapse').slideToggle(); 150 | }); 151 | 152 | $('#pcontent').on("focus",function(e){ 153 | $('#pl_other').fadeIn(); 154 | }); 155 | 156 | /*$(window).resize(function(){ 157 | var w = $(window).width(); 158 | if(w>650) {$('#nav').show();}else{ 159 | $('#menu').removeClass('close'); 160 | $('.collapse').hide(); 161 | } 162 | }); 163 | */ 164 | var url = String(window.location); 165 | var last = url.charAt(url.length - 1); 166 | $("#nav li a").each(function(e){ 167 | if(last=='/'){ 168 | $(this).addClass("on"); 169 | return false; 170 | } 171 | else if(url==$(this)[0].href){ 172 | $(this).addClass("on"); 173 | return false; 174 | } 175 | 176 | }); 177 | }) -------------------------------------------------------------------------------- /assets/js/highlightjs/dark.css: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Dark style from softwaremaniacs.org (c) Ivan Sagalaev 4 | 5 | */ 6 | 7 | .hljs { 8 | display: block; 9 | white-space: pre-wrap; 10 | word-wrap: break-word; 11 | padding: 0.5em; 12 | background: #444; 13 | -webkit-text-size-adjust: none; 14 | } 15 | 16 | .hljs-keyword, 17 | .hljs-literal, 18 | .hljs-change, 19 | .hljs-winutils, 20 | .hljs-flow, 21 | .nginx .hljs-title, 22 | .tex .hljs-special { 23 | color: white; 24 | } 25 | 26 | .hljs, 27 | .hljs-subst { 28 | color: #ddd; 29 | } 30 | 31 | .hljs-string, 32 | .hljs-title, 33 | .hljs-type, 34 | .ini .hljs-title, 35 | .hljs-tag .hljs-value, 36 | .css .hljs-rule .hljs-value, 37 | .hljs-preprocessor, 38 | .hljs-pragma, 39 | .ruby .hljs-symbol, 40 | .ruby .hljs-symbol .hljs-string, 41 | .ruby .hljs-class .hljs-parent, 42 | .hljs-built_in, 43 | .django .hljs-template_tag, 44 | .django .hljs-variable, 45 | .smalltalk .hljs-class, 46 | .ruby .hljs-string, 47 | .django .hljs-filter .hljs-argument, 48 | .smalltalk .hljs-localvars, 49 | .smalltalk .hljs-array, 50 | .hljs-attr_selector, 51 | .hljs-pseudo, 52 | .hljs-addition, 53 | .hljs-stream, 54 | .hljs-envvar, 55 | .apache .hljs-tag, 56 | .apache .hljs-cbracket, 57 | .tex .hljs-command, 58 | .hljs-prompt, 59 | .coffeescript .hljs-attribute, 60 | .hljs-name { 61 | color: #d88; 62 | } 63 | 64 | .hljs-comment, 65 | .hljs-annotation, 66 | .hljs-decorator, 67 | .hljs-pi, 68 | .hljs-doctype, 69 | .hljs-deletion, 70 | .hljs-shebang, 71 | .apache .hljs-sqbracket, 72 | .tex .hljs-formula { 73 | color: #777; 74 | } 75 | 76 | .hljs-keyword, 77 | .hljs-literal, 78 | .hljs-title, 79 | .css .hljs-id, 80 | .hljs-doctag, 81 | .hljs-type, 82 | .vbscript .hljs-built_in, 83 | .rsl .hljs-built_in, 84 | .smalltalk .hljs-class, 85 | .diff .hljs-header, 86 | .hljs-chunk, 87 | .hljs-winutils, 88 | .bash .hljs-variable, 89 | .apache .hljs-tag, 90 | .tex .hljs-special, 91 | .hljs-request, 92 | .hljs-status { 93 | font-weight: bold; 94 | } 95 | 96 | .coffeescript .javascript, 97 | .javascript .xml, 98 | .tex .hljs-formula, 99 | .xml .javascript, 100 | .xml .vbscript, 101 | .xml .css, 102 | .xml .hljs-cdata { 103 | opacity: 0.5; 104 | } 105 | -------------------------------------------------------------------------------- /assets/js/laydate/laydate.js: -------------------------------------------------------------------------------- 1 | /*! laydate-v5.0.9 日期与时间组件 MIT License http://www.layui.com/laydate/ By 贤心 */ 2 | ;!function(){"use strict";var e=window.layui&&layui.define,t={getPath:function(){var e=document.currentScript?document.currentScript.src:function(){for(var e,t=document.scripts,n=t.length-1,a=n;a>0;a--)if("interactive"===t[a].readyState){e=t[a].src;break}return e||t[n].src}();return e.substring(0,e.lastIndexOf("/")+1)}(),getStyle:function(e,t){var n=e.currentStyle?e.currentStyle:window.getComputedStyle(e,null);return n[n.getPropertyValue?"getPropertyValue":"getAttribute"](t)},link:function(e,a,i){if(n.path){var r=document.getElementsByTagName("head")[0],o=document.createElement("link");"string"==typeof a&&(i=a);var s=(i||e).replace(/\.|\//g,""),l="layuicss-"+s,d=0;o.rel="stylesheet",o.href=n.path+e,o.id=l,document.getElementById(l)||r.appendChild(o),"function"==typeof a&&!function c(){return++d>80?window.console&&console.error("laydate.css: Invalid"):void(1989===parseInt(t.getStyle(document.getElementById(l),"width"))?a():setTimeout(c,100))}()}}},n={v:"5.0.9",config:{},index:window.laydate&&window.laydate.v?1e5:0,path:t.getPath,set:function(e){var t=this;return t.config=w.extend({},t.config,e),t},ready:function(a){var i="laydate",r="",o=(e?"modules/laydate/":"theme/")+"default/laydate.css?v="+n.v+r;return e?layui.addcss(o,a,i):t.link(o,a,i),this}},a=function(){var e=this;return{hint:function(t){e.hint.call(e,t)},config:e.config}},i="laydate",r=".layui-laydate",o="layui-this",s="laydate-disabled",l="开始日期超出了结束日期
    建议重新选择",d=[100,2e5],c="layui-laydate-static",m="layui-laydate-list",u="laydate-selected",h="layui-laydate-hint",y="laydate-day-prev",f="laydate-day-next",p="layui-laydate-footer",g=".laydate-btns-confirm",v="laydate-time-text",D=".laydate-btns-time",T=function(e){var t=this;t.index=++n.index,t.config=w.extend({},t.config,n.config,e),n.ready(function(){t.init()})},w=function(e){return new C(e)},C=function(e){for(var t=0,n="object"==typeof e?[e]:(this.selector=e,document.querySelectorAll(e||null));t0)return n[0].getAttribute(e)}():n.each(function(n,a){a.setAttribute(e,t)})},C.prototype.removeAttr=function(e){return this.each(function(t,n){n.removeAttribute(e)})},C.prototype.html=function(e){return this.each(function(t,n){n.innerHTML=e})},C.prototype.val=function(e){return this.each(function(t,n){n.value=e})},C.prototype.append=function(e){return this.each(function(t,n){"object"==typeof e?n.appendChild(e):n.innerHTML=n.innerHTML+e})},C.prototype.remove=function(e){return this.each(function(t,n){e?n.removeChild(e):n.parentNode.removeChild(n)})},C.prototype.on=function(e,t){return this.each(function(n,a){a.attachEvent?a.attachEvent("on"+e,function(e){e.target=e.srcElement,t.call(a,e)}):a.addEventListener(e,t,!1)})},C.prototype.off=function(e,t){return this.each(function(n,a){a.detachEvent?a.detachEvent("on"+e,t):a.removeEventListener(e,t,!1)})},T.isLeapYear=function(e){return e%4===0&&e%100!==0||e%400===0},T.prototype.config={type:"date",range:!1,format:"yyyy-MM-dd",value:null,min:"1900-1-1",max:"2099-12-31",trigger:"focus",show:!1,showBottom:!0,btns:["clear","now","confirm"],lang:"cn",theme:"default",position:null,calendar:!1,mark:{},zIndex:null,done:null,change:null},T.prototype.lang=function(){var e=this,t=e.config,n={cn:{weeks:["日","一","二","三","四","五","六"],time:["时","分","秒"],timeTips:"选择时间",startTime:"开始时间",endTime:"结束时间",dateTips:"返回日期",month:["一","二","三","四","五","六","七","八","九","十","十一","十二"],tools:{confirm:"确定",clear:"清空",now:"现在"}},en:{weeks:["Su","Mo","Tu","We","Th","Fr","Sa"],time:["Hours","Minutes","Seconds"],timeTips:"Select Time",startTime:"Start Time",endTime:"End Time",dateTips:"Select Date",month:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],tools:{confirm:"Confirm",clear:"Clear",now:"Now"}}};return n[t.lang]||n.cn},T.prototype.init=function(){var e=this,t=e.config,n="yyyy|y|MM|M|dd|d|HH|H|mm|m|ss|s",a="static"===t.position,i={year:"yyyy",month:"yyyy-MM",date:"yyyy-MM-dd",time:"HH:mm:ss",datetime:"yyyy-MM-dd HH:mm:ss"};t.elem=w(t.elem),t.eventElem=w(t.eventElem),t.elem[0]&&(t.range===!0&&(t.range="-"),t.format===i.date&&(t.format=i[t.type]),e.format=t.format.match(new RegExp(n+"|.","g"))||[],e.EXP_IF="",e.EXP_SPLIT="",w.each(e.format,function(t,a){var i=new RegExp(n).test(a)?"\\d{"+function(){return new RegExp(n).test(e.format[0===t?t+1:t-1]||"")?/^yyyy|y$/.test(a)?4:a.length:/^yyyy$/.test(a)?"1,4":/^y$/.test(a)?"1,308":"1,2"}()+"}":"\\"+a;e.EXP_IF=e.EXP_IF+i,e.EXP_SPLIT=e.EXP_SPLIT+"("+i+")"}),e.EXP_IF=new RegExp("^"+(t.range?e.EXP_IF+"\\s\\"+t.range+"\\s"+e.EXP_IF:e.EXP_IF)+"$"),e.EXP_SPLIT=new RegExp("^"+e.EXP_SPLIT+"$",""),e.isInput(t.elem[0])||"focus"===t.trigger&&(t.trigger="click"),t.elem.attr("lay-key")||(t.elem.attr("lay-key",e.index),t.eventElem.attr("lay-key",e.index)),t.mark=w.extend({},t.calendar&&"cn"===t.lang?{"0-1-1":"元旦","0-2-14":"情人","0-3-8":"妇女","0-3-12":"植树","0-4-1":"愚人","0-5-1":"劳动","0-5-4":"青年","0-6-1":"儿童","0-9-10":"教师","0-9-18":"国耻","0-10-1":"国庆","0-12-25":"圣诞"}:{},t.mark),w.each(["min","max"],function(e,n){var a=[],i=[];if("number"==typeof t[n]){var r=t[n],o=(new Date).getTime(),s=864e5,l=new Date(r?r0)return!0;var a=w.elem("div",{"class":"layui-laydate-header"}),i=[function(){var e=w.elem("i",{"class":"layui-icon laydate-icon laydate-prev-y"});return e.innerHTML="",e}(),function(){var e=w.elem("i",{"class":"layui-icon laydate-icon laydate-prev-m"});return e.innerHTML="",e}(),function(){var e=w.elem("div",{"class":"laydate-set-ym"}),t=w.elem("span"),n=w.elem("span");return e.appendChild(t),e.appendChild(n),e}(),function(){var e=w.elem("i",{"class":"layui-icon laydate-icon laydate-next-m"});return e.innerHTML="",e}(),function(){var e=w.elem("i",{"class":"layui-icon laydate-icon laydate-next-y"});return e.innerHTML="",e}()],d=w.elem("div",{"class":"layui-laydate-content"}),c=w.elem("table"),m=w.elem("thead"),u=w.elem("tr");w.each(i,function(e,t){a.appendChild(t)}),m.appendChild(u),w.each(new Array(6),function(e){var t=c.insertRow(0);w.each(new Array(7),function(a){if(0===e){var i=w.elem("th");i.innerHTML=n.weeks[a],u.appendChild(i)}t.insertCell(a)})}),c.insertBefore(m,c.children[0]),d.appendChild(c),r[e]=w.elem("div",{"class":"layui-laydate-main laydate-main-list-"+e}),r[e].appendChild(a),r[e].appendChild(d),o.push(i),s.push(d),l.push(c)}),w(d).html(function(){var e=[],i=[];return"datetime"===t.type&&e.push(''+n.timeTips+""),w.each(t.btns,function(e,r){var o=n.tools[r]||"btn";t.range&&"now"===r||(a&&"clear"===r&&(o="cn"===t.lang?"重置":"Reset"),i.push(''+o+""))}),e.push('"),e.join("")}()),w.each(r,function(e,t){i.appendChild(t)}),t.showBottom&&i.appendChild(d),/^#/.test(t.theme)){var m=w.elem("style"),u=["#{{id}} .layui-laydate-header{background-color:{{theme}};}","#{{id}} .layui-this{background-color:{{theme}} !important;}"].join("").replace(/{{id}}/g,e.elemID).replace(/{{theme}}/g,t.theme);"styleSheet"in m?(m.setAttribute("type","text/css"),m.styleSheet.cssText=u):m.innerHTML=u,w(i).addClass("laydate-theme-molv"),i.appendChild(m)}e.remove(T.thisElemDate),a?t.elem.append(i):(document.body.appendChild(i),e.position()),e.checkDate().calendar(),e.changeEvent(),T.thisElemDate=e.elemID,"function"==typeof t.ready&&t.ready(w.extend({},t.dateTime,{month:t.dateTime.month+1}))},T.prototype.remove=function(e){var t=this,n=(t.config,w("#"+(e||t.elemID)));return n.hasClass(c)||t.checkDate(function(){n.remove()}),t},T.prototype.position=function(){var e=this,t=e.config,n=e.bindElem||t.elem[0],a=n.getBoundingClientRect(),i=e.elem.offsetWidth,r=e.elem.offsetHeight,o=function(e){return e=e?"scrollLeft":"scrollTop",document.body[e]|document.documentElement[e]},s=function(e){return document.documentElement[e?"clientWidth":"clientHeight"]},l=5,d=a.left,c=a.bottom;d+i+l>s("width")&&(d=s("width")-i-l),c+r+l>s()&&(c=a.top>r?a.top-r:s()-r,c-=2*l),t.position&&(e.elem.style.position=t.position),e.elem.style.left=d+("fixed"===t.position?0:o(1))+"px",e.elem.style.top=c+("fixed"===t.position?0:o())+"px"},T.prototype.hint=function(e){var t=this,n=(t.config,w.elem("div",{"class":h}));n.innerHTML=e||"",w(t.elem).find("."+h).remove(),t.elem.appendChild(n),clearTimeout(t.hinTimer),t.hinTimer=setTimeout(function(){w(t.elem).find("."+h).remove()},3e3)},T.prototype.getAsYM=function(e,t,n){return n?t--:t++,t<0&&(t=11,e--),t>11&&(t=0,e++),[e,t]},T.prototype.systemDate=function(e){var t=e||new Date;return{year:t.getFullYear(),month:t.getMonth(),date:t.getDate(),hours:e?e.getHours():0,minutes:e?e.getMinutes():0,seconds:e?e.getSeconds():0}},T.prototype.checkDate=function(e){var t,a,i=this,r=(new Date,i.config),o=r.dateTime=r.dateTime||i.systemDate(),s=i.bindElem||r.elem[0],l=(i.isInput(s)?"val":"html",i.isInput(s)?s.value:"static"===r.position?"":s.innerHTML),c=function(e){e.year>d[1]&&(e.year=d[1],a=!0),e.month>11&&(e.month=11,a=!0),e.hours>23&&(e.hours=0,a=!0),e.minutes>59&&(e.minutes=0,e.hours++,a=!0),e.seconds>59&&(e.seconds=0,e.minutes++,a=!0),t=n.getEndDate(e.month+1,e.year),e.date>t&&(e.date=t,a=!0)},m=function(e,t,n){var o=["startTime","endTime"];t=(t.match(i.EXP_SPLIT)||[]).slice(1),n=n||0,r.range&&(i[o[n]]=i[o[n]]||{}),w.each(i.format,function(s,l){var c=parseFloat(t[s]);t[s].length必须遵循下述格式:
    "+(r.range?r.format+" "+r.range+" "+r.format:r.format)+"
    已为你重置"),a=!0):l&&l.constructor===Date?r.dateTime=i.systemDate(l):(r.dateTime=i.systemDate(),delete i.startState,delete i.endState,delete i.startDate,delete i.endDate,delete i.startTime,delete i.endTime),c(o),a&&l&&i.setValue(r.range?i.endDate?i.parse():"":i.parse()),e&&e(),i)},T.prototype.mark=function(e,t){var n,a=this,i=a.config;return w.each(i.mark,function(e,a){var i=e.split("-");i[0]!=t[0]&&0!=i[0]||i[1]!=t[1]&&0!=i[1]||i[2]!=t[2]||(n=a||t[2])}),n&&e.html(''+n+""),a},T.prototype.limit=function(e,t,n,a){var i,r=this,o=r.config,l={},d=o[n>41?"endDate":"dateTime"],c=w.extend({},d,t||{});return w.each({now:c,min:o.min,max:o.max},function(e,t){l[e]=r.newDate(w.extend({year:t.year,month:t.month,date:t.date},function(){var e={};return w.each(a,function(n,a){e[a]=t[a]}),e}())).getTime()}),i=l.nowl.max,e&&e[i?"addClass":"removeClass"](s),i},T.prototype.calendar=function(e){var t,a,i,r=this,s=r.config,l=e||s.dateTime,c=new Date,m=r.lang(),u="date"!==s.type&&"datetime"!==s.type,h=e?1:0,y=w(r.table[h]).find("td"),f=w(r.elemHeader[h][2]).find("span");if(l.yeard[1]&&(l.year=d[1],r.hint("最高只能支持到公元"+d[1]+"年")),r.firstDate||(r.firstDate=w.extend({},l)),c.setFullYear(l.year,l.month,1),t=c.getDay(),a=n.getEndDate(l.month||12,l.year),i=n.getEndDate(l.month+1,l.year),w.each(y,function(e,n){var d=[l.year,l.month],c=0;n=w(n),n.removeAttr("class"),e=t&&e=n.firstDate.year&&(r.month=a.max.month,r.date=a.max.date),n.limit(w(i),r,t),M++}),w(u[f?0:1]).attr("lay-ym",M-8+"-"+T[1]).html(b+p+" - "+(M-1+p))}else if("month"===e)w.each(new Array(12),function(e){var i=w.elem("li",{"lay-ym":e}),s={year:T[0],month:e};e+1==T[1]&&w(i).addClass(o),i.innerHTML=r.month[e]+(f?"月":""),d.appendChild(i),T[0]=n.firstDate.year&&(s.date=a.max.date),n.limit(w(i),s,t)}),w(u[f?0:1]).attr("lay-ym",T[0]+"-"+T[1]).html(T[0]+p);else if("time"===e){var E=function(){w(d).find("ol").each(function(e,a){w(a).find("li").each(function(a,i){n.limit(w(i),[{hours:a},{hours:n[x].hours,minutes:a},{hours:n[x].hours,minutes:n[x].minutes,seconds:a}][e],t,[["hours"],["hours","minutes"],["hours","minutes","seconds"]][e])})}),a.range||n.limit(w(n.footer).find(g),n[x],0,["hours","minutes","seconds"])};a.range?n[x]||(n[x]={hours:0,minutes:0,seconds:0}):n[x]=i,w.each([24,60,60],function(e,t){var a=w.elem("li"),i=["

    "+r.time[e]+"

      "];w.each(new Array(t),function(t){i.push(""+w.digit(t,2)+"")}),a.innerHTML=i.join("")+"
    ",d.appendChild(a)}),E()}if(y&&h.removeChild(y),h.appendChild(d),"year"===e||"month"===e)w(n.elemMain[t]).addClass("laydate-ym-show"),w(d).find("li").on("click",function(){var r=0|w(this).attr("lay-ym");if(!w(this).hasClass(s)){if(0===t)i[e]=r,l&&(n.startDate[e]=r),n.limit(w(n.footer).find(g),null,0);else if(l)n.endDate[e]=r;else{var c="year"===e?n.getAsYM(r,T[1]-1,"sub"):n.getAsYM(T[0],r,"sub");w.extend(i,{year:c[0],month:c[1]})}"year"===a.type||"month"===a.type?(w(d).find("."+o).removeClass(o),w(this).addClass(o),"month"===a.type&&"year"===e&&(n.listYM[t][0]=r,l&&(n[["startDate","endDate"][t]].year=r),n.list("month",t))):(n.checkDate("limit").calendar(),n.closeList()),n.setBtnStatus(),a.range||n.done(null,"change"),w(n.footer).find(D).removeClass(s)}});else{var S=w.elem("span",{"class":v}),k=function(){w(d).find("ol").each(function(e){var t=this,a=w(t).find("li");t.scrollTop=30*(n[x][C[e]]-2),t.scrollTop<=0&&a.each(function(e,n){if(!w(this).hasClass(s))return t.scrollTop=30*(e-2),!0})})},H=w(c[2]).find("."+v);k(),S.innerHTML=a.range?[r.startTime,r.endTime][t]:r.timeTips,w(n.elemMain[t]).addClass("laydate-time-show"),H[0]&&H.remove(),c[2].appendChild(S),w(d).find("ol").each(function(e){var t=this;w(t).find("li").on("click",function(){var r=0|this.innerHTML;w(this).hasClass(s)||(a.range?n[x][C[e]]=r:i[C[e]]=r,w(t).find("."+o).removeClass(o),w(this).addClass(o),E(),k(),(n.endDate||"time"===a.type)&&n.done(null,"change"),n.setBtnStatus())})})}return n},T.prototype.listYM=[],T.prototype.closeList=function(){var e=this;e.config;w.each(e.elemCont,function(t,n){w(this).find("."+m).remove(),w(e.elemMain[t]).removeClass("laydate-ym-show laydate-time-show")}),w(e.elem).find("."+v).remove()},T.prototype.setBtnStatus=function(e,t,n){var a,i=this,r=i.config,o=w(i.footer).find(g),d=r.range&&"date"!==r.type&&"time"!==r.type;d&&(t=t||i.startDate,n=n||i.endDate,a=i.newDate(t).getTime()>i.newDate(n).getTime(),i.limit(null,t)||i.limit(null,n)?o.addClass(s):o[a?"addClass":"removeClass"](s),e&&a&&i.hint("string"==typeof e?l.replace(/日期/g,e):l))},T.prototype.parse=function(e,t){var n=this,a=n.config,i=t||(e?w.extend({},n.endDate,n.endTime):a.range?w.extend({},n.startDate,n.startTime):a.dateTime),r=n.format.concat();return w.each(r,function(e,t){/yyyy|y/.test(t)?r[e]=w.digit(i.year,t.length):/MM|M/.test(t)?r[e]=w.digit(i.month+1,t.length):/dd|d/.test(t)?r[e]=w.digit(i.date,t.length):/HH|H/.test(t)?r[e]=w.digit(i.hours,t.length):/mm|m/.test(t)?r[e]=w.digit(i.minutes,t.length):/ss|s/.test(t)&&(r[e]=w.digit(i.seconds,t.length))}),a.range&&!e?r.join("")+" "+a.range+" "+n.parse(1):r.join("")},T.prototype.newDate=function(e){return e=e||{},new Date(e.year||1,e.month||0,e.date||1,e.hours||0,e.minutes||0,e.seconds||0)},T.prototype.setValue=function(e){var t=this,n=t.config,a=t.bindElem||n.elem[0],i=t.isInput(a)?"val":"html";return"static"===n.position||w(a)[i](e||""),this},T.prototype.stampRange=function(){var e,t,n=this,a=n.config,i=w(n.elem).find("td");if(a.range&&!n.endDate&&w(n.footer).find(g).addClass(s),n.endDate)return e=n.newDate({year:n.startDate.year,month:n.startDate.month,date:n.startDate.date}).getTime(),t=n.newDate({year:n.endDate.year,month:n.endDate.month,date:n.endDate.date}).getTime(),e>t?n.hint(l):void w.each(i,function(a,i){var r=w(i).attr("lay-ymd").split("-"),s=n.newDate({year:r[0],month:r[1]-1,date:r[2]}).getTime();w(i).removeClass(u+" "+o),s!==e&&s!==t||w(i).addClass(w(i).hasClass(y)||w(i).hasClass(f)?u:o),s>e&&s 2 | 3 | 6 | 7 | 8 | Created by iconfont 9 | 10 | 11 | 12 | 13 | 21 | 22 | 23 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | -------------------------------------------------------------------------------- /assets/js/laydate/theme/default/font/iconfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/allures/wmqbk-Php/f35bfa8767653545133db57bd3c9985f2518d3d0/assets/js/laydate/theme/default/font/iconfont.ttf -------------------------------------------------------------------------------- /assets/js/laydate/theme/default/font/iconfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/allures/wmqbk-Php/f35bfa8767653545133db57bd3c9985f2518d3d0/assets/js/laydate/theme/default/font/iconfont.woff -------------------------------------------------------------------------------- /assets/js/laydate/theme/default/laydate.css: -------------------------------------------------------------------------------- 1 | /*! laydate-v5.0.9 日期与时间组件 MIT License http://www.layui.com/laydate/ By 贤心 */ 2 | .laydate-set-ym,.layui-laydate,.layui-laydate *,.layui-laydate-list{box-sizing:border-box}html #layuicss-laydate{display:none;position:absolute;width:1989px}.layui-laydate *{margin:0;padding:0}.layui-laydate{position:absolute;z-index:66666666;margin:5px 0;border-radius:2px;font-size:14px;-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-name:laydate-upbit;animation-name:laydate-upbit}.layui-laydate-main{width:272px}.layui-laydate-content td,.layui-laydate-header *,.layui-laydate-list li{transition-duration:.3s;-webkit-transition-duration:.3s}@-webkit-keyframes laydate-upbit{from{-webkit-transform:translate3d(0,20px,0);opacity:.3}to{-webkit-transform:translate3d(0,0,0);opacity:1}}@keyframes laydate-upbit{from{transform:translate3d(0,20px,0);opacity:.3}to{transform:translate3d(0,0,0);opacity:1}}.layui-laydate-static{position:relative;z-index:0;display:inline-block;margin:0;-webkit-animation:none;animation:none}.laydate-ym-show .laydate-next-m,.laydate-ym-show .laydate-prev-m{display:none!important}.laydate-ym-show .laydate-next-y,.laydate-ym-show .laydate-prev-y{display:inline-block!important}.laydate-time-show .laydate-set-ym span[lay-type=month],.laydate-time-show .laydate-set-ym span[lay-type=year],.laydate-time-show .layui-laydate-header .layui-icon,.laydate-ym-show .laydate-set-ym span[lay-type=month]{display:none!important}.layui-laydate-header{position:relative;line-height:30px;padding:10px 70px 5px}.laydate-set-ym span,.layui-laydate-header i{padding:0 5px;cursor:pointer}.layui-laydate-header *{display:inline-block;vertical-align:bottom}.layui-laydate-header i{position:absolute;top:10px;color:#999;font-size:18px}.layui-laydate-header i.laydate-prev-y{left:15px}.layui-laydate-header i.laydate-prev-m{left:45px}.layui-laydate-header i.laydate-next-y{right:15px}.layui-laydate-header i.laydate-next-m{right:45px}.laydate-set-ym{width:100%;text-align:center;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.laydate-time-text{cursor:default!important}.layui-laydate-content{position:relative;padding:10px;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.layui-laydate-content table{border-collapse:collapse;border-spacing:0}.layui-laydate-content td,.layui-laydate-content th{width:36px;height:30px;padding:5px;text-align:center}.layui-laydate-content td{position:relative;cursor:pointer}.laydate-day-mark{position:absolute;left:0;top:0;width:100%;height:100%;line-height:30px;font-size:12px;overflow:hidden}.laydate-day-mark::after{position:absolute;content:'';right:2px;top:2px;width:5px;height:5px;border-radius:50%}.layui-laydate-footer{position:relative;height:46px;line-height:26px;padding:10px 20px}.layui-laydate-footer span{margin-right:15px;display:inline-block;cursor:pointer;font-size:12px}.layui-laydate-footer span:hover{color:#5FB878}.laydate-footer-btns{position:absolute;right:10px;top:10px}.laydate-footer-btns span{height:26px;line-height:26px;margin:0 0 0 -1px;padding:0 10px;border:1px solid #C9C9C9;background-color:#fff;white-space:nowrap;vertical-align:top;border-radius:2px}.layui-laydate-list>li,.layui-laydate-range .layui-laydate-main{display:inline-block;vertical-align:middle}.layui-laydate-list{position:absolute;left:0;top:0;width:100%;height:100%;padding:10px;background-color:#fff}.layui-laydate-list>li{position:relative;width:33.3%;height:36px;line-height:36px;margin:3px 0;text-align:center;cursor:pointer}.laydate-month-list>li{width:25%;margin:17px 0}.laydate-time-list>li{height:100%;margin:0;line-height:normal;cursor:default}.laydate-time-list p{position:relative;top:-4px;line-height:29px}.laydate-time-list ol{height:181px;overflow:hidden}.laydate-time-list>li:hover ol{overflow-y:auto}.laydate-time-list ol li{width:130%;padding-left:33px;line-height:30px;text-align:left;cursor:pointer}.layui-laydate-hint{position:absolute;top:115px;left:50%;width:250px;margin-left:-125px;line-height:20px;padding:15px;text-align:center;font-size:12px}.layui-laydate-range{width:546px}.layui-laydate-range .laydate-main-list-0 .laydate-next-m,.layui-laydate-range .laydate-main-list-0 .laydate-next-y,.layui-laydate-range .laydate-main-list-1 .laydate-prev-m,.layui-laydate-range .laydate-main-list-1 .laydate-prev-y{display:none}.layui-laydate-range .laydate-main-list-1 .layui-laydate-content{border-left:1px solid #e2e2e2}.layui-laydate,.layui-laydate-hint{border:1px solid #d2d2d2;box-shadow:0 2px 4px rgba(0,0,0,.12);background-color:#fff;color:#666}.layui-laydate-header{border-bottom:1px solid #e2e2e2}.layui-laydate-header i:hover,.layui-laydate-header span:hover{color:#5FB878}.layui-laydate-content{border-top:none 0;border-bottom:none 0}.layui-laydate-content th{font-weight:400;color:#333}.layui-laydate-content td{color:#666}.layui-laydate-content td.laydate-selected{background-color:#00F7DE}.laydate-selected:hover{background-color:#00F7DE!important}.layui-laydate-content td:hover,.layui-laydate-list li:hover{background-color:#eaeaea;color:#333}.laydate-time-list li ol{margin:0;padding:0;border:1px solid #e2e2e2;border-left-width:0}.laydate-time-list li:first-child ol{border-left-width:1px}.laydate-time-list>li:hover{background:0 0}.layui-laydate-content .laydate-day-next,.layui-laydate-content .laydate-day-prev{color:#d2d2d2}.laydate-selected.laydate-day-next,.laydate-selected.laydate-day-prev{background-color:#f8f8f8!important}.layui-laydate-footer{border-top:1px solid #e2e2e2}.layui-laydate-hint{color:#FF5722}.laydate-day-mark::after{background-color:#5FB878}.layui-laydate-content td.layui-this .laydate-day-mark::after{display:none}.layui-laydate-footer span[lay-type=date]{color:#5FB878}.layui-laydate .layui-this{background-color:#009688!important;color:#fff!important}.layui-laydate .laydate-disabled,.layui-laydate .laydate-disabled:hover{background:0 0!important;color:#d2d2d2!important;cursor:not-allowed!important;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.laydate-theme-molv{border:none}.laydate-theme-molv.layui-laydate-range{width:548px}.laydate-theme-molv .layui-laydate-main{width:274px}.laydate-theme-molv .layui-laydate-header{border:none;background-color:#009688}.laydate-theme-molv .layui-laydate-header i,.laydate-theme-molv .layui-laydate-header span{color:#f6f6f6}.laydate-theme-molv .layui-laydate-header i:hover,.laydate-theme-molv .layui-laydate-header span:hover{color:#fff}.laydate-theme-molv .layui-laydate-content{border:1px solid #e2e2e2;border-top:none;border-bottom:none}.laydate-theme-molv .laydate-main-list-1 .layui-laydate-content{border-left:none}.laydate-theme-grid .laydate-month-list>li,.laydate-theme-grid .laydate-year-list>li,.laydate-theme-grid .layui-laydate-content td,.laydate-theme-grid .layui-laydate-content thead,.laydate-theme-molv .layui-laydate-footer{border:1px solid #e2e2e2}.laydate-theme-grid .laydate-selected,.laydate-theme-grid .laydate-selected:hover{background-color:#f2f2f2!important;color:#009688!important}.laydate-theme-grid .laydate-selected.laydate-day-next,.laydate-theme-grid .laydate-selected.laydate-day-prev{color:#d2d2d2!important}.laydate-theme-grid .laydate-month-list,.laydate-theme-grid .laydate-year-list{margin:1px 0 0 1px}.laydate-theme-grid .laydate-month-list>li,.laydate-theme-grid .laydate-year-list>li{margin:0 -1px -1px 0}.laydate-theme-grid .laydate-year-list>li{height:43px;line-height:43px}.laydate-theme-grid .laydate-month-list>li{height:71px;line-height:71px}@font-face{font-family:laydate-icon;src:url(font/iconfont.eot);src:url(font/iconfont.eot#iefix) format('embedded-opentype'),url(font/iconfont.svg#iconfont) format('svg'),url(font/iconfont.woff) format('woff'),url(font/iconfont.ttf) format('truetype')}.laydate-icon{font-family:laydate-icon!important;font-size:16px;font-style:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale} -------------------------------------------------------------------------------- /assets/js/layer.js: -------------------------------------------------------------------------------- 1 | /*! layer mobile-v2.0 弹层组件移动版 License LGPL http://layer.layui.com/mobile By 贤心 */ 2 | ;!function(a){"use strict";var b=document,c="querySelectorAll",d="getElementsByClassName",e=function(a){return b[c](a)},f={type:0,shade:!0,shadeClose:!0,fixed:!0,anim:"scale"},g={extend:function(a){var b=JSON.parse(JSON.stringify(f));for(var c in a)b[c]=a[c];return b},timer:{},end:{}};g.touch=function(a,b){a.addEventListener("click",function(a){b.call(this,a)},!1)};var h=0,i=["layui-m-layer"],j=function(a){var b=this;b.config=g.extend(a),b.view()};j.prototype.view=function(){var a=this,c=a.config,f=b.createElement("div");a.id=f.id=i[0]+h,f.setAttribute("class",i[0]+" "+i[0]+(c.type||0)),f.setAttribute("index",h);var g=function(){var a="object"==typeof c.title;return c.title?'

    '+(a?c.title[0]:c.title)+"

    ":""}(),j=function(){"string"==typeof c.btn&&(c.btn=[c.btn]);var a,b=(c.btn||[]).length;return 0!==b&&c.btn?(a=''+c.btn[0]+"",2===b&&(a=''+c.btn[1]+""+a),'
    '+a+"
    "):""}();if(c.fixed||(c.top=c.hasOwnProperty("top")?c.top:100,c.style=c.style||"",c.style+=" top:"+(b.body.scrollTop+c.top)+"px"),2===c.type&&(c.content='

    '+(c.content||"")+"

    "),c.skin&&(c.anim="up"),"msg"===c.skin&&(c.shade=!1),f.innerHTML=(c.shade?"
    ':"")+'
    "+g+'
    '+c.content+"
    "+j+"
    ",!c.type||2===c.type){var k=b[d](i[0]+c.type),l=k.length;l>=1&&layer.close(k[0].getAttribute("index"))}document.body.appendChild(f);var m=a.elem=e("#"+a.id)[0];c.success&&c.success(m),a.index=h++,a.action(c,m)},j.prototype.action=function(a,b){var c=this;a.time&&(g.timer[c.index]=setTimeout(function(){layer.close(c.index)},1e3*a.time));var e=function(){var b=this.getAttribute("type");0==b?(a.no&&a.no(),layer.close(c.index)):a.yes?a.yes(c.index):layer.close(c.index)};if(a.btn)for(var f=b[d]("layui-m-layerbtn")[0].children,h=f.length,i=0;h>i;i++)g.touch(f[i],e);if(a.shade&&a.shadeClose){var j=b[d]("layui-m-layershade")[0];g.touch(j,function(){layer.close(c.index,a.end)})}a.end&&(g.end[c.index]=a.end)},a.layer={v:"2.0",index:h,open:function(a){var b=new j(a||{});return b.index},close:function(a){var c=e("#"+i[0]+a)[0];c&&(c.innerHTML="",b.body.removeChild(c),clearTimeout(g.timer[a]),delete g.timer[a],"function"==typeof g.end[a]&&g.end[a](),delete g.end[a])},closeAll:function(){for(var a=b[d](i[0]),c=0,e=a.length;e>c;c++)layer.close(0|a[0].getAttribute("index"))}},"function"==typeof define?define(function(){return layer}):function(){var a=document.scripts,c=a[a.length-1],d=c.src,e=d.substring(0,d.lastIndexOf("/")+1);c.getAttribute("merge")||document.head.appendChild(function(){var a=b.createElement("link");return a.href=e+"need/layer.css?2.0",a.type="text/css",a.rel="styleSheet",a.id="layermcss",a}())}()}(window); -------------------------------------------------------------------------------- /assets/js/need/layer.css: -------------------------------------------------------------------------------- 1 | .layui-m-layer{position:relative;z-index:19891014}.layui-m-layer *{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.layui-m-layermain,.layui-m-layershade{position:fixed;left:0;top:0;width:100%;height:100%}.layui-m-layershade{background-color:rgba(0,0,0,.7);pointer-events:auto}.layui-m-layermain{display:table;font-family:Helvetica,arial,sans-serif;pointer-events:none}.layui-m-layermain .layui-m-layersection{display:table-cell;vertical-align:middle;text-align:center}.layui-m-layerchild{position:relative;display:inline-block;text-align:left;background-color:#fff;font-size:14px;border-radius:5px;box-shadow:0 0 8px rgba(0,0,0,.1);pointer-events:auto;-webkit-overflow-scrolling:touch;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-duration:.2s;animation-duration:.2s}@-webkit-keyframes layui-m-anim-scale{0%{opacity:0;-webkit-transform:scale(.5);transform:scale(.5)}100%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}@keyframes layui-m-anim-scale{0%{opacity:0;-webkit-transform:scale(.5);transform:scale(.5)}100%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}.layui-m-anim-scale{animation-name:layui-m-anim-scale;-webkit-animation-name:layui-m-anim-scale}@-webkit-keyframes layui-m-anim-up{0%{opacity:0;-webkit-transform:translateY(800px);transform:translateY(800px)}100%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes layui-m-anim-up{0%{opacity:0;-webkit-transform:translateY(800px);transform:translateY(800px)}100%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}.layui-m-anim-up{-webkit-animation-name:layui-m-anim-up;animation-name:layui-m-anim-up}.layui-m-layer0 .layui-m-layerchild{min-width:320px;max-width:640px;}.layui-m-layer1 .layui-m-layerchild{border:none;border-radius:0}.layui-m-layer2 .layui-m-layerchild{width:auto;max-width:260px;min-width:40px;border:none;background:0 0;box-shadow:none;color:#fff}.layui-m-layerchild h3{padding:0 10px;height:60px;line-height:60px;font-size:16px;font-weight:400;border-radius:5px 5px 0 0;text-align:center}.layui-m-layerbtn span,.layui-m-layerchild h3{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.layui-m-layercont{padding:50px 30px;line-height:22px;text-align:center}.layui-m-layer1 .layui-m-layercont{padding:0;text-align:left}.layui-m-layer2 .layui-m-layercont{text-align:center;padding:0;line-height:0}.layui-m-layer2 .layui-m-layercont i{width:25px;height:25px;margin-left:8px;display:inline-block;background-color:#fff;border-radius:100%;-webkit-animation:layui-m-anim-loading 1.4s infinite ease-in-out;animation:layui-m-anim-loading 1.4s infinite ease-in-out;-webkit-animation-fill-mode:both;animation-fill-mode:both}.layui-m-layerbtn,.layui-m-layerbtn span{position:relative;text-align:center;border-radius:0 0 5px 5px}.layui-m-layer2 .layui-m-layercont p{margin-top:20px}@-webkit-keyframes layui-m-anim-loading{0%,100%,80%{transform:scale(0);-webkit-transform:scale(0)}40%{transform:scale(1);-webkit-transform:scale(1)}}@keyframes layui-m-anim-loading{0%,100%,80%{transform:scale(0);-webkit-transform:scale(0)}40%{transform:scale(1);-webkit-transform:scale(1)}}.layui-m-layer2 .layui-m-layercont i:first-child{margin-left:0;-webkit-animation-delay:-.32s;animation-delay:-.32s}.layui-m-layer2 .layui-m-layercont i.layui-m-layerload{-webkit-animation-delay:-.16s;animation-delay:-.16s}.layui-m-layer2 .layui-m-layercont>div{line-height:22px;padding-top:7px;margin-bottom:20px;font-size:14px}.layui-m-layerbtn{display:box;display:-moz-box;display:-webkit-box;width:100%;height:50px;line-height:50px;font-size:0;border-top:1px solid #D0D0D0;background-color:#F2F2F2}.layui-m-layerbtn span{display:block;-moz-box-flex:1;box-flex:1;-webkit-box-flex:1;font-size:14px;cursor:pointer}.layui-m-layerbtn span[yes]{color:#40AFFE}.layui-m-layerbtn span[no]{border-right:1px solid #D0D0D0;border-radius:0 0 0 5px}.layui-m-layerbtn span:active{background-color:#F6F6F6}.layui-m-layerend{position:absolute;right:7px;top:10px;width:30px;height:30px;border:0;font-weight:400;background:0 0;cursor:pointer;-webkit-appearance:none;font-size:30px}.layui-m-layerend::after,.layui-m-layerend::before{position:absolute;left:5px;top:15px;content:'';width:18px;height:1px;background-color:#999;transform:rotate(45deg);-webkit-transform:rotate(45deg);border-radius:3px}.layui-m-layerend::after{transform:rotate(-45deg);-webkit-transform:rotate(-45deg)}body .layui-m-layer .layui-m-layer-footer{position:fixed;width:95%;max-width:100%;margin:0 auto;left:0;right:0;bottom:10px;background:0 0}.layui-m-layer-footer .layui-m-layercont{padding:20px;border-radius:5px 5px 0 0;background-color:rgba(255,255,255,.8)}.layui-m-layer-footer .layui-m-layerbtn{display:block;height:auto;background:0 0;border-top:none}.layui-m-layer-footer .layui-m-layerbtn span{background-color:rgba(255,255,255,.8)}.layui-m-layer-footer .layui-m-layerbtn span[no]{color:#FD482C;border-top:1px solid #c2c2c2;border-radius:0 0 5px 5px}.layui-m-layer-footer .layui-m-layerbtn span[yes]{margin-top:10px;border-radius:5px}body .layui-m-layer .layui-m-layer-msg{width:auto;max-width:90%;margin:0 auto;/*bottom:-150px;*/background-color:rgba(0,0,0,.7);color:#fff}.layui-m-layer-msg .layui-m-layercont{padding:10px 20px} -------------------------------------------------------------------------------- /assets/js/wangeditor/css/wangEditor.min.css: -------------------------------------------------------------------------------- 1 | .txt-toolbar a,.wangEditor-drop-list a,.wangEditor-drop-panel a,.wangEditor-menu-container a{text-decoration:none}.wangEditor-container{position:relative;background-color:#fff;border:1px solid #ccc;z-index:1;width:100%}.wangEditor-container img,.wangEditor-container textarea{border:none}.wangEditor-container a:focus,.wangEditor-container button:focus{outline:0}.wangEditor-container,.wangEditor-container *{margin:0;padding:0;box-sizing:border-box;line-height:1}.wangEditor-container .clearfix:after{content:'';display:table;clear:both}.wangEditor-container textarea:focus{outline:0}.wangEditor-container .height-tip{position:absolute;width:3px;background-color:#ccc;left:0;transition:top .2s}.wangEditor-container .txt-toolbar{position:absolute;background-color:#fff;padding:3px 5px;border-top:2px solid #666;box-shadow:1px 3px 3px #999;border-left:1px\9 solid\9 #ccc\9;border-bottom:1px\9 solid\9 #999\9;border-right:1px\9 solid\9 #999\9}.wangEditor-container .txt-toolbar .tip-triangle{display:block;position:absolute;width:0;height:0;border:5px solid;border-color:transparent transparent #666;top:-12px;left:50%;margin-left:-5px}.wangEditor-container .txt-toolbar a{color:#666;display:inline-block;margin:0 3px;padding:5px;text-decoration:none;border-radius:3px}.wangEditor-container .txt-toolbar a:hover{background-color:#f1f1f1}.wangEditor-container .img-drag-point{display:block;position:absolute;width:12px;height:12px;border-radius:50%;cursor:se-resize;background-color:#666;margin-left:-6px;margin-top:-6px;box-shadow:1px 1px 5px #999}.wangEditor-container .wangEditor-upload-progress{position:absolute;height:1px;background:#1e88e5;width:0;display:none;-webkit-transition:width .5s;-o-transition:width .5s;transition:width .5s}.wangEditor-fullscreen{position:fixed;top:0;bottom:0;left:0;right:0}.wangEditor-container .code-textarea{resize:none;width:100%;font-size:14px;line-height:1.5;font-family:Verdana;color:#333;padding:0 15px}.wangEditor-menu-container{width:100%;border-bottom:1px solid #f1f1f1;background-color:#fff}.wangEditor-menu-container .menu-item .active,.wangEditor-menu-container .menu-item:hover{background-color:#f1f1f1}.wangEditor-menu-container .menu-group{float:left;}.wangEditor-menu-container .menu-item{float:left;position:relative;text-align:center;width:35px}.wangEditor-menu-container .menu-item a{display:block;text-align:center;color:#666;width:100%;padding:8px 0;font-size:.9em}.wangEditor-menu-container .menu-item .selected{color:#1e88e5}.wangEditor-menu-container .menu-item .disable{opacity:.5;filter:alpha(opacity=50)}.wangEditor-menu-container .menu-tip{position:absolute;z-index:20;width:60px;text-align:center;background-color:#666;color:#fff;padding:7px 0;font-size:12px;top:100%;left:50%;margin-left:-30px;border-radius:2px;box-shadow:1px 1px 5px #999;display:none}.wangEditor-menu-container .menu-tip-40{width:40px;margin-left:-20px}.wangEditor-menu-container .menu-tip-50{width:50px;margin-left:-25px}.wangEditor-menu-shadow{border-bottom:1px\9 solid\9 #f1f1f1\9;box-shadow:0 1px 3px #999}.wangEditor-container .wangEditor-txt{width:100%;text-align:left;padding:0 8px 8px;margin-top:5px;overflow-y:auto}.wangEditor-container .wangEditor-txt h1,.wangEditor-container .wangEditor-txt h2,.wangEditor-container .wangEditor-txt h3,.wangEditor-container .wangEditor-txt h4,.wangEditor-container .wangEditor-txt h5,.wangEditor-container .wangEditor-txt p{line-height:1.8}.wangEditor-container .wangEditor-txt h1 *,.wangEditor-container .wangEditor-txt h2 *,.wangEditor-container .wangEditor-txt h3 *,.wangEditor-container .wangEditor-txt h4 *,.wangEditor-container .wangEditor-txt h5 *,.wangEditor-container .wangEditor-txt p *{line-height:1.8}.wangEditor-container .wangEditor-txt ol,.wangEditor-container .wangEditor-txt ul{padding-left:20px}.wangEditor-container .wangEditor-txt img{cursor:pointer}.wangEditor-container .wangEditor-txt img.clicked,.wangEditor-container .wangEditor-txt table.clicked{box-shadow:1px 1px 10px #999}.wangEditor-container .wangEditor-txt pre code{line-height:1.5}.wangEditor-container .wangEditor-txt:focus{outline:0}.wangEditor-container .wangEditor-txt blockquote{display:block;border-left:8px solid #d0e5f2;padding:5px 10px;margin:10px 0;line-height:1.4;font-size:100%;background-color:#f1f1f1}.wangEditor-container .wangEditor-txt table{border:none;border-collapse:collapse}.wangEditor-container .wangEditor-txt table td,.wangEditor-container .wangEditor-txt table th{border:1px solid #999;padding:3px 5px;min-width:50px;height:20px}.wangEditor-container .wangEditor-txt pre{border:1px solid #ccc;background-color:#f8f8f8;padding:10px;margin:5px 0;font-size:.8em;border-radius:3px}.txt-toolbar,.wangEditor-drop-list,.wangEditor-drop-panel{z-index:10;border-left:1px\9 solid\9 #ccc\9;border-bottom:1px\9 solid\9 #999\9;border-right:1px\9 solid\9 #999\9;box-shadow:1px 3px 3px #999;position:absolute}.wangEditor-drop-list{display:none;background-color:#fff;overflow:hidden;transition:height .7s;border-top:1px solid #f1f1f1}.wangEditor-drop-list a{display:block;color:#666;padding:3px 5px}.wangEditor-drop-list a:hover{background-color:#f1f1f1}.txt-toolbar,.wangEditor-drop-panel{display:none;padding:10px;font-size:14px;background-color:#fff;border-top:2px solid #666}.txt-toolbar .tip-triangle,.wangEditor-drop-panel .tip-triangle{display:block;position:absolute;width:0;height:0;border:5px solid;border-color:transparent transparent #666;top:-12px;left:50%;margin-left:-5px}.txt-toolbar input[type=text],.wangEditor-drop-panel input[type=text]{border:none;border-bottom:1px solid #ccc;font-size:14px;height:20px;color:#333;padding:3px 0}.txt-toolbar input[type=text]:focus,.wangEditor-drop-panel input[type=text]:focus{outline:0;border-bottom:2px solid #1e88e5}.txt-toolbar input[type=text].block,.wangEditor-drop-panel input[type=text].block{display:block;width:100%}.txt-toolbar textarea,.wangEditor-drop-panel textarea{border:1px solid #ccc}.txt-toolbar textarea:focus,.wangEditor-drop-panel textarea:focus{outline:0;border-color:#1e88e5}.txt-toolbar button,.wangEditor-drop-panel button{font-size:14px;color:#1e88e5;border:none;padding:10px;background-color:#fff;cursor:pointer;border-radius:3px}.txt-toolbar button:hover,.wangEditor-drop-panel button:hover{background-color:#f1f1f1}.txt-toolbar button:focus,.wangEditor-drop-panel button:focus{outline:0}.txt-toolbar button.right,.wangEditor-drop-panel button.right{float:right;margin-left:10px}.txt-toolbar button.gray,.wangEditor-drop-panel button.gray{color:#999}.txt-toolbar button.link,.wangEditor-drop-panel button.link{padding:5px 10px}.txt-toolbar button.link:hover,.wangEditor-drop-panel button.link:hover{background-color:#fff;text-decoration:underline}.txt-toolbar .color-item:hover,.txt-toolbar .list-menu-item:hover,.wangEditor-drop-panel .color-item:hover,.wangEditor-drop-panel .list-menu-item:hover{background-color:#f1f1f1}.txt-toolbar .color-item,.wangEditor-drop-panel .color-item{display:block;float:left;width:25px;height:25px;text-align:center;padding:2px;border-radius:2px;text-decoration:underline}.txt-toolbar .list-menu-item,.wangEditor-drop-panel .list-menu-item{display:block;float:left;color:#333;padding:5px;border-radius:2px}.txt-toolbar table.choose-table,.wangEditor-drop-panel table.choose-table{border:none;border-collapse:collapse}.txt-toolbar table.choose-table td,.wangEditor-drop-panel table.choose-table td{border:1px solid #ccc;width:16px;height:12px}.txt-toolbar table.choose-table td.active,.wangEditor-drop-panel table.choose-table td.active{background-color:#ccc;opacity:.5;filter:alpha(opacity=50)}.txt-toolbar .panel-tab .tab-container,.wangEditor-drop-panel .panel-tab .tab-container{margin-bottom:5px}.txt-toolbar .panel-tab .tab-container a,.wangEditor-drop-panel .panel-tab .tab-container a{display:inline-block;color:#999;text-align:center;margin:0 5px;padding:5px}.txt-toolbar .panel-tab .tab-container a.selected,.wangEditor-drop-panel .panel-tab .tab-container a.selected{color:#1e88e5;border-bottom:2px solid #1e88e5}.txt-toolbar .panel-tab .content-container .content,.wangEditor-drop-panel .panel-tab .content-container .content{display:none}.txt-toolbar .panel-tab .content-container .content a,.wangEditor-drop-panel .panel-tab .content-container .content a{display:inline-block;margin:2px;padding:2px;border-radius:2px}.txt-toolbar .panel-tab .content-container .content a:hover,.wangEditor-drop-panel .panel-tab .content-container .content a:hover{background-color:#f1f1f1}.txt-toolbar .panel-tab .content-container .selected,.wangEditor-drop-panel .panel-tab .content-container .selected{display:block}.txt-toolbar .panel-tab .emotion-content-container,.wangEditor-drop-panel .panel-tab .emotion-content-container{height:200px;overflow-y:auto}.txt-toolbar .upload-icon-container,.wangEditor-drop-panel .upload-icon-container{color:#ccc;text-align:center;margin:20px 20px 15px!important;padding:5px!important;font-size:65px;cursor:pointer;border:2px dotted #f1f1f1;display:block!important}.txt-toolbar .upload-icon-container:hover,.wangEditor-drop-panel .upload-icon-container:hover{color:#666;border-color:#ccc}.wangEditor-modal{position:absolute;top:50%;left:50%;background-color:#fff;border-top:1px solid #f1f1f1;box-shadow:1px 3px 3px #999;border-top:1px\9 solid\9 #ccc\9;border-left:1px\9 solid\9 #ccc\9;border-bottom:1px\9 solid\9 #999\9;border-right:1px\9 solid\9 #999\9}.wangEditor-modal .wangEditor-modal-close{position:absolute;top:0;right:0;margin-top:-25px;margin-right:-25px;font-size:1.5em;color:#666;cursor:pointer}@font-face{font-family:icomoon;src:url(../fonts/icomoon.eot?-qdfu1s);src:url(../fonts/icomoon.eot?#iefix-qdfu1s) format('embedded-opentype'),url(../fonts/icomoon.ttf?-qdfu1s) format('truetype'),url(../fonts/icomoon.woff?-qdfu1s) format('woff'),url(../fonts/icomoon.svg?-qdfu1s#icomoon) format('svg');font-weight:400;font-style:normal}[class*=" wangeditor-menu-img-"],[class^=wangeditor-menu-img-]{font-family:icomoon;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.wangeditor-menu-img-link:before{content:"\e800"}.wangeditor-menu-img-unlink:before{content:"\e801"}.wangeditor-menu-img-code:before{content:"\e802"}.wangeditor-menu-img-cancel:before{content:"\e803"}.wangeditor-menu-img-terminal:before{content:"\e804"}.wangeditor-menu-img-angle-down:before{content:"\e805"}.wangeditor-menu-img-font:before{content:"\e806"}.wangeditor-menu-img-bold:before{content:"\e807"}.wangeditor-menu-img-italic:before{content:"\e808"}.wangeditor-menu-img-header:before{content:"\e809"}.wangeditor-menu-img-align-left:before{content:"\e80a"}.wangeditor-menu-img-align-center:before{content:"\e80b"}.wangeditor-menu-img-align-right:before{content:"\e80c"}.wangeditor-menu-img-list-bullet:before{content:"\e80d"}.wangeditor-menu-img-indent-left:before{content:"\e80e"}.wangeditor-menu-img-indent-right:before{content:"\e80f"}.wangeditor-menu-img-list-numbered:before{content:"\e810"}.wangeditor-menu-img-underline:before{content:"\e811"}.wangeditor-menu-img-table:before{content:"\e812"}.wangeditor-menu-img-eraser:before{content:"\e813"}.wangeditor-menu-img-text-height:before{content:"\e814"}.wangeditor-menu-img-brush:before{content:"\e815"}.wangeditor-menu-img-pencil:before{content:"\e816"}.wangeditor-menu-img-minus:before{content:"\e817"}.wangeditor-menu-img-picture:before{content:"\e818"}.wangeditor-menu-img-file-image:before{content:"\e819"}.wangeditor-menu-img-cw:before{content:"\e81a"}.wangeditor-menu-img-ccw:before{content:"\e81b"}.wangeditor-menu-img-music:before{content:"\e911"}.wangeditor-menu-img-play:before{content:"\e912"}.wangeditor-menu-img-location:before{content:"\e947"}.wangeditor-menu-img-happy:before{content:"\e9df"}.wangeditor-menu-img-sigma:before{content:"\ea67"}.wangeditor-menu-img-enlarge2:before{content:"\e98b"}.wangeditor-menu-img-shrink2:before{content:"\e98c"}.wangeditor-menu-img-newspaper:before{content:"\e904"}.wangeditor-menu-img-camera:before{content:"\e90f"}.wangeditor-menu-img-video-camera:before{content:"\e914"}.wangeditor-menu-img-file-zip:before{content:"\e92b"}.wangeditor-menu-img-stack:before{content:"\e92e"}.wangeditor-menu-img-credit-card:before{content:"\e93f"}.wangeditor-menu-img-address-book:before{content:"\e944"}.wangeditor-menu-img-envelop:before{content:"\e945"}.wangeditor-menu-img-drawer:before{content:"\e95c"}.wangeditor-menu-img-download:before{content:"\e960"}.wangeditor-menu-img-upload:before{content:"\e961"}.wangeditor-menu-img-lock:before{content:"\e98f"}.wangeditor-menu-img-unlocked:before{content:"\e990"}.wangeditor-menu-img-wrench:before{content:"\e991"}.wangeditor-menu-img-eye:before{content:"\e9ce"}.wangeditor-menu-img-eye-blocked:before{content:"\e9d1"}.wangeditor-menu-img-command:before{content:"\ea4e"}.wangeditor-menu-img-font2:before{content:"\ea5c"}.wangeditor-menu-img-libreoffice:before{content:"\eade"}.wangeditor-menu-img-quotes-left:before{content:"\e977"}.wangeditor-menu-img-strikethrough:before{content:"\ea65"}.wangeditor-menu-img-desktop:before{content:"\f108"}.wangeditor-menu-img-tablet:before{content:"\f10a"}.wangeditor-menu-img-search-plus:before{content:"\f00e"}.wangeditor-menu-img-search-minus:before{content:"\f010"}.wangeditor-menu-img-trash-o:before{content:"\f014"}.wangeditor-menu-img-align-justify:before{content:"\f039"}.wangeditor-menu-img-arrows-v:before{content:"\f07d"}.wangeditor-menu-img-sigma2:before{content:"\ea68"}.wangeditor-menu-img-omega:before{content:"\e900"}.wangeditor-menu-img-cancel-circle:before{content:"\e901"}.hljs{display:block;overflow-x:auto;padding:.5em;color:#333;background:#f8f8f8;-webkit-text-size-adjust:none}.diff .hljs-header,.hljs-comment{color:#998;font-style:italic}.css .rule .hljs-keyword,.hljs-keyword,.hljs-request,.hljs-status,.hljs-subst,.hljs-winutils,.nginx .hljs-title{color:#333;font-weight:700}.hljs-hexcolor,.hljs-number,.ruby .hljs-constant{color:teal}.hljs-doctag,.hljs-string,.hljs-tag .hljs-value,.tex .hljs-formula{color:#d14}.hljs-id,.hljs-title,.scss .hljs-preprocessor{color:#900;font-weight:700}.hljs-list .hljs-keyword,.hljs-subst{font-weight:400}.hljs-class .hljs-title,.hljs-type,.tex .hljs-command,.vhdl .hljs-literal{color:#458;font-weight:700}.django .hljs-tag .hljs-keyword,.hljs-rule .hljs-property,.hljs-tag,.hljs-tag .hljs-title{color:navy;font-weight:400}.hljs-attribute,.hljs-name,.hljs-variable,.lisp .hljs-body{color:teal}.hljs-regexp{color:#009926}.clojure .hljs-keyword,.hljs-prompt,.hljs-symbol,.lisp .hljs-keyword,.ruby .hljs-symbol .hljs-string,.scheme .hljs-keyword,.tex .hljs-special{color:#990073}.hljs-built_in{color:#0086b3}.hljs-cdata,.hljs-doctype,.hljs-pi,.hljs-pragma,.hljs-preprocessor,.hljs-shebang{color:#999;font-weight:700}.hljs-deletion{background:#fdd}.hljs-addition{background:#dfd}.diff .hljs-change{background:#0086b3}.hljs-chunk{color:#aaa} -------------------------------------------------------------------------------- /assets/js/wangeditor/fonts/icomoon.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/allures/wmqbk-Php/f35bfa8767653545133db57bd3c9985f2518d3d0/assets/js/wangeditor/fonts/icomoon.eot -------------------------------------------------------------------------------- /assets/js/wangeditor/fonts/icomoon.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/js/wangeditor/fonts/icomoon.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/allures/wmqbk-Php/f35bfa8767653545133db57bd3c9985f2518d3d0/assets/js/wangeditor/fonts/icomoon.ttf -------------------------------------------------------------------------------- /assets/js/wangeditor/fonts/icomoon.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/allures/wmqbk-Php/f35bfa8767653545133db57bd3c9985f2518d3d0/assets/js/wangeditor/fonts/icomoon.woff -------------------------------------------------------------------------------- /assets/qblog/archive.php: -------------------------------------------------------------------------------- 1 | 2 | 3 |
    4 |
    style="background:#fff;padding:15px;box-sizing:border-box;"> 5 |
    6 | '; 9 | foreach($archives as $v){ 10 | $year_tmp = date('Y',strtotime($v['atime'])); 11 | $mon_tmp = date('m',strtotime($v['atime'])); 12 | $y=$year; $m=$mon; 13 | if ($mon != $mon_tmp && $mon > 0) $output .= ''; 14 | if ($year != $year_tmp && $year > 0) $output .= ''; 15 | if ($year != $year_tmp) { 16 | $year = $year_tmp; 17 | $output .= '

    '. $year .' 年

      '; 18 | } 19 | if ($mon != $mon_tmp) { 20 | $mon = $mon_tmp; 21 | $output .= '
    • '. $mon .' 月
        '; 22 | } 23 | $title = $v['title'] == '' ? mb_substr(strip_tags($v['sum']) , 0, 25, 'utf-8') : $v['title']; 24 | $output .= '
      • '.date('d日: ',strtotime($v['atime'])).''. $title .' ('. $v['num'].' 评论)
      • '; 25 | } 26 | $output .= '
    '; 27 | echo $output; 28 | 29 | ?> 30 |
    31 |
    32 |
    33 | 34 | 35 | 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /assets/qblog/foot.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | ';?> -------------------------------------------------------------------------------- /assets/qblog/head.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | <?php echo $tit.'_'.$webtitle;?> 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 37 |
    -------------------------------------------------------------------------------- /assets/qblog/images/iconfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/allures/wmqbk-Php/f35bfa8767653545133db57bd3c9985f2518d3d0/assets/qblog/images/iconfont.eot -------------------------------------------------------------------------------- /assets/qblog/images/iconfont.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/qblog/images/iconfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/allures/wmqbk-Php/f35bfa8767653545133db57bd3c9985f2518d3d0/assets/qblog/images/iconfont.ttf -------------------------------------------------------------------------------- /assets/qblog/images/iconfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/allures/wmqbk-Php/f35bfa8767653545133db57bd3c9985f2518d3d0/assets/qblog/images/iconfont.woff -------------------------------------------------------------------------------- /assets/qblog/index.php: -------------------------------------------------------------------------------- 1 | 2 | 3 |
    4 |
    > 5 | '.$class[$tid].'
    ';?> 6 | 没有找到相关记录...
    ';}else{foreach($list as $v){ ?> 7 |
    8 | ""){?>

    9 |
    10 | ""){ ?>
    11 |
    12 |
    13 |
    14 |

    通过 15 | 16 | 17 | 18 |

    19 |
    23 | 24 | 27 |
    28 | 29 | 30 | 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /assets/qblog/login.php: -------------------------------------------------------------------------------- 1 | 2 | 3 |
    4 |
    "> 5 |
    6 | " type="hidden"> 7 | 8 |
    9 |
    10 | 11 |
    12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /assets/qblog/plist.php: -------------------------------------------------------------------------------- 1 | 2 | 3 |
    4 |
    > 5 |
    6 |

    评论列表

    7 |
      8 | 9 |
    1. 10 |
      11 |
      12 | > 13 | [查看] 14 |
      15 |

      16 | ""){?>

        回复

      17 |
      18 |
    2. 19 | 20 |
    21 |
    22 | 25 |
    26 | 27 |
    28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /assets/qblog/post.php: -------------------------------------------------------------------------------- 1 | 2 | 3 |
    4 |
    style="background:#fff;padding:15px;box-sizing:border-box;"> 5 |
    6 |
    ' placeholder="标题 (可为空)" type="text" />
    7 | 8 |
    9 | 10 |
    11 |
    12 | 上传缩略图 13 | 删除 14 | 15 |
    16 |
    17 | 0){?> 18 |
    19 | 24 |
    25 | 26 |
    ' placeholder="关键词 (可为空)" type="text" />
    27 |
    28 |
    29 |
    /> 私密 /> 禁评
    30 | 31 | 32 |
    33 |
    34 | 35 |
    36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | -------------------------------------------------------------------------------- /assets/qblog/right.php: -------------------------------------------------------------------------------- 1 | 21 | -------------------------------------------------------------------------------- /assets/qblog/setting.php: -------------------------------------------------------------------------------- 1 | 2 | 3 |
    4 |
    style="background:#fff;padding:15px;box-sizing:border-box;"> 5 |
      6 |
    • 博客设置
    • 7 |
    • 插件管理
    • 8 |
    • 更新缓存
    • 9 |
    10 | 79 | 91 | 92 |
    93 | 94 |
    95 | 96 | 97 | 98 | -------------------------------------------------------------------------------- /assets/qblog/style.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/allures/wmqbk-Php/f35bfa8767653545133db57bd3c9985f2518d3d0/assets/qblog/style.css -------------------------------------------------------------------------------- /assets/qblog/target.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | <?php echo $webtitle;?> - 安全中心 9 | 130 | 131 | 132 |
    133 |
    134 |

    即将离开

    135 |

    您即将离开,请注意您的帐号和财产安全。

    136 | 137 |
    138 |
    139 | 继续访问 140 |
    141 |
    142 | 143 | -------------------------------------------------------------------------------- /assets/qblog/theme.php: -------------------------------------------------------------------------------- 1 | getdata("select id,title,sum,num from `Log` where hide=0 order by num desc limit 0,$n"); 9 | foreach($rs as $v){ 10 | if(empty($v['title'])){ 11 | $title = mb_substr(strip_tags($v['sum']),0,14,'utf-8'); 12 | if(empty($title)) {$title = '#分享';} 13 | }else{ 14 | $title = $v['title']; 15 | } 16 | $str .= '
  • '.$title.' '.$v['num'].'
  • '; 17 | } 18 | return $str; 19 | } 20 | 21 | function comment($n){ 22 | global $db,$template,$admin; 23 | $str = ''; 24 | $where = $admin==1?'':'where hide=0'; 25 | $rs = $db->getdata("select id,cid,pname,pcontent,rcontent,isn from `Pl` $where order by id desc limit 0,$n"); 26 | foreach($rs as $v){ 27 | if($v['isn'] == 1){ 28 | $pcontent = '评论审核中'; 29 | }else{ 30 | $pcontent = mb_substr($v['pcontent'],0,12,'utf-8'); 31 | } 32 | $str .= '
  • '.$v['pname'].' : '.$pcontent.''; 33 | 34 | if(!empty($v['rcontent'])) {$str .= ' ';} 35 | $str .='
  • '; 36 | } 37 | return $str; 38 | } 39 | 40 | function getprenext($id,$pn){ 41 | global $db,$admin; 42 | $where = $admin?'':'and hide=0'; 43 | if($pn=='pre'){ 44 | $rs = $db->getdata("SELECT id,title FROM `log` WHERE id <$id $where ORDER BY id DESC LIMIT 1"); 45 | $t = '上一篇'; 46 | }else{ 47 | $rs = $db->getdata("SELECT id,title FROM `log` WHERE id >$id $where ORDER BY id ASC LIMIT 1"); 48 | $t = '下一篇'; 49 | } 50 | //print_r($rs); 51 | if(empty($rs)){ 52 | return ''; 53 | }else{ 54 | return ''.($rs[0]['title']==''?$t:$rs[0]['title']).''; 55 | } 56 | } 57 | 58 | function pl_str($id,$arr){ 59 | global $file; 60 | $pl_tpl = '
  • %s%s

    %s

  • '; 61 | return sprintf($pl_tpl,$id,$id,target($arr['purl'],$file),$arr['pname'],$arr['ptime'],$arr['pcontent']); 62 | } 63 | 64 | function timeago($ptime) { 65 | $ptime = strtotime($ptime); 66 | return date('Y-m-d', $ptime); 67 | $etime = time() - $ptime; 68 | if($etime < 1) return '刚刚'; 69 | $interval = array ( 70 | 12 * 30 * 24 * 60 * 60 => '年前 ('.date('Y-m-d', $ptime).')', 71 | 30 * 24 * 60 * 60 => '个月前 ('.date('m-d', $ptime).')', 72 | 7 * 24 * 60 * 60 => '周前 ('.date('m-d', $ptime).')', 73 | 24 * 60 * 60 => '天前', 74 | 60 * 60 => '小时前', 75 | 60 => '分钟前', 76 | 1 => '秒前' 77 | ); 78 | foreach ($interval as $secs => $str) { 79 | $d = $etime / $secs; 80 | if ($d >= 1) { 81 | $r = round($d); 82 | return $r . $str; 83 | } 84 | } 85 | } 86 | 87 | ?> -------------------------------------------------------------------------------- /assets/qblog/view.php: -------------------------------------------------------------------------------- 1 | 2 | 3 |
    4 |
    > 5 |
    6 | "") echo '

    '.$title.'

    ';?> 7 |
    这是一篇密码日志!

    ';}?>
    8 |

    通过 浏览()

    9 |
    12 | 13 |
    14 |

    15 |
      16 | 17 |
    1. 18 |
      19 |
      20 | > 21 | '.$l.'# ';pl_admin($vv['id'], $vv['cid'], $vv['isn'], $vv['pmail']);?> 22 |
      23 |

      24 | ""){?>

        回复

      25 |
      26 |
    2. 27 | 28 |
    29 | 30 |
    31 |

    发表评论

    32 |
    33 |
    34 |
    35 |
    36 |
    37 |
    38 | 39 |
    更换一道题!
    40 | 41 |
    42 |
    43 | 44 |
    45 |
    46 | 47 |
    48 | 49 | 50 | 51 | 52 | -------------------------------------------------------------------------------- /assets/qblog/widget.php: -------------------------------------------------------------------------------- 1 | 2 | 3 |
    4 |
    style="background:#fff;padding:15px;box-sizing:border-box;"> 5 |
      6 |
    • 7 |
    • 添加边栏
    • 8 |
    9 | 10 | 30 | 31 | 50 |
    51 | 52 |
    53 | 54 | 55 | 56 | -------------------------------------------------------------------------------- /index.php: -------------------------------------------------------------------------------- 1 | getdata("select * from `Wid` order by ord"); 16 | switch ($act) { 17 | case 'login': 18 | $tit = '登陆'; 19 | $ls = isset($_GET['l']) ? $_GET['l'] : ''; 20 | if($ls==$set['lstr']){ 21 | $tpl = 'login.php'; 22 | }else{ 23 | header('Location:' . $file); 24 | } 25 | break; 26 | 27 | case 'logout': 28 | unset($_SESSION[KEY.'admin']); 29 | session_destroy(); 30 | header('Location:' . $file); 31 | break; 32 | 33 | case 'dologin': 34 | $ps = isset($_POST['pass']) ? $_POST['pass'] : ''; 35 | $ls = isset($_POST['l']) ? $_POST['l'] : ''; 36 | login($file,$ps,$ls); 37 | break; 38 | 39 | case 'archives': 40 | $tit = '归档'; 41 | $where = $admin?'':'where hide=0'; 42 | $archives = $db->getdata("select * from `Log` {$where} order by atime desc", array()); 43 | $tpl = 'archive.php'; 44 | break; 45 | 46 | case 'wid': 47 | chkadm(); 48 | $tit = '边栏设置'; 49 | $tpl = 'widget.php'; 50 | break; 51 | 52 | case 'add': 53 | chkadm(); 54 | $tit = '发布'; 55 | $tpl = 'post.php'; 56 | break; 57 | 58 | case 'edit': 59 | chkadm(); 60 | $rs = $db->getdata("select * from `Log` where id=:id", array( 61 | 'id' => $id 62 | )); 63 | $vv = $rs[0]; 64 | $tit = '编辑'; 65 | $tpl = 'post.php'; 66 | break; 67 | 68 | case 'set': 69 | chkadm(); 70 | $tit = '设置'; 71 | $tpl = 'setting.php'; 72 | break; 73 | 74 | case 'pl': 75 | $rs = $db->getdata("select * from `Log` where id=:id", array( 76 | 'id' => $id 77 | )); 78 | $v = $rs[0]; 79 | if(empty($v)){@header("http/1.1 404 not found");@header("status: 404 not found");exit('404 not found');} 80 | if($v['hide']=="1" && $admin==0){@header("http/1.1 404 not found");@header("status: 404 not found");exit('404 not found');} 81 | $title = $v['title'] == '' ? mb_substr(strip_tags($v['sum']) , 0, 15, 'utf-8') : $v['title']; 82 | $sum = str_replace('"','',strip_tags($v['sum'])); 83 | $list = $db->getdata("select * from `Pl` where cid=:id", array( 84 | 'id' => $id 85 | )); 86 | $tit = strip_tags($title); 87 | $key = $v['key']; 88 | $des = str_replace("\n","",$sum); 89 | $tpl = 'view.php'; 90 | pv($id); 91 | break; 92 | 93 | case 'plist': 94 | $where = $admin==1?'':'where hide=0'; 95 | $count = $db->total('`Pl`',$where); 96 | $list = $db->getdata("select * from `Pl` $where order by id desc limit $start,$per_page", array()); 97 | if ($rewrite == 1) { 98 | $page_config['base_url'] = "comment-"; //当前的url,如果有参数需要拼接一下url 99 | $page_config['suffix'] = ".html"; //当前的url,如果有参数需要拼接一下url 100 | 101 | } else { 102 | $page_config['base_url'] = $file . "?act=plist&p="; //当前的url,如果有参数需要拼接一下url 103 | 104 | } 105 | $page_config['total_rows'] = $count; //传递总数 106 | $page_config['per_page'] = $per_page; //传递每页的数量 107 | $page_config['cur_page'] = $p; //传递当前页码 108 | $pageStr = new Page($page_config); 109 | $pagelist = $pageStr->create_links(); //创建新页码 110 | $tit = '评论列表'; 111 | $key = $webkey.',评论,博客评论,评论列表'; 112 | if($p>1) $tit .= '_第'.$p.'页_'; 113 | $tpl = 'plist.php'; 114 | break; 115 | case 'target': 116 | $tpl = 'target.php'; 117 | break; 118 | default: 119 | $key = $webkey; 120 | if (empty($s)) { 121 | if($tid===''){ 122 | $where = $admin?'':'where hide=0'; 123 | $_s = ''; 124 | $tit = '首页'; 125 | }else{ 126 | $where = $admin?'where tid='.$tid:'where hide=0 and tid='.$tid; 127 | $_s = 'tid=' . $tid . '&'; 128 | $tit = $class[$tid]; 129 | } 130 | $count = $db->total('`Log`',$where); 131 | $list = $db->getdata("select * from `Log` $where order by ist desc,atime desc limit $start,$per_page", array()); 132 | 133 | } else { 134 | $where = $admin?'':'and hide=0'; 135 | $_s = 's=' . $s . '&'; 136 | $count = $db->total('`Log`', "where (title like '%$s%' or content like '%$s%') $where"); 137 | $list = $db->getdata("select * from `Log` where (title like :s or content like :s) $where order by ist desc,atime desc limit $start,$per_page", array( 138 | "s" => $s 139 | )); 140 | $key = $key.',搜索结果'; 141 | $tit = '搜索结果-'.$s; 142 | } 143 | if ($rewrite == 1 && empty($s)) { 144 | if($tid===''){ 145 | $page_config['base_url'] = 'index-'; //当前的url,如果有参数需要拼接一下url 146 | } 147 | else{ 148 | $page_config['base_url'] = "list-". $tid . '-'; //当前的url,如果有参数需要拼接一下url 149 | } 150 | $page_config['suffix'] = '.html'; //当前的url,如果有参数需要拼接一下url 151 | 152 | } else { 153 | $page_config['base_url'] = $file . "?{$_s}p="; //当前的url,如果有参数需要拼接一下url 154 | 155 | } 156 | $page_config['total_rows'] = $count; //传递总数 157 | $page_config['per_page'] = $per_page; //传递每页的数量 158 | $page_config['cur_page'] = $p; //传递当前页码 159 | $pageStr = new Page($page_config); 160 | $pagelist = $pageStr->create_links(); //创建新页码 161 | if($p>1) $tit .= '_第'.$p.'页_'; 162 | $tpl = 'index.php'; 163 | } 164 | include 'assets/'. TEMPLATE .'/'. $tpl; -------------------------------------------------------------------------------- /readme.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/allures/wmqbk-Php/f35bfa8767653545133db57bd3c9985f2518d3d0/readme.txt -------------------------------------------------------------------------------- /v3tov4.1.1.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 无名轻博客安装程序 9 | 26 | 27 | 28 | 29 |
    30 |

    欢迎使用

    31 |

    无名轻博客是一款基于PHP+Sqlite的简单易用的个人微博系统(miniblog)。致力于为您提供快速、稳定,且在使用上又极其简单、舒适的博客服务。

    32 | Powered by 无名轻博客 V4 , Design by www.4jax.net

    '; 35 | exit('
    '); 36 | } 37 | class DbHelpClass 38 | { 39 | private $conn; 40 | private $qxId; 41 | private $ret; 42 | 43 | function __construct($db) 44 | { 45 | try{ 46 | $this->conn = new PDO('sqlite:'.$db); 47 | } 48 | catch(Exception $errinfo){ 49 | die ("PDO Connection faild.(可能空间不支持pdo_sqlite,详细错误信息:)".$errinfo); 50 | } 51 | 52 | } 53 | 54 | /*读取*/ 55 | function getdata($sql,$params=array()) 56 | { 57 | $bind=$this->conn->prepare($sql); 58 | $arrKeys=array_keys($params); 59 | foreach($arrKeys as $row) 60 | { 61 | if(strpos($sql,"like")>-1){ 62 | $bind->bindValue(":".$row,'%'.$params[$row].'%'); 63 | }else{ 64 | $bind->bindValue(":".$row,$params[$row]); 65 | } 66 | } 67 | $bind->execute();// or die('sql error:'.$sql); 68 | $result=$bind->fetchAll(PDO::FETCH_ASSOC); 69 | return $result; 70 | } 71 | 72 | function total($tab_name,$tj='')//求总记录数目 73 | { 74 | $bind = $this->conn->prepare('SELECT count(id) as c FROM '.$tab_name.' '.$tj); 75 | $bind->execute(); 76 | $result = $bind->fetchAll(); 77 | return $result[0]['c']; 78 | } 79 | /*添加,修改需调用此方法*/ 80 | function runsql($sql,$params=array()) 81 | { 82 | $bind=$this->conn->prepare($sql); 83 | $arrKeys=array_keys($params); 84 | foreach($arrKeys as $row) 85 | { 86 | 87 | $bind->bindValue(":".$row,$params[$row]); 88 | 89 | } 90 | $a = $bind->execute();//or die('sql error'); 91 | if(strpos($sql,"insert")>-1){ 92 | return $this->conn->lastInsertId(); 93 | }else{ 94 | return $a; 95 | } 96 | } 97 | } 98 | $odb = 'app/db/log3.db'; 99 | //$ndb = 'app/db/log4.db'; 100 | //rename($odb,'log4.db'); 101 | //define('INSTALL','TRUE'); 102 | echo '

    此文件升级v3.0版数据库为v4.0版,请备份好网站数据并真阅读升级步骤!!!
    '; 103 | echo '升级步骤:
    1.把v3.0数据库命名为log3.db
    2.上传V4.0程序(除数据库外)覆盖,运行本程序点击下方【开始升级】即可。

    开始升级

    '; 104 | if(!isset($_GET['up'])){ 105 | endfoot(); 106 | } 107 | if (file_exists($odb)) { 108 | //@unlink ($ndb); 109 | //echo '删除V4.0版本数据库
    '; 110 | //rename($odb,$ndb); 111 | //echo '更名V3.0版本数据库为'.$ndb.'
    '; 112 | echo '开始升级...
    '; 113 | }else{ 114 | echo ('V3.0数据库('.$odb.')文件丢失!'); 115 | endfoot(); 116 | } 117 | $db = new DbHelpClass($odb); 118 | $db->runsql("VACUUM"); 119 | $sql1 = 'CREATE TABLE sqlitestudio_temp_table AS SELECT * FROM Pl'; 120 | $db->runsql($sql1); 121 | $sql2 = 'DROP TABLE Pl'; 122 | $db->runsql($sql2); 123 | $sql3 = 'CREATE TABLE Pl ( 124 | id INTEGER PRIMARY KEY AUTOINCREMENT, 125 | cid INTEGER, 126 | pname VARCHAR (20), 127 | pmail VARCHAR (30), 128 | purl VARCHAR (50), 129 | pcontent VARCHAR (300), 130 | rcontent VARCHAR (100), 131 | ptime DATETIME DEFAULT (datetime(\'now\', \'localtime\') ), 132 | isn INT (1) DEFAULT (0), 133 | hide INT (1) DEFAULT (0) 134 | )'; 135 | $db->runsql($sql3); 136 | $sql4 = 'INSERT INTO Pl ( 137 | id, 138 | cid, 139 | pname, 140 | purl, 141 | pcontent, 142 | rcontent, 143 | ptime, 144 | isn, 145 | hide 146 | ) 147 | SELECT id, 148 | cid, 149 | pname, 150 | purl, 151 | pcontent, 152 | rcontent, 153 | ptime, 154 | isn, 155 | 0 156 | FROM sqlitestudio_temp_table'; 157 | $db->runsql($sql4); 158 | $sql5 = 'DROP TABLE sqlitestudio_temp_table'; 159 | $db->runsql($sql5); 160 | 161 | $sql1 = 'CREATE TABLE sqlitestudio_temp_table AS SELECT * FROM [Set]'; 162 | $db->runsql($sql1); 163 | $sql2 = 'DROP TABLE [Set]'; 164 | $db->runsql($sql2); 165 | $sql3 = 'CREATE TABLE [Set] ( 166 | id INT (1), 167 | webuser VARCHAR (10), 168 | webmail VARCHAR (30), 169 | webtitle VARCHAR (20), 170 | webkey VARCHAR (100), 171 | webpass VARCHAR (32), 172 | lstr VARCHAR (20), 173 | webdesc VARCHAR (255), 174 | webmenu TEXT, 175 | webclass VARCHAR (100), 176 | plsh INT (1), 177 | rewrite INT (1), 178 | safecode INT (1), 179 | page INTEGER, 180 | width INTEGER, 181 | icp VARCHAR (20), 182 | foot TEXT, 183 | widget INT (1) DEFAULT (1), 184 | motto VARCHAR (255), 185 | ver CHAR (5) 186 | )'; 187 | $db->runsql($sql3); 188 | $sql4 = 'INSERT INTO [Set] ( 189 | id, 190 | webuser, 191 | webtitle, 192 | webkey, 193 | webpass, 194 | lstr, 195 | webdesc, 196 | webmenu, 197 | webclass, 198 | plsh, 199 | rewrite, 200 | safecode, 201 | page, 202 | width, 203 | icp, 204 | foot, 205 | widget, 206 | motto, 207 | ver 208 | ) 209 | SELECT id, 210 | webuser, 211 | webtitle, 212 | webkey, 213 | webpass, 214 | "" as lstr, 215 | webdesc, 216 | webmenu, 217 | webclass, 218 | plsh, 219 | rewrite, 220 | safecode, 221 | 20 as page, 222 | 600 as width, 223 | icp, 224 | "" as foot, 225 | widget, 226 | motto, 227 | "4.1.1" as ver 228 | FROM sqlitestudio_temp_table'; 229 | $db->runsql($sql4); 230 | $sql5 = 'DROP TABLE sqlitestudio_temp_table'; 231 | $db->runsql($sql5); 232 | 233 | $sql3 = 'CREATE TABLE Plug ( 234 | id INTEGER PRIMARY KEY AUTOINCREMENT, 235 | title VARCHAR (15), 236 | hook VARCHAR (10) UNIQUE, 237 | init TEXT, 238 | args VARCHAR (100), 239 | lock INT (1) DEFAULT (0) 240 | )'; 241 | $db->runsql($sql3); 242 | 243 | $sql4 = 'INSERT INTO Plug ( 244 | lock, 245 | args, 246 | init, 247 | hook, 248 | title, 249 | id 250 | ) 251 | VALUES ( 252 | 0, 253 | \'\', 254 | \'a:5:{s:5:"title";s:31:"评论/回复邮件提醒通知";s:4:"file";s:9:"emmsg.php";s:3:"act";s:12:"addpl,plsave";s:4:"func";s:5:"emmsg";s:3:"cfg";a:3:{i:0;s:13:"smtp服务器";i:1;s:12:"邮箱地址";s:8:"password";s:12:"邮箱密码";}}\', 255 | \'emmsg\', 256 | \'评论/回复邮件提醒通知\', 257 | 1 258 | ), 259 | ( 260 | 1, 261 | \'\', 262 | \'a:5:{s:5:"title";s:18:"评论微信通知";s:4:"file";s:9:"wxmsg.php";s:3:"act";s:5:"addpl";s:4:"func";s:5:"wxmsg";s:3:"cfg";a:1:{s:8:"password";s:5:"token";}}\', 263 | \'wxmsg\', 264 | \'评论微信通知\', 265 | 2 266 | )'; 267 | $db->runsql($sql4); 268 | $cfg = 'app/class/config.php'; 269 | $key = md5(time().'WMQBK3'); 270 | $p = 'admin'.substr($key,2,4); 271 | $sdb = substr($key,16,12);; 272 | $key = substr($key,10,6); 273 | $key = 'WMQBK3_'.$key; 274 | $f = file_get_contents($cfg); 275 | $f = preg_replace("/define\('KEY','.+?'\);/i","define('KEY','{$key}');",$f); 276 | $f = preg_replace("/define\('DB',.+?;/i","define('DB',ROOT_PATH.'app/db/{$sdb}.db');",$f); 277 | $f = preg_replace("/\/\*install-start\*\/.+?\/\*install-end\*\//is","define('INSTALL','TRUE');",$f); 278 | $webpss = md5(md5($key.$p)); 279 | //echo $webpss; 280 | $sql1="update `Set` set webpass='{$webpss}' where id=1"; 281 | $db->runsql($sql1); 282 | $f = @file_put_contents($cfg,$f); 283 | $db = null; 284 | rename($odb,"app/db/{$sdb}.db"); 285 | $_SESSION[$key.'set'] = ''; 286 | //$m = '
  • 首页
  • 评论
  • '; 287 | //$db->runsql("update `Set` set webmenu='$m'"); 288 | echo '升级完成! 管理密码重置为:'.$p; 289 | echo '

    开始使用

    '; 290 | @unlink ('v3tov4.1.1.php'); endfoot(); 291 | ?> 292 | -------------------------------------------------------------------------------- /v4to4.1.1.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 无名轻博客安装程序 9 | 26 | 27 | 28 | 29 |
    30 |

    欢迎使用

    31 |

    无名轻博客是一款基于PHP+Sqlite的简单易用的个人微博系统(miniblog)。致力于为您提供快速、稳定,且在使用上又极其简单、舒适的博客服务。

    32 | Powered by 无名轻博客 V4 , Design by www.4jax.net

    '; 35 | exit('
    '); 36 | } 37 | if(!isset($_GET['up'])){ 38 | echo '

    此文件升级v4.0-v4.1版数据库为v4.1.1版,请备份好网站数据并真阅读升级步骤!!!
    '; 39 | echo '升级步骤:1.上传V4.1.1程序(除数据库、config.php外)覆盖,运行本程序点击下方【开始升级】即可。

    开始升级

    '; 40 | endfoot(); 41 | }else{ 42 | include 'app/class/app.php'; 43 | $db = new DbHelpClass(); 44 | $sql1 = 'CREATE TABLE sqlitestudio_temp_table AS SELECT * FROM [Set]'; 45 | $db->runsql($sql1); 46 | $sql2 = 'DROP TABLE [Set]'; 47 | $db->runsql($sql2); 48 | $sql3 = 'CREATE TABLE [Set] ( 49 | id INT (1), 50 | webuser VARCHAR (10), 51 | webmail VARCHAR (30), 52 | webtitle VARCHAR (20), 53 | webkey VARCHAR (100), 54 | webpass VARCHAR (32), 55 | lstr VARCHAR (20), 56 | webdesc VARCHAR (255), 57 | webmenu TEXT, 58 | webclass VARCHAR (100), 59 | plsh INT (1), 60 | rewrite INT (1), 61 | safecode INT (1), 62 | page INTEGER, 63 | width INTEGER, 64 | icp VARCHAR (20), 65 | foot TEXT, 66 | widget INT (1) DEFAULT (1), 67 | motto VARCHAR (255), 68 | ver CHAR (5) 69 | )'; 70 | $db->runsql($sql3); 71 | $sql4 = 'INSERT INTO [Set] ( 72 | id, 73 | webuser, 74 | webtitle, 75 | webkey, 76 | webpass, 77 | lstr, 78 | webdesc, 79 | webmenu, 80 | webclass, 81 | plsh, 82 | rewrite, 83 | safecode, 84 | page, 85 | width, 86 | icp, 87 | foot, 88 | widget, 89 | motto, 90 | ver 91 | ) 92 | SELECT id, 93 | webuser, 94 | webtitle, 95 | webkey, 96 | webpass, 97 | "" as lstr, 98 | webdesc, 99 | webmenu, 100 | webclass, 101 | plsh, 102 | rewrite, 103 | safecode, 104 | 20 as page, 105 | 600 as width, 106 | icp, 107 | "" as foot, 108 | widget, 109 | motto, 110 | "4.1.1" as ver 111 | FROM sqlitestudio_temp_table'; 112 | $db->runsql($sql4); 113 | $sql5 = 'DROP TABLE sqlitestudio_temp_table'; 114 | $db->runsql($sql5); 115 | $_SESSION[$key.'set'] = ''; 116 | //$m = '
  • 首页
  • 评论
  • '; 117 | //$db->runsql("update `Set` set webmenu='$m'"); 118 | echo '升级完成!'; 119 | echo '

    开始使用

    '; 120 | @unlink ('v4to4.1.1.php'); endfoot(); 121 | } 122 | ?> 123 | --------------------------------------------------------------------------------