
php
文章平均质量分 67
wwwarewow
这个作者很懒,什么都没留下…
展开
-
ThinkPHP中文字段问题
转自:https://www.baidu.com/link?url=Ohc9epgQgkNYLwnHqP-jZ9RfIQWW50-iz8-ZMIPLdtCIJHnUpYwQnDLmXzi7Fa110o_fej06HBQC2fJpNwXLP_&wd=&eqid=e71449f60000ca22000000025dfb2fc9Thinkphp5 PDO操作mysql预处理中文字段出错问题今天发现中文字出问题的地方了$pdo = new PDO('mysql:host=localhost;dbname翻译 2022-06-19 00:01:11 · 950 阅读 · 0 评论 -
thinkphp 应用模式
应用模式提供了对核心框架进行改造的机会,可以让你的应用适应更多的环境和不同的要求。每个应用模式有自己的模式定义文件,用于配置当前模式需要加载的核心文件和配置文件,以及别名定义、行为扩展定义等等。根据模式定义文件的定义位置和入口是否需要定义模式,可以分为显式应用模式和隐含应用模式。显式应用模式的模式定义文件位于目录,如果我们要增加一个应用模式,只需要在该目录下面定义一个模式定义文件即可,下面是一个典型的模式定义文件(lite.php):我们在ThinkPHP/Mode/Lite目录下面创建函数库文件,以及、、转载 2022-06-18 23:56:54 · 159 阅读 · 0 评论 -
ThinkPHP5数据库操作
ThinkPHP5中数据库在中配置,需要数据库操作时自己完成连接,也可以在中动态地传入字符串或数组类型的数据库连接信息。类使用前需先声明引用 db助手插入数据更新数据事务单表事务比如表,所有事务都是在内,定义好了模型,,则可以这么操作:多表事务如果事务涉及多张表,则上面的方法就不管用了,需要这么写......转载 2022-06-18 23:51:34 · 821 阅读 · 0 评论 -
FastAdmin表格自定义操作按钮
FastAdmin表格自定义操作,是通过自己在页面上添加操作按钮,监听按钮点击事件来实现。操作按钮针对所有行记录,而不是在每行的操作上都添加上按钮。效果图步骤编辑下控制器对应的首页模板文件,在常规操作 等处添加类似行,示例2. 监听按钮点击事件编辑 下控制器对应的JS文件,在行 下面添加如下代码:请求后台控制器的action有两种方式,上面的代码是采用jQuery AJAX的方法,控制器中相应的添加方法来处理请求,这种方式优点缺点其中提示信息的显示可用layer,也可以用Toastr,后转载 2022-06-18 23:47:15 · 4592 阅读 · 0 评论 -
解决app端微信支付报-1问题--MUI
最近在用MUI开发APP的过程中,在微信支付问题上卡了一下,老是报-1的错误,百度了好多也没有找到解决办法。现将个人解决方法进行分享,此方法也适用于非MUI开发的APP:首先,准备工作要做好,要保证:1、menifest.json中配置了微信的appid2、服务端请求prepareid正确返回;3、服务端返回数据格式与官方一致:4、android版云打包,数字签名,与微信开放平台配置一致(不会的用百度);这四个要保证一、确保APP端代码没有问题先保证用官方的基座然后模拟器测试,可以正常调起微信支转载 2022-06-17 14:50:07 · 475 阅读 · 0 评论 -
thinkphp5 关于跨域的一些坑,附上解决办法(比较全面了)
前几天写过一次,然后被管理员移出首页了,原因是写的不好。。。。哈哈确实也不好,而且我按我自己的博客来重新操作,发现。。。还有有跨域问题!,惭愧惭愧,而且当我重新在百度搜索的时候发现,,,我这文章竟然显示在第一条。。。为了不误人子弟,经过各种查找各种搜索,现重新整理出跨域解决方案,我觉得应该是市面上比较详细的了吧,开始:项目背景:前端是uniapp开发的h5,后端是tp5,其他语言我觉得应该大同小异,主要是思路,本文就以这俩为例吧1、首先在tp5的入口文件:public/index.php 在里面添加三行:1转载 2022-06-17 14:47:26 · 4544 阅读 · 0 评论 -
ThinkPHP5中,模板、控制器、JavaScript的url跳转重定向方法
php控制器中的跳转:1,header()函数是PHP中进行页面跳转的一种十分简单的方法。主要功能是将HTTP协议标头(header)输出到浏览器。2,tp5的助手函数 url();注:在tp的老版本是U()3,tp5的三种跳转和项目无关的跳转,一般用header()JavaScript中的跳转1, 普通跳转 location.href="https://www.baidu.com/";2,页面的后退3,跳转(弹出新窗口) window.open("https://w转载 2022-06-17 10:32:52 · 2060 阅读 · 0 评论 -
为fastadmin添加重置搜索和批量录入按钮
一.搜索的逻辑1.首先增加一个搜索a标签,class命名为chongzhi2.熟悉搜索的逻辑,所有的tab,所有的jstree都是,通过给通用搜索,传递值,才引起了下面表格的变化.3.我把js代码写在了backend.js的init里,类似于写在原型上,这样很多模块的js都能使用二.弹窗的逻辑首先熟悉 require-table.js,把代码折叠起来,这样更方便鸟瞰整个js查看整个JS发现,其实,整个是对象的方式,存储了一些函数。并且是分类存储,这样让整个JS显的十分有序。那么!我们猜一猜,追转载 2022-06-17 10:18:24 · 996 阅读 · 0 评论 -
【Mysql】is、between、in运算符用法
is 运算符:有4种情况的使用:xx is null:判断某个字段是“null”值——就是没有值, xx is not null:判断某个字段不是“null”值xx is true:判断某个字段为“真”(true)xxis false:判断某个字段为“假”(false)所谓布尔值,其实是tinyint(1)这个类型的一个“别名”,本质上,只是判断一个数字是否为0 between运算符:语法: in运算符: 表示字段XX的值为所列出的这些值中的一个,就算是涡足了条件﹔这些值,通常是零散无规律的。原创 2022-06-14 17:41:57 · 1614 阅读 · 0 评论 -
laravel事件监听和Job的区别
Jobjob 是异步执行。适用于长时间执行任务,适合耗时长的任务。例如,批量发送邮件,短信。关注重点是正在处理的事情。 操作正在进行…如果你想延迟执行一个操作,或者这个过程需要花费一段时间,那么就可以选择用Job,例如上传一个比较大的文件。Job一般用在正在处理的事情。比如我们去银行办理业务,很多人排队等待,我们可以把这条队看成一个队列queue,把每一个人看成一个Job,服务人员会帮我们一个接一个的处理业务。办完了一个业务,系统会叫号叫到下一个人,执行下一个Job。每个人需要办理的业务都不一样,这就是每个原创 2022-06-14 12:39:41 · 368 阅读 · 0 评论 -
我收藏的thinkphp扩展插件
数据库验证和权限控制模板引擎调试工具IDE提示、注解社会化登录短信、邮件和消息队列、任务短网址、分词、采集工具类库其它原创 2022-06-14 10:10:57 · 1103 阅读 · 0 评论 -
为什么要在 Swoole 上运行 Laravel?
为什么要在 Swoole 上运行 Laravel?因为使用 Swoole 可以加速 Laravel 应用。下面本篇文章就来带大家聊聊怎么在Swoole上使用Laravel,希望对大家有所帮助!Swoole 是为 PHP 开发的生产级异步编程框架。 他是一个纯 C 开发的扩展, 他允许 PHP 开发者在 PHP 中写 高性能,可扩展的并发 TCP, UDP, Unix socket, HTTP, WebSocket 服务, 而不需要拥有太多的非阻塞 I/O 编程和低级别的 Linux 内核知识。 你可以把翻译 2022-06-12 12:01:40 · 406 阅读 · 0 评论 -
laravel cms有哪些
什么是cms?cms全称“content management system”,中文意思为“内容管理系统”,是一种位于WEB前端(Web 服务器)和后端办公系统或流程(内容创作、编辑)之间的软件系统。内容的创作人员、编辑人员、发布人员使用内容管理系统来提交、修改、审批、发布内容。这里指的“内容”可能包括文件、表格、图片、数据库中的数据甚至视频等一切你想要发布到Internet、Intranet以及Extranet网站的信息。内容管理还可选地提供内容抓取工具,将第三方信息来源,比如将文本文件、HTML网页、W翻译 2022-06-12 09:43:30 · 1210 阅读 · 0 评论 -
laravel函数有哪些
数组类型函数如果给定的键不存在于该数组,array_add 函数将给定的键值对加到数组中将数组的每一个数组折成单一数组3、array_divide函数返回两个数组,一个包含原本数组的键,另一个包含原本数组的值4、array_dot把多维数组扁平化成一维数组,并用「点」式语法表示深度5、array_except从数组移除给定的键值对6、array_first返回数组中第一个通过为真测试的元素7、array_flatten将多维数组扁平化成一维8、a原创 2022-06-11 23:59:36 · 1060 阅读 · 0 评论 -
Laravel中的permission权限管理的扩展包
举个例子,例如我们平常使用的论坛站长 ------ 拥有最高权限,最主要的是能够对用户进行管理的权限管理员 ----- 对一些文章的管理,不会造成对网站有较大的影响vip ----- 对一些资源有下载权限普通用户 ---- 只能够进行简单的对自己文章的增删改、评论等游客 ---- 只能进行基本的浏览 我们来梳理一下关联关系权限(permissions)与 角色(roles) ,一个 权限 可能被多个 角色 拥有,一个 角色 可能有多个 权限,关联关系:多对多(role_has_permissions)用户翻译 2022-06-10 10:22:07 · 484 阅读 · 0 评论 -
laravel5.4中软删除是什么
软删除并不是真的从数据库中删除掉了, 而是在表中以deleted_at(这个字段的名称也是固定的)这个字段值标识的, 需要在设计表的时候呢添加这个字段 deleted_at, 默认值为null,所谓软删除指的是数据表记录并未真的从数据库删除,而是将表记录的标识状态标记为软删除,这样在查询的时候就可以加以过滤,让对应表记录看上去是被”删除“了。Laravel中使用了一个日期字段作为标识状态,这个日期字段可以自定义,这里我们使用deleted_at,如果对应模型被软删除,则deleted_at字段的值为删除时间翻译 2022-06-09 23:38:55 · 461 阅读 · 0 评论 -
laravel中5.0和5.1有什么区别
Laravel 5.1 为TLS版本,TLS为长期支持版本,提供3年的安全补丁支持。可以简单的理解为5.0是测试版,5.1是正式版。Laravel 5.1更新区别如下:Laravel 5.1,将会提供两年的bug修复和三年的安全修复支持1.“开箱即用”的[授权]支持2.使用简单的回调或策略类即可方便地管理应用的授权逻辑3.将登录次数限制引入框架4.事件广播5.中间件参数6.测试革新7.模型工厂8.Artisan优化9.目录结构app/Commands目录被重命名为app/Jobs,app/Handlers被原创 2022-06-09 22:05:15 · 296 阅读 · 0 评论 -
laravel中guard是什么
其实无论是Guard还是Provide,你都可以理解为。某个特定功能的插件。他的作用是处理一个认证,来判断每个请求、调用是否是登录过,或者允许通过的,什么是Guard在Laravel/Lumen框架中,用户的登录/注册的认证基本都已经封装好了,开箱即用。而登录/注册认证的核心就是:用户的注册信息存入数据库(登记)从数据库中读取数据和用户输入的对比(认证)上述两步是登录/注册的基本,可以看到都会涉及到数据库的操作,这两步框架底层已经帮我们做好了,而且考虑到了很多情况,比如用户认证的数据表不是user表而是ad翻译 2022-06-09 13:07:11 · 733 阅读 · 0 评论 -
laravel的依赖注入和控制反转是什么
1、依赖注入依赖注入一词是由 Martin Fowler 提出的术语,它是将组件注入到应用程序中的一种行为。就像 Ward Cunningham 说的:依赖注入是敏捷架构中关键元素。例子:如果你要测试或者维护这个类,你必须访问数据库的实例来进行一些查询。为了避免必须这样做,你可以将此类与其他类进行 解耦 ,你有三个选项之一,可以将 Connection 类注入而不需要直接使用它。2、控制反转控制反转(Inversion of Control,缩写为IoC),是面向对象编程中的一种设计原则,可以用来减低原创 2022-06-09 08:28:55 · 917 阅读 · 0 评论 -
9个杀手级的PHP项目,快来收藏使用
PHP发展了这么多年,有许多有趣的项目。让我们摆脱那些讨厌的增删改查,一起来了解这些有趣的项目。php-ml是一个使用PHP实现的机器学习库,包含算法、神经网络、交叉验证、预处理、特征提取等人工智能领域中常用的功能方案。官方还提供了众多的案例,比如:检测语言分类MNIST 识别手写字体(标准的人工智能入门项目)垃圾邮件过滤文章分类预测葡萄酒的质量php-ml有一个完善的文档,并且有丰富的博客文章。但是这已经是人工智能的领域了,你的知识结构可能一时半会还利用不了。简单地用法如下:2、rindow/rin翻译 2022-06-05 22:08:45 · 3655 阅读 · 0 评论 -
PHP函数及作用域知识详解
基本语法如下:定义函数的目的:是为了实现代码的重复利用,一个功能一个函数(简单明了)。 函数是在代码执行阶段,碰到函数名字的时候才会调用,不是在编译阶段。函数的调用特点:只要系统在内存中能够找到对应的函数,就可以执行(函数的调用可以在函数定义之前)函数执行的内存分析: 注意:默认值的定义是放在最右边的(多个),不能左边形参有默认值,但是右边没有函数外部定义的变量名字与函数定义的形参名字冲突(同名)是没有任何关联关系的;如果多个函数使用同样的形参名字也不冲突。 思考:两者对比,为翻译 2022-06-05 21:47:55 · 752 阅读 · 0 评论 -
深入了解PHP反序列化原生类
如果在代码审计或者ctf中,有反序列化的功能点,但是却不能构造出完整的pop链,那这时我们应该如何破局呢?我们可以尝试一下从php原生类下手,php有些原生类中内置一些魔术方法,如果我们巧妙构造可控参数,触发并利用其内置魔术方法,就有可能达到一些我们想要的目的。1234567891011我们采用下面脚本遍历一下所有原生类中的魔术方法 Error/ExceptionError 是所有PHP内部错误类的基类。 (PHP 7, 8)**Error::__toString ** error 的字符串表达返回翻译 2022-06-05 19:31:04 · 1586 阅读 · 0 评论 -
PHP实现sha-256哈希算法
哈希 又称作 “散列”,它接收任何一组任意长度的输入信息,通过 哈希 算法变换成固定长度的数据指纹,该指纹就是 哈希值。总体而言,哈希 可理解为一种消息摘要。在 PHP 中有这个函数 hash(),可以计算字符串的哈希值,出于好奇我 Google 了一下哈希计算的具体步骤,并使用 PHP 编写了一套计算 sha-256 哈希值的代码。当然除了 sha-256 以外还有一些别的哈希算法,只是目前 sha-256 用的多一些。下面是目前 美国国家标准与技术研究院 发布哈希算法:在编写过程中我主要参考了以下文档和原创 2022-06-04 22:43:42 · 7847 阅读 · 0 评论 -
微信公众号网页授权多域名解决方案
实现微信授权域名中转实例在中转域名www.test.com目录下新建index.php,test1.php,test2.php三个文件在index.php中编写发起授权代码在test1.php中编写获取授权信息并跳转业务地址(www.test1.com)在test2.php中编写获取授权信息并跳转业务地址(www.test2.com)根据如上方式就可以实现微信授权域名中转访问 www.test1.com 站点时只需访问 www.test.com?type=test1 即可访问 www.翻译 2022-06-04 09:51:57 · 3614 阅读 · 0 评论 -
PHP调试之回溯跟踪
在我们调试程序过程中,往往可能会出现需要回溯跟踪一个方法,这里我就介绍两个比较不错的PHP函数,也是我经常使用的。这两个看起来有点相似,其实功能也是差不多的,下面我就以一个简单的例子向大家演示下他们的使用。下面是运行结果:结合代码不难看出,他们着重返回结果集,拆分结构;另一个着重按调用顺序打印出回溯跟踪。内容就这么多,结果一目了然,其他自己测试下就明了了。PHP有些方法还是挺不错的,大家平时可以多看看手册。下面放了他们两的官方链接,有兴趣的可以点击详细看看。debug_backtrace翻译 2022-06-03 23:38:01 · 235 阅读 · 0 评论 -
php实现pdf转图片
参考:PHP的Imagick拓展安装三:Ghostscript软件安装1:Ghostscript下载地址:Ghostscript下载地址2:安装Ghostscript3:配置Ghostscript修改/etc/ImageMagick-6/policy.xml文件(1):将pattern="{PS,PDF,XPS}"这行修改成 (2):将pattern="PDF"修改成四:实现pdf转图片实例$pdfPath = 'XXX';//PDF地址$pdfToImg = new \翻译 2022-06-03 23:14:51 · 2744 阅读 · 1 评论 -
php 生成条形码(支持任意php框架)
一:插件安装在php中我们可以使用php-barcode-generator插件来生成条形码,php-barcode-generator插件github地址:GitHub - picqer/php-barcode-generator: Barcode generator in PHP that is easy to use, non-bloated and framework independent.二:php-barcode-generator插件简单使用1:例:根据如上就可以实现条形码的生成原创 2022-06-03 22:42:51 · 3404 阅读 · 0 评论 -
PHP 实现压缩解压操作
在php中,有时我们需要使用到压缩文件操作,压缩文件可以节省磁盘空间;且压缩文件更小,便于网络传输,效率高,下面我们就来了解php的压缩解压相关操作在PHP中有一个ZipArchive类,专门用于文件的压缩解压相关操作在ZipArchive类中主要使用到了如下方法:第一个参数:要打开的压缩包文件第二个参数:ZIPARCHIVE::OVERWRITE 总是创建一个新的文件,如果指定的zip文件存在,则会覆盖掉ZIPARCHIVE::CREATE 如果指定的zip文件不存在,则新建一个ZIPARCHIVE原创 2022-06-03 22:09:03 · 679 阅读 · 0 评论 -
php之curl实现http与https请求的方法
本文实例讲述了php之curl实现http与https请求的方法,分享给大家供大家参考。具体如下:通常来说,php的curl函数组可以帮助我们把机器伪装成人的行为来抓取网站,下面来分享两个例子,一个是访问http网页,一个访问https网页,一起来看一下。每次要使用curl的时候,总要查一堆资料。现在将常用的几句保存下来,省的每次都去谷歌。使用curl请求HTTPS:注意当请求https的数据时,会要求证书,这时候,加上下面这两个参数,规避ssl的证书检查复制代码 代码如下:原创 2022-06-03 21:18:05 · 2166 阅读 · 0 评论 -
图片验证码生成及常见库
这种可能会被软件破解识别。可以加一些颜色或者线条的混淆来 降低识别率来,一定程度上防止被破解。以下采集了来自网络上常用的验证码库:Java验证码生成库 JCaptchaStruts验证码插件 JCaptcha4Struts2Java图形验证码 SimpleCaptchaJava验证码 kaptchaJava验证码 patchcaJava验证码生成库 imageRandomiCaptchaJava图片验证库SkewPassImageJava 验证码 CagePython pycaptPHP翻译 2022-06-01 09:27:05 · 1140 阅读 · 0 评论 -
怎样用 PHP 来实现枚举
在实际开发过程中我们非常容易接触到枚举类型,但是又因为 PHP 原生对枚举的支持不是太好,所以很多时候 开发人员并没有重视枚举的使用,而是使用全局常量或者类常量代替,而这两个数据原则上还是 并不能用来做类型判断。等等 ,很多时候我们都会用简单的 1/2/3/4 或者0/1 这样的方式去代表,然后在文档或者注释中规定这些东西。更高级一点儿的就是定义成常量,然后方便统一存取,但是常量的值还是是字符串,无法进行类型判断。这里就要看一下 PHP 对枚举的支持,虽然 PHP 对枚举没有完美的支持,但是在 SPL 中翻译 2022-06-01 09:13:48 · 446 阅读 · 0 评论 -
API 接口调用怎么做登录的图片验证码
在传统的 Web 开发过程中,处理图形验证码很简单,只需要在后台用随机字符串生成一个图片,将验证码内容放进 Session 即可,用户提交表单时从 Session[1] 取出判断即可。但是现如今,越来越推崇 API 交互,无状态,在 Session 这一块,虽然默认配置是不支持了,但是还是有很多曲线救国的方法。在 API 开发中,我们也可以给前端签发 SessionID ,并且通过 PHP 的内置方法,来实现这一切。比如 我们与前段约定,当在请求中包含有 ,且不为空时,表示这个会话已经注册过 Sessi翻译 2022-06-01 08:56:33 · 1715 阅读 · 0 评论 -
PHP高并发情况下防止商品库存超卖
商城系统中,抢购和秒杀是很常见的营销场景,在一定时间内有大量的用户访问商场下单,主要需要解决的问题有两个:1. 高并发对数据库产生的压力;2. 竞争状态下如何解决商品库存超卖;高并发对数据库产生的压力对于第一个问题,使用缓存来处理,避免直接操作数据库,例如使用 Redis。竞争状态下如何解决商品库存超卖对于第二个问题,需要重点说明。常规写法:查询出对应商品的库存,判断库存数量否大于 0,然后执行生成订单等操作,但是在判断库存是否大于 0 处,如果在高并发下就会有问题,导致库存原创 2022-05-30 17:42:53 · 881 阅读 · 0 评论 -
PHP获取下周几日期的方法
获取下周几日期的方法:1、使用“strtotime("next 指定星期")”语句获取下周指定星期的时间戳;2、使用“date("Y-m-d",时间戳)”语句将获取的时间戳转换为日期,并使用echo输出即可。PHP获取下周几日期的方法:新建一个php文件,命名为test.php,用于讲解php如何获取下个星期四的日期。在test.php文件中,使用header()方法设置页面的编码格式为utf-8,避免页面输出中文时乱码。在test.php文件中,以“next+星期”的格...转载 2022-05-29 20:11:22 · 861 阅读 · 0 评论 -
php 两种方法 去掉指定字符之后的内容
两种方法:1、用“substr_replace($str,"",strpos($str,"指定字符")+1)”语句,将指定字符位置后的内容替换为空字符;2、用“substr($str,0,strpos($str,"指定字符")+1)”语句。php去掉指定字符之后内容的两种方法方法1:利用strpos()和substr_replace() 函数 利用strpos()找到指定字符的位置,例字符d 使用substr_replace()将指定字符后的内容替换为空字符 s..转载 2022-05-29 18:12:32 · 2166 阅读 · 0 评论 -
php时区转换函数详解
函数有2个:1、ini_set(),语法“ini_set('date.timezone','标识符)”;2、date_default_timezone_set(),语法“date_default_timezone_set('标识符')”。php时区转换函数有两个: ini_set() 函数 date_default_timezone_set() 函数 1、使用 ini_set() 函数设置时区PHP 中的 ini_set() 函数可以通过设置“date.timezon.转载 2022-05-28 21:29:26 · 1180 阅读 · 0 评论 -
php将数组里所有元素转成字符串
转换方法:1、利用foreach语句通过引用循环的方式来遍历数组,语法“foreach ($array as &$v){//循环体}”;2、在循环体中,使用strval()将数组元素“$v”转为字符串,语法“$v=strval($v);”。php将数组里所有元素转成字符串的方法在PHP中,可以利用foreach语句遍历数组,在循环中使用strval()将数组元素值转为字符串。1、使用foreach语句循环遍历数组注:一般情况下,使用foreach语句遍历数组时,是对数.转载 2022-05-28 18:43:26 · 829 阅读 · 0 评论 -
php获取 referer判断来路防止非法访问
PHP中的 $_SERVER["HTTP_REFERER"] 预定义服务器变量可以判断来路。$_SESSION['HTTP_REFERER']可以获取当前链接的上一个连接的来源地址,即链接到当前页面的前一页面的 URL 地址。一般用于判断浏览者是从哪里点击链接跳到本页面的,即所说的来路,还可以通过判断来路来防止盗链。例如<?php $url_array = parse_url($_SESSION['HTTP_REFERER']); //如果页面的域名不是服务器域名,就连接转载 2022-05-28 17:17:32 · 1627 阅读 · 0 评论 -
毕业设计 图书管理系统 PHP版本
毕业设计 图书管理系统 php实现原创 2022-05-12 16:48:53 · 472 阅读 · 0 评论 -
Fastadmin 修改样式,替换掉默认皮肤
Fastadmin 自带的皮肤有十二种:skin-blueskin-whiteskin-purpleskin-greenskin-redskin-yellowskin-blue-lightskin-white-lightskin-purple-lightskin-green-lightskin-red-lightskin-yellow-light默认的是第四个: skin-green,界面风格如下:虽然”右上角“可以设置显示的皮肤, 但都需要每个账户登录后去手原创 2022-05-10 21:50:20 · 4389 阅读 · 0 评论