分类 网站前后端 下的文章 - Welcome to - 小枫的Blog
首页
留言墙
关于我
网站统计
友情链接
网站通知/变更日志
推荐
子辰API
子辰聊天室
Search
1
关于图片问题
65 阅读
2
hello world!
61 阅读
3
给你的网页添加动态背景😎
53 阅读
4
如何给自己的网站添加免费SSL?
46 阅读
5
换了新图床
44 阅读
typecho
闲聊杂谈
网站前后端
通知
登录
/
注册
找到
14
篇与
网站前后端
相关的结果
2025-01-13
为你的博客添加AI总结!
前提条件: 注册 https://www.xfyun.cn/ 访问 https://console.xfyun.cn/app/myapp 创建应用侧边栏选择 Spark Lite 复制 APIPassword 开始修改! 1. 在Jon主题目录下的 /module/single/ 创建AISummary.php内容为: <?php function AISummary($content) { $url = "https://spark-api-open.xf-yun.com/v1/chat/completions"; $data = [ "model" => "lite", "messages" => [ [ "role" => "user", "content" => $content . "\n\n\n\n为这篇文章做个不超过200字的总结" ] ] ]; $headers = [ "Authorization: Bearer 你的APIPassword", "Content-Type: application/json" ]; // 初始化cURL会话 $ch = curl_init($url); // 滚草泥马,不验证SSL证书 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data)); // 执行cURL请求 $response = curl_exec($ch); // 检查是否有错误 if (curl_errno($ch)) { echo 'cURL error: ' . curl_error($ch); } // 关闭cURL会话 curl_close($ch); $response = json_decode($response, true, 1024); return $response["choices"][0]['message']['content']; } ?> <div class="panel-b"> <div class="ai-summary-block"> <p><span class="typing-effect"><?= AISummary($this->content) ?></span></p> </div> <style> .typing-effect { white-space: nowrap; overflow: hidden; animation: typing 2s steps(40) forwards; } @keyframes typing { from { width: 0; } to { width: 100%; } } .panel-b { overflow-y: scroll; } </style> <script> document.addEventListener('DOMContentLoaded', function() { const typingElements = document.querySelectorAll('.typing-effect'); typingElements.forEach(element => { element.classList.remove('typing-effect'); const text = element.textContent; element.textContent = ''; let i = 0; const typingInterval = setInterval(() => { if (i < text.length) { element.textContent += text[i]; i++; } else { clearInterval(typingInterval); } }, 50); }); }); </script> </div> <div class="relative"> <div class="flex ac single-metabox abs-right"> <div class="post-metas"> <i class="fa fa-twitch" style="font-size: 1.0em; font-weight:bold;"></i> <item class="meta-comm">AI摘要</item> </div> </div> <i class="line-form-line"></i> </div>2. 还是在当前目录修改 article.php <article class="joe_detail__article" data-nav="posts"> <?php下面添加一行 require_once 'AISummary.php'; 添加完成!
网站前后端
# 网站美化
小枫_QWQ
4天前
0
7
0
2025-01-12
XQFUI - 轻量级响应式 UI 组件库
XQFUI是一个温暖而简约的CSS组件库,专为优雅舒适的视觉体验设计。采用金色和米黄色等柔和色调,实现自然与现代的平衡。适用于各种网站和应用场景。从按钮到卡片,从打字动画到响应式布局,XQFUI使界面既现代又温馨活力。
网站前后端
# 网站前端
小枫_QWQ
5天前
0
1
0
2024-09-15
给你的网页添加动态背景😎
Joe主题教程(仅适用于Joe主题,其他主题请根据实际情况调整) 0.0.1 准备工作 找到并打开站点目录中的 /usr/themes/Joe/assets/css/joe.mode.css 文件。 1.0.0 修改源码 更新 html {} 样式 将 --background: #fff; 修改为 --background: rgba(255, 255, 255, 0.8); 添加以下代码: /* 背景动效实现逻辑 */ --gradation: linear-gradient(270deg, #a8e6cf, #dcedc1, #ffd3b6, #ffaaa5, #ff8b94); 更新 html[data-night='night'] body {} 样式 添加: --gradation: #323335; 1.1.0 完成初步修改 保存并关闭文件。 如果修改后不生效,请编辑 /usr/themes/Joe/module/head.php 文件,找到 assets/css/joe.mode.css,在路径后加上一个问号,例如:assets/css/joe.mode.css?。 2.0.0 自定义CSS设置 打开主题设置。 找到插入代码的选项。 添加以下自定义CSS: @keyframes GradientAnimation { 0% { background-position: 0% 50%; } 50% { background-position: 100% 50%; } 100% { background-position: 0% 50%; } } body { font-family: 'Arial', sans-serif; background: var(--gradation); background-size: 1000% 1000%; animation: GradientAnimation 15s ease infinite; } 保存设置,200 OK。 3.0.0 完成 一切设置完毕! ::(酷)
网站前后端
# 网站美化
# 网站前端
# typecho
小枫_QWQ
1年前
5
53
3
2024-08-14
PHP获取用户IP
在现代Web开发中,获取用户的真实IP地址对于日志记录、安全审查以及基于地理位置的服务至关重要。然而,由于代理服务器和CDN的存在,直接使用 $_SERVER['REMOTE_ADDR'] 可能无法获取到准确的IP地址。本文介绍了一种通过检查 HTTP_CLIENT_IP、HTTP_X_FORWARDED_FOR 和 REMOTE_ADDR,并使用 filter_var 进行验证的方法,帮助开发者精准获取用户的真实IP地址。
网站前后端
# php
# 网站前端
小枫_QWQ
1年前
0
32
1
2024-06-24
php的三元运算符?:和??
(expr1) ? (expr2) : (expr3) : 表达式 (expr1) ? (expr2) : (expr3) 在 expr1 求值为 TRUE 时的值为 expr2,在 expr1 求值为 FALSE 时的值为 expr3。 其中false的值的判断跟 if (expr1)一样,包括空字符串 '' false 为空empty null 0 0.0 ‘0’ 例子: $a = $a ? $a : 1;(expr1) ? :(expr2) :这个是php5.3开始才有的功能 在 expr1 求值为 TRUE 时返回 expr1,否则返回 expr2。 例子 $a = $a ?: 1;它等价于1的例子 (expr1) ? ?(expr2) :这个是php7才有的功能 它等价于 $a = isset(expr1) ? expr1 : expr2 $b = isset($a) ? $a : 1; 原文链接:https://blog.csdn.net/qq_29763583/article/details/81131985
网站前后端
# php
小枫_QWQ
1年前
0
25
0
2024-02-03
删除Joe再续前缘导航栏黑夜模式小猫
找到主题目录module/header.php 第11行这个svg直接删除 修改assets/css/joe.mode.css 删除 第57行 清空缓存刷新页面,完成
网站前后端
# 网站美化
# typecho
小枫_QWQ
1年前
0
39
1
2023-09-14
PHP PDO 中bindParam和bindValue区别
在 PHP PDO(PHP Data Objects)中,bindParam 和 bindValue 是用于绑定参数的两个方法。
网站前后端
# php
# 网站后端
小枫_QWQ
2年前
0
22
1
2023-07-24
留言墙功能模块-文本过滤函数
代码功能解析:脏话处理函数 在开发网络应用程序或社交平台时,处理用户输入是一项重要的任务。而在处理用户输入时,经常会遇到包含一些不当言辞或敏感词汇的情况。为了维护良好的用户体验和网络环境,我们需要对这些不当言辞进行过滤和替换。 下面的代码段是一个简单的文本处理函数,它通过读取当前目录的bad_words.txt文件。 function filter_bad_words($input) { //1. $filename = 'bad_words.txt'; //2. $bad_words = file($filename, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES); //3. $filtered_input = $input; //4. foreach ($bad_words as $bad_word) { $replacement = str_repeat('*', mb_strlen($bad_word, 'UTF-8')); //5. $filtered_input = str_ireplace($bad_word, $replacement, $filtered_input); //6. } return $filtered_input; //7. }1.首先,函数定义了一个名为 filter_bad_words 的方法,该方法接受一个字符串类型的参数 $input,即用户输入的内容。 2.接下来,函数内部声明了一个变量 $filename,用于存储存储不当言辞列表的文件的路径。文件名为 bad_words.txt,你可以根据实际情况修改此变量以指向正确的文件路径。 3.使用 file 函数,代码将读取存储在 bad_words.txt 文件中的不当言辞,并将其存储在变量 $bad_words 中。FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES 标记告诉 file 函数忽略文件中的换行符和空行。 4.接下来,代码初始化了一个变量 $filtered_input,并将其赋值为用户输入 $input。该变量将用于存储经过过滤后的用户输入内容。 5.函数使用循环遍历 $bad_words 数组,并对每个不当言辞进行处理。在循环体内,代码使用 str_repeat 函数生成一个与不当言辞长度相同的由星号组成的字符串 $replacement,用于替换不当言辞,这里的 * 可以替换为其他字符但是我建议是*。 6.最后,代码使用 str_ireplace 函数将 $bad_word 替换为 $replacement,并更新 $filtered_input 的值。这里使用了 str_ireplace 函数来实现不区分大小写的替换。 7.循环结束后,函数将返回经过脏话过滤后的 $filtered_input 变量作为结果。 该函数实现了简单而有效的文本过滤功能,可以帮助网站或应用程序自动识别和屏蔽用户输入中的不当言辞,提升用户体验和网络环境的健康度。当然,为了保持过滤列表的有效性,我们需要定期更新存储不当言辞的文件。同时,该函数也可以根据实际需求进行扩展和优化,以满足更复杂的过滤需求。
网站前后端
# php
# 网站后端
小枫_QWQ
2年前
0
13
2
2023-07-11
CSS em/px/rem/vh/vw 区别
em/px/rem/vh/vw 都属于 css 的单位,这些单位可以分为相对单位、绝对单位 px:绝对单位,网页按照精确像素来显示. em:相对单位,相对自身定义的 font-size 来计算,自身没有设置字体大小,相对父元素的字体大小 rem:相对单位,相对根元素 html 的字体大小来计算 vw/vh:相对视口大小布局,把屏幕平均划分为 100 等份. 一、介绍 传统的项目开发中,我们只会用到px、 % 、em这几个单位,它可以适用于大部分的项目开发,且拥有比较良好的兼容性 从CSS3开始,浏览器对计量单位的支持又提升到了另外一个境界,新增了rem、vh、vw、vm等一些新的计量单位 利用这些新的单位开发出比较良好的响应式页面,适应多种不同分辨率的终端,包括移动设备等 二、单位 在css单位中,可以分为长度单位、绝对单位,如下表所指示 相对长度单位 em、ex、ch、rem、vw、vh、vmin、vmax、% 绝对长度单位 cm、mm、in、px、pt、pc 下面我详细讲述一下 px、em、rem、vh、vw px px,表示像素,所谓像素就是呈现在我们显示器上的一个个小点,每个像素点都是大小等同的,所以像素为计量单位被分在了绝对长度单位中 有些人会把px认为是相对长度,原因在于在移动端中存在设备像素比,px实际显示的大小是不确定的 这里之所以认为px为绝对单位,在于px的大小和元素的其他属性无关 em em 是相对长度单位。相对于当前对象内文本的字体尺寸。如当前对行内文本的字体尺寸未被人为设置,则相对于浏览器的默认字体尺寸(1em = 16px) 为了简化 font-size 的换算,我们需要在css中的 body 选择器中声明font-size= 62.5%,这就使 em 值变为 16px*62.5% = 10px 这样 12px = 1.2em, 10px = 1em, 也就是说只需要将你的原来的px 数值除以 10,然后换上 em作为单位就行了 特点: em 的值并不是固定的 em 会继承父级元素的字体大小 em 是相对长度单位。相对于当前对象内文本的字体尺寸。如当前对行内文本的字体尺寸未被人为设置,则相对于浏览器的默认字体尺寸 任意浏览器的默认字体高都是 16px 举个例子 <div class="big"> 我是14px=1.4rem <div class="small">我是12px=1.2rem</div> </div>样式为 <style> html{ font-size: 10px; /* 公式16px*62.5%=10px */ } .big{ font-size: 1.4rem } .small{ font-size: 1.2rem } </style>这时候.big元素的font-size为 14px,而.small元素的font-size为 12px rem rem,相对单位,相对的只是 HTML 根元素font-size的值 同理,如果想要简化font-size的转化,我们可以在根元素html中加入font-size: 62.5% <style> html{ font-size: 62.5%; /* 公式16px*62.5%=10px */ } </style>这样页面中 1rem=10px、1.2rem=12px、1.4rem=14px、1.6rem=16px;使得视觉、使用、书写都得到了极大的帮助 特点: rem 单位可谓集相对大小和绝对大小的优点于一身 和 em 不同的是 rem 总是相对于根元素,而不像 em 一样使用级联的方式来计算尺寸 三、总结 1.px:绝对单位,页面按精确像素展示 2.em:相对单位,基准点为父节点字体的大小,如果自身定义了font-size按自身来计算,整个页面内1em不是一个固定的值 3.rem:相对单位,可理解为root em, 相对根节点html的字体大小来计算 vh、vw:主要用于页面视口大小布局,在页面布局上更加方便简单
网站前后端
# 网站美化
# 网站前端
小枫_QWQ
2年前
0
19
1
2023-06-20
二进制转换工具
废话不多说直接上代码 <!DOCTYPE html> <html lang="zh-cn"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>二进制互转工具</title> <!-- 引入 layui.css --> <link href="https://unpkg.com/layui@2.8.0/dist/css/layui.css" rel="stylesheet"></link> <!-- 引入 layui.js --> <script src="https://unpkg.com/layui@2.8.0/dist/layui.js"></script> <!--引入jquery--> <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.min.js"></script> <style type="text/css"> body { font-family: Arial, sans-serif; margin: 0; padding: 0; background-color: cornsilk; } .container { display: flex; flex-direction: row; } .column { flex-basis: 50%; padding: 20px; } textarea { width: 100%; height: 200px; resize: none; border: 1px solid #ccc; padding: 10px; font-size: 16px; } button { background-color: #4CAF50; color: white; border: none; padding: 10px; text-align: center; text-decoration: none; display: inline-block; font-size: 16px; margin: 4px 2px; cursor: pointer; } .title { text-align: center; } .copy { background-color: #008CBA; } .clear { background-color: #f44336; } </style> <script> function convertToBinary() { let input = document.getElementById("input").value.trim(); if(input) { // 将文本转换为二进制 let binary = ""; for(let i = 0; i < input.length; i++) { let charCode = input.charCodeAt(i).toString(2); while(charCode.length < 8) { charCode = "0" + charCode; } binary += charCode + " "; } // 显示二进制 document.getElementById("output").value = binary.trim(); } else { alert("请输入文本或二进制"); } } function convertToText() { let input = document.getElementById("input").value.trim(); if(input) { // 将二进制转换为文本 let text = ""; input.split(" ").forEach(function(binary) { let charCode = parseInt(binary, 2); text += String.fromCharCode(charCode); }); // 显示文本 document.getElementById("output").value = text; } else { alert("请输入文本或二进制"); } } //一键复制 function copyOutput() { let output = document.getElementById("output"); output.select(); document.execCommand("copy"); alert("已复制到剪贴板"); } //一键清除 function clearInput() { document.getElementById("input").value = ""; } //一键粘贴 function pasteFromClipboard() { navigator.clipboard.readText() .then(text => { $("#input").val(text.trim()); }) .catch(err => { console.error('Failed to read clipboard contents: ', err); }); } </script> </head> <body> <h1 class="title">在线二进制转文本文本转二进制转换器</h1> <div class="container"> <div class="column"> <h2 style="text-align: center;" >输入</h2> <textarea id="input" placeholder="在此处输入文本或二进制,每隔8位空一格,CTRL+Z撤销~"></textarea> <div class="layui-btn-container"> <button class="layui-btn" onclick="convertToBinary()">转换为二进制</button> <button class="layui-btn" onclick="convertToText()">转换为文本</button> <button class="layui-btn layui-btn-danger" onclick="clearInput()">清除</button> <button class="layui-btn" onclick="pasteFromClipboard()">粘贴</button> </div> </div> <div class="column"> <h2 style="text-align: center;" >输出</h2> <textarea id="output" placeholder="此处是输出框哦!可以自由复制或点击下面的一键复制~" ></textarea> <button class="layui-btn layui-btn-normal" onclick="copyOutput()">复制</button> </div> </div> </body> </html> 预览: 也可以点击此链接
网站前后端
# 网站前端
小枫_QWQ
2年前
0
13
2
1
2
下一页
易航博客