php+layui实战,做一个轻社区

2023-11-04

本来业务需要搭建一个轻社区,本着这个方向做了些低成本实现的调研,最终选择了layui作为前端模板,这样一个后端研发同学就可以轻松搞定了。顺便实现了个练手站。

先看版块:

目前设计的版块,包含文章,问答,圈子,用户级级别,身份,密码找回,邮箱激活等等。

基础框架:

  1. 前端layui,面相dom,响应式,有条件的可以支持双端,后端程序员比较容易接受。
  2. 后端 codeigniter4 ,框架比较轻,也提供Hook,自己可以针对需要去需改,符合预期。
  3. 数据组件,Mysql+redis

牵扯到的功能和应用的组件:

  1. 文章发布,富文本编辑器使用的是summernotejs,支持较好,扩展了emoji表情包
  2. 单页面效果,为了贴合seo,尽量的减少了ajax的请求,同时为了满足模块化需求,使用了smarty+laytpl,来实现html的模块化交互。
  3. 图片的预览 使用了viewerjs,可以支持图片的放大,旋转,轮转,效果大家可以去小站看,站点位置 https://www.nanshandu.com
  4. 文章的抓取,使用的queryList,有点强大吧,支持php-query选择器,支持动态渲染数据爬取。
  5. 文章仿写,尝试结巴分词,但是效果我觉得不怎么样,至少php版的不怎么样,尝试仿写能能力,根据词频和词性去做处理,可能是字典不够强大,所以部分语句还不是很通顺。阶段性放弃,等有时间了会尝试nlp方案。
  6. 文章敏感词处理,使用的php-dfa-sensitive 方案包。
  7.  xss注入,使用的voku/anti-xss,这里面默认了一批安全html标签,可以根据自己实际需求定制,引入到ci4中更方便。

现在站点搭建在自己的测试服务器中,因为没备案,所以是香港服务器。

关于墙机制,目前是尝试的session方案,来区别人机。以上就是整站的具体方案了。目前没什么继续开发的欲望了,后期如果有新的技术或想法会继续追加功能。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

