羡逍遥 - 技术
type: channel
link: https://lyj15.cn/category/%E6%8A%80%E6%9C%AF/
items: thinkphp框架-参数验证规则
items: 国产银河麒麟服务器搭建教程
items: 自定义css与js文件
items: 博客美化设置自定义外观
items: 评论显示评论者的基础信息
items: 博客美化插件集锦
items: 文章添加AI摘要功能
items: 博客信息添加在线人数
items: 评论增加表情包类别
items: 分享一个在d2admin项目中强制https的方法

thinkphp框架-参数验证规则
type: item
date: 2026-03-02T10:27:00+00:00
description: AI摘要 本文介绍了ThinkPHP框架中参数验证规则的应用。参数验证是确保用户输入数据安全性和有效性的重要手段。文章重点介绍了alphaNum规则，即验证字段值只能包含英文字母（大小写）和数字，不能包含中文、符号、空格、下划线等其他字符。这种验证规则有助于提高数据的准确性和安全性。 此内容根据文章生成，仅用于文章内容的解释与总结 引言以下是收集好用的参数验证规则，可以参考使用alphaNum全称是 alpha + numeric，验证字段的值 只能包含英文字母（大小写）和数字 ，不允许包含任何其他字符（比如中文、符号、空格、下划线等)

国产银河麒麟服务器搭建教程
type: item
date: 2025-11-01T07:41:00+00:00
description: AI摘要 本文介绍了如何搭建国产银河麒麟服务器（x86架构系统）。首先，从银河麒麟官网下载镜像文件并申请试用，然后在华为云Flexus L服务器上创建ISO镜像，接着安装临时服务器并设置root账号密码。安装完成后，创建私有镜像并安装私有镜像。如果遇到无法切换镜像或SSH无法连接服务器的问题，文章提供了相应的解决方案。 此内容根据文章生成，仅用于文章内容的解释与总结 前言最近想往国产服务器方面了解一下，所以就搭建了一个国产的银河麒麟服务器（x86架构系统）[scode type="green" size=""]这里以华为云Flexus L服务器，华为云弹性云服务器可以直接安装鲲鹏系统[/scode]准备1、首先请问银河麒麟官网下载镜像文件：麒麟软件-国产操作系统，然后申请试用，填写个人资料后找到v10的x86架构系统镜像下载2、准备一台华为云Flexus L服务器3、前往对象存储服务 OBS，创建一个桶，把镜像文件上传到该桶里面搭建步骤一、创建ISO镜像首先前往IMS控制台，进入镜像服务点击右上角的创建私有镜像[collapse status="false" title="进入之后，按以下步骤填："]区域：看自己需求创建方式：导入私有镜像镜像类型：ISO镜像选择镜像文件：选择含有刚才上传镜像文件的桶架构类型：x86启动方式：BIOS操作系统：KylinOS KylinOS V10 SP3 64bit系统盘：按自己的服务器配置来名称：看自己需求企业项目：看自己需求[/collapse]二、安装临时服务器首先回到镜像服务，确定镜像状态正常后，点击安装服务器把配置拉低一点，然后点击确定安装成功后，进入弹性云服务器，就可以看到刚才安装的服务器了点击服务器右边的远程登录找到VNC登录，如果没有看到，就点击下面的其他登录方式里面找进去后，先选择语言如果这里显示的不是已选择自动分区，就点击进入进去之后选择它，然后点击左上角的完成设置完root账号的密码后，点击开始安装正在安装......安装完成后，点击右下角重启系统同意许可信息后，点击下面的结束配置结束配置后，输入root账号密码，就可以进去了三、创建私有镜像再次进入弹性云服务器，找到刚才的服务器，点击服务器右边的更多-镜像-创建镜像配置完信息后，点击下一步-提交等待一会看看状态是否正常四、安装私有镜像首先进入华为云Flexus云服务-Flexus应用服务器L实例，找到服务器，点击右下角后，点击切换镜像然后直接切换就可以用了如果不能切换，如下图：这时候不要选择主机迁移[collapse status="false" title="关闭收费镜像方法"]点开F12，进入源代码，在搜索框搜索这个，选择第一个privateimagedropdown_tip4然后把这里的!1改成false然后下载这个文件：[hide]点击下载[/hide]下载后解压然后点击覆盖，选择刚刚下载解压的文件，点击启用本地替代，刷新就可以了[scode type="blue" size=""]如果还是不行就联系华为云官方吧，让他们操作[/scode][/collapse]如果还是不能切换，且出现下面这个[collapse status="false" title="增加onekey_resetpasswd 方法"]进入镜像服务，复制下面的ID然后进入这个页面：点击进入把刚才复制的id填写进去，然后点击调试看到右边有没有出现调试成功然后进入这个页面：点击进入Region：选择私有镜像所在区域image_id：输入刚才复制的私有镜像IDBody：切换为文本输入，输入如下内容[ { "op": "add", "path": "/__os_feature_list", "value": "{\"nic_hotplug\":\"true\", \"disk_hotplug\": \"true\", \"user_data\": \"true\", \"ssh_key\":\"true\", \"hostname_inject\": \"true\", \"onekey_resetpasswd\": \"true\"}" } ]然后点击调试，看到右边出现onekey_resetpasswd为true就说明成功了[/collapse]回到切换镜像页面，就可以看到能切换这个镜像了后面切换镜像，重启服务器就可以了~五、问题-无法进服务器服务器购买成功后，如果SSH无法连接到服务器，就按下面来操作首先使用VNC登录进入，然后输入nmtui，回车就会进入网络连接图形化工具启用这个ens3再次使用SSH就可以连接到服务器了

