commit 2538bb2a1bb1fbb704d24f1644dfe7052c91e98f Author: kami Date: Fri Apr 24 22:19:24 2026 +0800 上传2025_04_29备份作为记录 diff --git a/.gitignore b/.gitignore new file mode 100755 index 0000000..3813b19 --- /dev/null +++ b/.gitignore @@ -0,0 +1,22 @@ +#### 忽略目录 +# 数据库 +databases/* +public/*.sql +public/*.db + +##### 博客文档 +# 图片 +src/image/* +public/image/* + + +# 可能未知 +public/message/static/src/video/* + +# 管理员面板 +public/blog/admin/* + + +# 临时区 +public/blog/md0/* +# 临时区 \ No newline at end of file diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..9e4e85d --- /dev/null +++ b/LICENSE @@ -0,0 +1,9 @@ +MIT License + +Copyright (c) 2025 skimrme + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/README.md b/README.md new file mode 100644 index 0000000..518a216 --- /dev/null +++ b/README.md @@ -0,0 +1,13 @@ +点击访问 + +## 2025.7.20 +open-ww3-project-ww3-tw +个人博客地址(预计) +--- + +
+ +**署名** + +skimrme + diff --git a/public/about/index.html b/public/about/index.html new file mode 100755 index 0000000..e69de29 diff --git a/public/blog/about/index.html b/public/blog/about/index.html new file mode 100755 index 0000000..3613d41 --- /dev/null +++ b/public/blog/about/index.html @@ -0,0 +1,13 @@ + + + 不想写了 + + + + 忘记写了 +
+ 所以暂时就不写了 +

2025.08.05

+

over

+ + \ No newline at end of file diff --git a/public/blog/google02f6a3f6004a32c6.html b/public/blog/google02f6a3f6004a32c6.html new file mode 100644 index 0000000..9005144 --- /dev/null +++ b/public/blog/google02f6a3f6004a32c6.html @@ -0,0 +1 @@ +google-site-verification: google02f6a3f6004a32c6.html \ No newline at end of file diff --git a/public/blog/icon/original.ico b/public/blog/icon/original.ico new file mode 100755 index 0000000..167d718 Binary files /dev/null and b/public/blog/icon/original.ico differ diff --git a/public/blog/index.php b/public/blog/index.php new file mode 100755 index 0000000..51865f1 --- /dev/null +++ b/public/blog/index.php @@ -0,0 +1,120 @@ + + + 首页 | ww3 + + + + + +
+ +
+ +
+

屑站日志:

+ + + + + + + + + + + + + + + + +
2025.07.26新增wiki页面
2025.07.20新增giteadocker-registry页面
2025.07.09建立页面
+
+
+ +
+ +
+ + + + + + \ No newline at end of file diff --git a/public/blog/logs.php.text b/public/blog/logs.php.text new file mode 100644 index 0000000..60a0e12 --- /dev/null +++ b/public/blog/logs.php.text @@ -0,0 +1,47 @@ +"; + // 如果连接成功,但是内部状态有问题 + if ($db->lastErrorCode() !==0) { + // 依旧显示为连接失败 + die("数据库连接失败"); + } + + // 内容区 + // 执行sql命令 查询表单 + $select_id_date_content_from_logs_b_to_s /*查询logs表单中的id date content id从大到小排列*/ = $db->query('SELECT id, date, content FROM logs ORDER BY id DESC'); // 执行查询logs表单中的id date content id从大到小排列的命令 + + // 循环 写入 + while ($row = $select_id_date_content_from_logs_b_to_s->fetchArray(SQLITE3_ASSOC)) { + // 设定 ' ' 占用19个字符 + $nbsp_count = 0; + // 设定变量是 换行 加上 空格重复19个 + $br_nbsp = '
' . str_repeat(' ',$nbsp_count); + // 设定变量是 修改 && 为 换行 加上19个空格 + $alter_br = str_replace('&&', $br_nbsp, $row['content']); + + // 输出 date content + echo "" . "" . "" . $row['date'] . "" . "" . "" . $alter_br . "
" . ""; + + } + + + + // 关闭数据库连接 + $db->close(); + + // 捕获php报错 + } catch (Exception $e) { + // 依旧显示为连接失败 + die("数据库连接失败"); + // 关闭数据库连接 + $db->close(); + } + +?> \ No newline at end of file diff --git a/public/blog/md0/114514.md b/public/blog/md0/114514.md new file mode 100755 index 0000000..2ac5ba9 --- /dev/null +++ b/public/blog/md0/114514.md @@ -0,0 +1,7 @@ +## MD介绍页面 + +顾名思义、本文件夹下使用的基本都是markdown + +最后感谢提供php的md插件的开源制作者 + +[点击跳转](https://ww3.tw/blog/md/src/php-markdown/) \ No newline at end of file diff --git a/public/blog/md0/MD.php b/public/blog/md0/MD.php new file mode 100755 index 0000000..e53eaa5 --- /dev/null +++ b/public/blog/md0/MD.php @@ -0,0 +1,479 @@ + + + + +file = $filename; //设置当前文件 + $this->mdGen = $this->content($filename); //获取生成器 + $this->flag = 'idel'; //闲置 + $this->lines = array(); //所有行状态 + $this->line_count = 0; //行数归0 + } + + private function content($file){ //获取生成器 + if(file_exists($file)){ + $fh = fopen($file,"r"); + while(!feof($fh)){ + yield fgets($fh); + } + fclose($fh); + }else{ + return null; + } + } + + //遍历每一个字符 + private function every($str){ + $l = strlen($str); + for($i=0;$i<$l;$i++) + if(ord($str[$i])<0x80) + yield $str[$i]; + else{ + yield $str[$i].$str[$i+1].$str[$i+2]; //三个字节 + $i+=2; + } + } + + //解析 + private function parse(){ + $ctnt = $this->mdGen; //生成器 + $ret=array(); + if($ctnt != null){ + $ret = array(); + foreach($ctnt as $line){ + if($this->flag != 'code') + $line=ltrim($line); //删除左边 + if(strlen($line)){ + $ch = $line[0]; //判断第一个字符 + $type=ctype_punct($ch);//标点符号 + if($this->flag !== 'code') $line=preg_replace('/\s{2,}$/','
',$line); //非代码模式 + $ret[] = $this->parseLine($line,$type); //解析行 + }else{ //空行 + switch($this->flag){ + case 'ul': + case 'ol': + $ret[]="flag>"; + $this->flag_pre = $this->flag; + $this->flag = 'idel'; + break; + case 'table': + $this->flag = 'idel'; + $ret[]=''; + break; + default: + if($this->flag != 'el') $ret[] = '
'; + $this->flag = 'el'; //空行 + } + } + } + } + $this->lines = $ret; + return $ret; + } + + //生成blockquote + private function genQuote($level,$content){ + if($level<=0) return ""; + return str_repeat('
',$level).$content.str_repeat('
',$level); + } + + //检查是否处于某个状态,默认检查是否处于代码状态 + private function check($value='code'){ + return ($this->flag == $value); + } + + /** + * 生成一行新的表格列 + * $data:需要输入的数据 + * $type:生成类型 + * $wrap:最快层包裹 + * $sep:分隔符 + */ + private function genRow($data,$type='td',$wrap='tr',$sep='|'){ + $ret=''; + $mat = explode($sep,$data); + foreach($mat as $elem) + $ret.="<$type>".$elem.""; + return "<$wrap>".$ret.""; + } + + /** + * 解析行内元素 + * bold,italic,code,link,pic + */ + private function parseInner($str){ + $str=preg_replace('/\*\*\*([^\*\n\r]+)\*\*\*/','\1',$str); //加粗并加斜字体 + $str=preg_replace('/\*\*([^\*\n\r]+)\*\*/','\1',$str); //加粗字体 + $str=preg_replace('/\*([^\*\n\r]+)\*/','\1',$str); //斜体 + $str=preg_replace('/```([^`\n\r]+)```/','\1',$str); //代码 + $str=preg_replace('/`([^`\n\r]+)`/','\1',$str); //代码 + $str=preg_replace('/!\[([^\]\r\n]+)\]\(([^\)\r\n]+)\)/','\1',$str); //图片 + $str=preg_replace('/\[([^\]\r\n]+)\]\(([^\)\r\n]+)\)/','\1',$str); //图片 + return $str; + } + + /** + * 按照给定规则解析字符串: + * type: + * true 符号 + * false 文字 + * 返回: + * array('type'=>类型,'parts'=>array(...)) + */ + private function parseLine($str,$type){ + if(strlen($str) == 0){ + return array('type'=>'p','parts'=>[]); //返回空段 + } + + $valid_str = rtrim($str); //去除右边的空格 + + $str = $valid_str; + $output = ''; //需要输出的字符串 + + if($type == true){ //标点 + $type_str = ''; //类型字符串 + $data_str = ''; + $flag = 0; + + foreach($this->every($str) as $ch){ + if(!ctype_punct($ch)){ + $flag = 1; + } + if($flag == 0) + $type_str .= $ch; + else + $data_str .= $ch; + } + + switch($type_str){ + case '#': + $wrap = 'h1'; + $this->flag_like = 'h1'; + break; + case '##': + $wrap = 'h2'; + $this->flag_like = 'h2'; + break; + case '###': + $wrap = 'h3'; + $this->flag_like = 'h3'; + break; + case '####': + $wrap = 'h4'; + $this->flag_like = 'h4'; + break; + case '#####': + $wrap = 'h5'; + $this->flag_like = 'h5'; + break; + case '######': + $wrap = 'h6'; + $this->flag_like = 'h6'; + break; + case '+': + case '-': + $wrap = 'li'; + $this->flag_like = 'ul'; + if($this->flag != 'code'){ + if($this->flag != 'ul'){ + $this->flag_pre = $this->flag; + $this->flag = 'ul'; + $output.='