php+layui实战,做一个轻社区 的相关文章

  • 如何在同一命名空间内从函数 B 调用函数 A?

    假设我有命名空间 var Namespace A function alert Hello B function Call A from here do other stuff 在这个命名空间中 我想让A成为B的辅助函数 也就是说 A 永远
  • 如何使对象“a == b”的比较成立? [复制]

    这个问题在这里已经有答案了 这是面试前 JavaScript 在线测试的问题之一 function F var a new F var b new F Q 如何进行比较a b to be true e g console log a b t
  • 访问 .js 文件中的 Nuxt 插件

    假设我有一个脚本文件 foo js function doStuff how to access store and other plugins here export default doStuff 如果不将调用组件作为参数传递 我如何访
  • 将字符串数组转换为对象 Id 数组

    我有一个字符串数组 let stringObjectIdArray fssdlfsd343 43434234242 342424242 我想使用 mongoose 类型将字符串数组更改为对象 Id 数组 但它不起作用 它仅适用于字符串而不是
  • HTML:您可以隐藏/忽略浏览器查找中的文本元素 (CTRL+F)

    我有一个具有相当复杂的 UI 的 Web 应用程序 并且屏幕的一部分保留用于内容 如果可能的话 我想这样做 以便当用户使用浏览器的内置文本搜索 CTRL F 时 UI 中的任何文本都将被忽略 并且仅搜索实际内容 这可行吗 CSS 和 Jav
  • 更改模板标签 <# {% {{ 等后,John Resig 的微模板出现语法错误

    我在使用 John Resig 的 Micro 模板时遇到了一些麻烦 谁能帮我解释为什么它不起作用 这是模板 以及发动机的改装部分 str replace r t n g split join t replace gt t g 1 r re
  • 正则表达式没有按预期工作?

    我有这个正则表达式 new RegExp a z 0 9 ig 我正在测试一个不应该工作的字符串 vc 但它确实通过了测试 而且它不应该 new RegExp a z 0 9 ig test vc true 但如果我删除其中一个 or or
  • 如何隐藏 URL 中的 ID

    我以前在 Stack Overflow 上见过这类问题 但没有一个真正有帮助 我也用谷歌搜索过 但没有骰子 我想知道如果用户单击选项卡本身是否可以隐藏 URL 中的 ID 这是网页 www planet nu dev new experia
  • 如何处理 React JSX 中的长类名?

    假设我在 React JSX 中渲染这个组件 render return h1 Some text h1 这些类触发我的 JS linter 的行太长 而且很难阅读 怎样才能分开长className将 React 组件中的属性分成多行而不破
  • 如何用方向键移动div

    我想使用 jQuery 用箭头键移动 div 所以右 左 下 上 找到了我想要完成的演示here http atomicrobotdesign com blog htmlcss move objects around the canvas
  • 如何禁用向左滚动?

    I got a div 元素 parent 包含多个子元素 item 我想启用滚动父元素一个方向 left OR正确的 否则什么都不会发生 看我的代码 parent scroll function gt gt gt scroll event
  • 单击 div 中的图像时如何翻转该 Div?

    好吧 我对编写 Javascript 知之甚少 我可以对其进行一些编辑 并且涉足了 CSS3 动画 我将向您展示我正在努力实现的目标 然后在下面进行解释 网站布局将是这样的 https i stack imgur com RMb4R jpg
  • 使用 jQuery animate 时,有没有办法隐藏 webkit 浏览器中显示的工件?

    我正在使用 jQuery animate 在网页上的项目中滑动 由于某种原因 只有在 webkit 浏览器中 元素动画的空间中才会出现伪影痕迹 有没有办法阻止或隐藏这种情况 一旦您加载此处的页面 它们就会出现在轮播上 http www my
  • Firestore——仅获取大型同步集合中已更改的文档

    我已阅读下面的所有问题 但在文档中找不到任何内容来描述如何同步集合和接收only更改集合中的文档 我的同步集合中有超过 500 个文档 使用redux saga firebase 同步集合 https redux saga firebase
  • 如何使用jsPDF设置图像以适合页面宽度?

    有什么办法可以解决这个问题吗 我尝试以毫米为单位设置宽度和高度 如何将其设置为全角 您可以获取 PDF 文档的宽度和高度 如下所示 var doc new jsPDF p mm a4 var width doc internal pageS
  • 在浏览器中打开的 .mhtml 文件中填写输入

    我想对 mhtml 文件运行 e2e 测试 即填写表格 在 mhtml 文件上查看和提取数据效果非常好 但我无法填写任何内容input字段 既不是手动也不是通过木偶操作者 你可以用这个试试 mhtml 文件 https gist githu
  • jQuery 更改为隐藏字段后触发重力表单中的表单更新

    简而言之 是否有 JavaScript 函数或挂钩来触发重力形式的更新 以便执行条件逻辑 原问题 我正在使用重力形式 并且创建了一个 变化时 事件 gform 1 find gfield date dropdown month select
  • 更改哈希值而不触发 hashchange 事件

    我使用哈希来动态加载内容 为了使后退按钮正常工作 我正在捕获哈希更改 然而 有时我需要更改哈希值而不触发哈希更改函数 例如 当页面重定向到服务器端时 我需要在内容返回后更新哈希值 我想出的最佳解决方案是取消绑定 hashchange 事件
  • Javascript 最佳实践,为什么使用逗号来链接函数/变量声明?

    我一直在为 jQuery jQueryLog 开发一个插件 以允许调试链选择器和返回值 如果你想检查一下 你可以这样做here http www jquerylog com 这已经是第二个版本了 第一个版本实际上是经过编辑的 jQuery
  • 在哪里放置资源特定逻辑

    您能帮我考虑在 AngularJS 中将资源 服务 特定的业务逻辑放置在哪里吗 我觉得在我的资源上创建一些类似模型的抽象应该很棒 但我不确定如何做 API调用 gt GET customers 1 lt first name John la