自定义css与js文件
type: item
date: 2025-10-30T03:17:06+00:00
description: AI摘要 博客美化：如何自定义CSS和JS文件 此内容根据文章生成，仅用于文章内容的解释与总结 前言随着博客逐渐美化，使用的后台的自定义css与自定义js越来越多，写起来就越来越难受。尤其是当里面代码多了，每次编辑就要一直往下滑，好不容易滑到底了，点击一下进入编辑又跑到顶上了......而且看着很混乱，所以我就创建文件单独给拉出来了自定义css进入/usr/themes/handsome/assets/css目录，创建customize.css文件（名字按自己喜欢的来，不需要一样），然后把更改外观-设置外观-开发者设置-自定义 CSS里面的内容全选剪切进customize.css文件将下面代码粘贴到 /usr/themes/handsome/component/header.php文件，大概在324行 <link rel="stylesheet" href="<?php echo STATIC_PATH; ?>css/customize.css?v=<?php echo Handsome::version . Handsome::$versionTag ?>" type="text/css"/>自定义css方法1：进入/usr/themes/handsome/assets/js目录，创建customize.js文件（名字按自己喜欢的来，不需要一样），然后把更改外观-设置外观-开发者设置-自定义JavaScript里面的内容全选剪切进customize.js文件将下面代码粘贴到 /usr/themes/handsome/component/footer.php文件，大概在310行，在 上面就行<script src="<?php $this->options->themeUrl('assets/js/customize.js'); ?>"> 或者是打开后台-更改外观-设置外观-开发者设置-复制代码粘贴至 自定义输出body 尾部的HTML代码 看到文件访问成功后，强制刷新一下网站，清除一下缓存就可以了