随机推荐

  • 解决IDEA无法导入Maven项目jar包的问题 - 已解决

    当我们创建Maven项目的时候 经常会出现导入jar包失败的问题 如下图所示 发现我们导入的依赖下面都有红线 解决方法有以下几种 1 有可能是因为我们将 pom的文件忽略了 解决方法 找到 file gt settings gt Build
  • java jbutton数组_java-JButton需要显示图像数组

    我有一组存储在数组中的图像 我需要像幻灯片一样显示它们 下一个和上一个有两个JButton 它们使用户可以查看图像 但是我无法使按钮起作用 有什么建议吗 谢谢 import java awt Graphics import java awt
  • 51行代码实现简单的PHP区块链

    本文原始地址 php区块链demo 今年区块链特别火 我也很火啊 我火什么呢 前几年 公众平台出现 还得花时间去学去看 后来小程序出现 又得花时间精力去学去看 现在比特币 以太坊等去中心化货币带起了区块链的发展 还得学 没办法 技术改变师姐
  • 感冒的一般过程

    http blog sina com cn s blog 7af11b49010136hl html 又感冒了 哎 挺严重 鼻涕流不停 特别畏寒 以前没发现感冒这么可怕 看到一篇关于感冒的文章 粘过来给大家分享一下 以防感冒 感冒 是一种自
  • Python轻松爬取Rosimm写真网站全部图片

    RosimmImage 爬取Rosimm写真网站图片 有图有真相 def main start url 爬虫入口 主要爬取操作 try r requests get url html headers HEADERS timeout 10 t
  • token由来

    https www cnblogs com bigben0123 p 8334824 html
  • compiler之automatic memory management以及Java GC

    基本方案就3种 1 mark and sweep 2 stop and copy 会用到copy graph算法 见leetcode 3 reference counting 前2种方案GC是一个是独立的过程 要先进行扫描 object g
  • Java Portlet 规范概述

    首先 解释几个基本的术语 1 Portal Portal 是一种 web 应用 通常具有个性化 单点登录 来自不同源的内容聚合 aggregation 并提供信息系统表现层等特点 所谓聚合 是指将不同来源的内容整合到一个 web 页面的操作
  • awk传入变量

    for chr in 1 22 do awk v nvar chr print 1 t nvar t 4 t 3 t 4 chr chr LD map gt chr chr LD1 map done
  • js-事件及事件委托

    1 事件 当用户浏览网页时 存在许许多多与网页交互的操作 例如按钮的点击 屏幕的滑动 鼠标的移动等等 通过这些交互完成某些操作 达到某种效果 我们可以将这些交互称之为事件 2 事件冒泡 事件冒泡是指事件在某个元素上触发后一直向上传播 父元素
  • 【个人项目】——细腻的人像分割

    项目地址 segmentation pytorch 前面介绍了 一个人像分割数据集 这里采用该数据做了人像分割的小demo Supervisely 人像分割数据集格式转换 1 测试 1 1 环境采用本机的torch140 1 2 下载预训练
  • 分享网友第一次开发EOS区块链总结的经验

    在处理项目时 用Java Connector for EOS区块链编写 创建钱包 创建帐户 创建交易 创建签名交易 在帐户之间转移代币 我遇到了各种和运行本地EOS节点需要遵循的基本步骤 这个小指南纯粹是为了帮助你启动和运行自己的EOS节点
  • Docker容器内部 DNS 解析失败的问题

    上段时间遇到了 docker 容器内部 dns 解析失败的问题 发现在 docker run 启动容器之后 容器内部访问外部的接口总是提示无法解析 dns 然而容器外部是可以解析的 dns的配置也没有任何问题 用 docker exec i
  • 如何使用CSS画一个三角形

    原理 其实就是规定元素的四个边框颜色及边框宽度 将元素宽高设置为0 如果要哪个方向的三角形 将对应其他三个方向的边框宽和颜色设置为0和透明transparent即可 1 元素设置边框 宽高 背景色 div class border div
  • 启动hadoop时异常:connect to host hadoop002 port 22 Connection refused

    问题描述 今天在搭建hadoop伪分布式集群时 启动hadoop 报如下异常情况 hadoop002 也就我设置的Secondary namenode 拒绝连接 启动Secondary namenode失败 root hadoop1 sta
  • JDK8新特性之Stream流

    目录 一 简介 二 Stream流的应用 2 1 为什么使用stream流 2 2 Stream流的原理 2 3 步骤 2 4 获取Stream流对象的方式 2 5 Stream流的API方法 2 5 1 map 2 5 2 collect
  • SQL注入基础

    引言 靓仔们是否经常听到sql注入呢 那么sql注入到底是什么 引用微软官方的语言来说 SQL 注入是一种攻击方式 在这种攻击方式中 在字符串中插入恶意代码 然后将该字符串传递到 SQL Server 的实例以进行分析和执行 构成 SQL
  • 【数据结构c++】双指针(九)

    1 双指针 两数之和 II 输入有序数组 https leetcode cn com problems two sum ii input array is sorted class Solution public vector
  • poj 1330 Nearest Common Ancestors

    Problem poj org problem id 1330 vjudge net contest 80844 problem C Meaning 求最近公共祖先 Note 真 LCA 模版题 那就备份一发 LCA 模版 链式前向星存图
  • php+layui实战,做一个轻社区

    本来业务需要搭建一个轻社区 本着这个方向做了些低成本实现的调研 最终选择了layui作为前端模板 这样一个后端研发同学就可以轻松搞定了 顺便实现了个练手站 先看版块 目前设计的版块 包含文章 问答 圈子 用户级级别 身份 密码找回 邮箱激活