博客美化设置自定义外观
type: item
date: 2025-10-28T07:43:00+00:00
description: AI摘要 博客美化技巧：自定义CSS和JavaScript实现头像旋转、赞赏按钮跳动等功能。 此内容根据文章生成，仅用于文章内容的解释与总结 前言最近觉得博客有点单调，所以想美化一下美化首页头像鼠标悬停旋转[collapse status="false" title="点击打开查看"]打开后台-更改外观-设置外观-开发者设置-复制代码粘贴至 自定义 CSS 即可/*头像呼吸光环和鼠标悬停旋转 开始 */ .img-full { border-radius: 50%; animation: light 4s ease-in-out infinite; transition: 0.5s; } .img-full:hover { transform: rotate(666turn); transition-duration: 59s; transition-timing-function: cubic-bezier(.34, 0, .84, 1); } @keyframes light { 0% { box-shadow: 0 0 4px #22ACD6; } 50% { box-shadow: 0 0 16px #22ACD6; } 100% { box-shadow: 0 0 4px #22ACD6; } } /*头像呼吸光环和鼠标悬停旋转 结束 */[/collapse]文章赞赏按钮跳动[collapse status="false" title="点击打开查看"]打开后台-更改外观-设置外观-开发者设置-复制代码粘贴至 自定义 CSS 即可/*赞赏按钮跳动开始*/ .btn-pay { animation: star 0.5s ease-in-out infinite alternate; } @keyframes star { from { transform: scale(1); } to { transform: scale(1.1); } } /*赞赏按钮跳动结束*/[/collapse]转载提醒[collapse status="false" title="点击打开查看"]打开后台-更改外观-设置外观-开发者设置-复制代码粘贴至 自定义输出head 头部的HTML代码 打开后台-更改外观-设置外观-开发者设置-复制代码粘贴至 自定义 JavaScript document.body.oncopy=function(){layer.msg('复制成功,若要转载请务必保留原文链接！');};效果预览：[/collapse]时间流逝[collapse status="false" title="点击打开查看"]将下面代码加到 /usr/themes/handsome/component/sidebar.php的放在 <?php endif; ?> 后面，大概150行左右 <?php _me("时间流逝") ?> 今日已经过去小时 这周已经过去天 本月已经过去天 今年已经过去个月 打开后台-更改外观-设置外观-开发者设置-复制代码粘贴至 自定义 CSS/* 时间流逝 开始 */ .sidebar-count .content { padding: 15px } .sidebar-count .content .item { margin-bottom: 15px } .sidebar-count .content .item:last-child { margin-bottom: 0 } .sidebar-count .content .item .title { font-size: 12px; color: var(--minor); margin-bottom: 5px; display: flex; align-items: center } .sidebar-count .content .item .title span { color: var(--theme); font-weight: 500; font-size: 14px; margin: 0 5px } .sidebar-count .content .item .progress { display: flex; align-items: center } .sidebar-count .content .item .progress .progress-bar { height: 10px; border-radius: 5px; overflow: hidden; background: var(--classC); width: 0; min-width: 0; flex: 1; margin-right: 5px } @keyframes…

评论显示评论者的基础信息
type: item
date: 2025-10-27T11:17:00+00:00
description: AI摘要 实现在评论显示评论者基础信息的插件下载和使用教程。 此内容根据文章生成，仅用于文章内容的解释与总结 效果预览实现步骤[collapse status="false" title="插件下载"]作者博客下载：点击前往本文下载：[hide]点击下载[/hide][/collapse]进入handsome/component/comments.php文件，找到82行，添加这条语句<?php UserAgent_Plugin::get_useragent($comments->agent,$comments->ip); ?>添加完成后启用插件，大概和下面配置差不多就好，可以按自己需求来最后刷新一下网站就可以看到了~

博客美化插件集锦
type: item
date: 2025-10-27T09:14:00+00:00
description: AI摘要 介绍一款轻量级插件，用于博客的访问层拦截及验证，防止恶意访问。 此内容根据文章生成，仅用于文章内容的解释与总结 前言最近觉得这个主题有点单调，所以想美化一下，找了一些喜欢的插件美化，所以顺便记录下来备用插件[scode type="yellow" size=""]所有下载下来的插件，解压后上传到你的博客根目录的 /usr/plugins 目录下，然后后台启用及配置插件[/scode]easywaf—访问层拦截及验证插件插件下载：[hide]插件下载[/hide]有两种验证方式，一个是滑动，一个是技术自动模式看自己喜欢的来，建议打开，不然每十分钟再进去都会弹（被攻击时不建议打开）HoerMouse—鼠标美化插件下载：[hide]插件下载[/hide]按自己喜欢的配置就好

文章添加AI摘要功能
type: item
date: 2025-10-27T08:15:00+00:00
description: AI摘要 文章介绍了如何在Typecho博客中安装和配置AISummary插件，实现文章自动生成摘要功能。 此内容根据文章生成，仅用于文章内容的解释与总结 准备工作首先先弄一个大模型的api Key，这边选的是Kimi，因为它送了15块的余额...，平台地址：Moonshot AI 开放平台Github下载AISummary插件，仓库地址：AISummary插件如果仓库打不开，就下载这个：[hide]点击下载[/hide]实现步骤安装把下载好AISummary插件解压，改名为AISummary，将插件文件夹上传至Typecho的/usr/plugins/目录进入Typecho后台 → 插件 → 启用AISummary插件配置模型名：moonshot-v1-auto（Kimi平台的自动选择模型）API KEY：你的Kimi API密钥（形如sk-xxxxxx）API 地址：https://api.moonshot.cn（注意不需要添加/v1）提示词的话有两种，看自己选择提示词1（详细版，耗钱一点） ：你的任务是生成文章的摘要。请你根据以下文章内容生成150字内的摘要，除了你生成的的摘要内容，请不要输出其他任何无关内容。摘要最大长度：160（建议留点空间）提示词2 （简略版，省钱一点）：你的任务是根据以下文章内容生成一句不超过50个字的简短摘要，只需概括文章主题或核心内容，不要包含具体步骤、教程过程、示例、链接或多余说明。除了摘要外，不要输出任何其他内容。摘要最大长度：60（建议留点空间）是否替换默认摘要：替换文章修改时更新摘要：启用正文摘要显示样式：使用自定义样式自定义样式 正文摘要前后固定文字 <path stroke="none" d="M0 0h24v24H0z" fill="none"></path> <path d="M3 10a4 4 0 0 1 4 -4h10a4 4 0 0 1 4 4v6a4 4 0 0 1 -4 4h-10a4 4 0 0 1 -4 -4v-6z" ></path> <path d="M8 3l2 3" ></path> <path d="M16 3l-2 3" ></path> <path d="M9 13v-2" ></path> <path d="M15 11v2" ></path> AI摘要 {{text}} 此内容根据文章生成，仅用于文章内容的解释与总结 存储字段名称：summary使用配置完成后，就可以使用了首先进入管理-摘要-管理Ai摘要使用要点：在插件配置好启用后，以前的文章是不会自动生成摘要的，需要在摘要管理里面手动生成，或者进入编辑文章后发布文章自动生成新文章只要发布就会自动生成摘要在摘要管理里面不要一下子手动生成太多的摘要，会导致后台卡死在配置里面的文章修改时更新摘要选择启用时，文章每次修改提交都会刷新摘要生成摘要后，刷新一下网站进入对应文章就可以看到了~，示例图如下：

博客信息添加在线人数
type: item
date: 2025-10-27T03:57:00+00:00
description: AI摘要 如何在博客侧边栏添加在线人数统计功能。 此内容根据文章生成，仅用于文章内容的解释与总结 效果预览位置在侧边栏的博客信息里面，效果图如下：实现步骤添加统计函数，在/usr/themes/handsome/functions.php文件的末尾添加/** * 在线人数统计函数 */ function online_users() { // 基本配置参数 $filename = 'online.txt'; // 数据文件路径，默认在网站根目录 $cookiename = 'Typecho_Online'; // Cookie名称，用于标识访客 $onlinetime = 30; // 在线有效时间（秒），超过此时间未活动则视为离线 // 读取在线用户数据文件 $online = file_exists($filename) ? file($filename) : array(); $nowtime = $_SERVER['REQUEST_TIME']; $nowonline = array(); // 清理过期的在线记录 foreach($online as $line) { $row = explode('|', $line); $sesstime = trim($row[1]); // 仅保留有效期内的记录 if(($nowtime - $sesstime) <= $onlinetime) { $nowonline[$row[0]] = $sesstime; } } // 处理当前访客的Cookie if(isset($_COOKIE[$cookiename])) { // 已有Cookie，获取访客ID $uid = $_COOKIE[$cookiename]; } else { // 无Cookie，生成新的唯一访客ID $vid = 0; do { $vid++; $uid = 'U'.$vid; } while(array_key_exists($uid, $nowonline)); // 设置Cookie，默认会话期有效 setcookie($cookiename, $uid); } // 更新当前访客的在线时间 $nowonline[$uid] = $nowtime; // 计算在线总人数 $total_online = count($nowonline); // 将更新后的数据写回文件 if($fp = @fopen($filename, 'w')) { if(flock($fp, LOCK_EX)) { // 获取独占锁 rewind($fp); foreach($nowonline as $fuid => $ftime) { $fline = $fuid.'|'.$ftime."\n"; @fputs($fp, $fline); } flock($fp, LOCK_UN); // 释放锁 } fclose($fp); } return $total_online; }在博客信息显示，在/usr/themes/handsome/component/sidebar.php文件中添加 <?php echo online_users() ?> <?php _me("在线人数") ?> 最后刷新一下网站就可以看到了~

评论增加表情包类别
type: item
date: 2025-10-24T09:55:00+00:00
description: AI摘要 博客增加表情包功能，提供QQ、抖音、哔哩哔哩、滑稽和微博等表情包类别，并附有详细配置源码和安装步骤。 此内容根据文章生成，仅用于文章内容的解释与总结 引言最近感觉博客有点单调，所以增加了一些喜欢的东西在里面配置表情包配置源码：[collapse status="false" title="QQ" color="block"]"QQ": { "name": "QQ", "type": "image", "container": [ { "icon": "aini", "text": "爱你" }, { "icon": "aixin", "text": "爱心" }, { "icon": "aoman", "text": "傲慢" }, { "icon": "baiyan", "text": "白眼" }, { "icon": "bangbangtang", "text": "棒棒糖" }, { "icon": "baojin", "text": "生气" }, { "icon": "baoquan", "text": "抱拳" }, { "icon": "bishi", "text": "鄙视" }, { "icon": "bizui", "text": "闭嘴" }, { "icon": "cahan", "text": "擦汗" }, { "icon": "caidao", "text": "菜刀" }, { "icon": "chi", "text": "吃" }, { "icon": "ciya", "text": "呲牙" }, { "icon": "dabing", "text": "大兵" }, { "icon": "daku", "text": "大哭" }, { "icon": "dan", "text": "蛋" }, { "icon": "deyi", "text": "得意" }, { "icon": "doge", "text": "doge" }, { "icon": "fadai", "text": "发呆" }, { "icon": "fanu", "text": "发怒" }, { "icon": "fendou", "text": "奋斗" }, { "icon": "ganga", "text": "尴尬" }, { "icon": "ganga", "text": "尴尬" }, { "icon": "gouyin", "text": "勾引" }, { "icon": "guzhang", "text": "鼓掌" }, { "icon": "haixiu", "text": "害羞" }, { "icon": "hanxiao", "text": "憨笑" }, { "icon": "haobang", "text": "好棒" }, { "icon": "haqian", "text": "哈欠" }, { "icon": "hecai", "text": "喝彩" }, { "icon": "hexie", "text": "河蟹" }, { "icon": "huaixiao", "text": "坏笑" }, { "icon": "jie", "text": "饥饿" }, { "icon": "jingkong", "text": "惊恐" }, { "icon": "jingxi", "text": "惊喜" }, { "icon": "jingya", "text": "惊讶" }, { "icon": "juhua", "text": "菊花" }, { "icon": "keai", "text": "可爱" }, { "icon": "kelian", "text": "可怜" }, { "icon": "koubi", "text": "抠鼻" }, { "icon": "ku", "text": "酷" }, { "icon": "kuaikule", "text": "快哭了" }, { "icon": "kulou", "text": "骷髅" }, { "icon": "kun", "text": "困" }, { "icon": "lanqiu", "text": "篮球" }, { "icon": "leiben", "text": "泪奔" }, { "icon": "lenghan", "text": "冷汗" }, { "icon": "liuhan", "text": "流汗" }, { "icon": "liulei", "text": "流泪" }, { "icon": "nanguo", "text": "难过" }, { "i…

分享一个在d2admin项目中强制https的方法
type: item
date: 2025-10-23T03:16:12+00:00
description: AI摘要 在d2admin项目中通过添加Content-Security-Policy元标签实现强制HTTPS调用。 此内容根据文章生成，仅用于文章内容的解释与总结 现在是跟随env文件配置的http来调用的在public目录下的index.html文件增加这句 添加完成后，再次调用可以看到已经转为https调用了