全方位站长技能、SEO优化学习平台
免费香港宝塔虚拟主机 免费香港Kangle虚拟主机
免备案高性价比香港虚拟主机/支持月付年付/时长越长折扣越大
当前位置:网站首页 > PHP笔记 > 正文

EnovelCms:如果把中文免费小说翻译成英文小说,是不是赚翻了?

作者:文煞发布时间:2026-04-26分类:PHP笔记浏览:36


温馨提示:手机扫码可阅读当前文章!
文章简介:最近一段时间,折腾了一下公众号,本来准备用来写小说文章,但是感觉也不理想,到底还是改了回来。但是我有了一个新的启发,现在Ai这么厉害,不如做个英文小说网站,内容来自国内的免费小说,用AI翻译后发布,然后赚点广告费。不过最近也没有闲着,花了一...

最近一段时间,折腾了一下公众号,本来准备用来写小说文章,但是感觉也不理想,到底还是改了回来。但是我有了一个新的启发,现在Ai这么厉害,不如做个英文小说网站,内容来自国内的免费小说,用AI翻译后发布,然后赚点广告费。

不过最近也没有闲着,花了一个月时间,折腾出EnovelCms的小说内容管理系统出来。如今在Ai助手的加持下,程序开发的速度,大幅度提升。还记得10年前,写了一个简单的文章系统,也花了一个多月,不过那个系统比这个EnovelCms要简易得多,页面设计也是仿的笔趣阁的风格。好了,话不多说,来说说我们的EnovelCms。
EnovelCms:如果把中文免费小说翻译成英文小说,是不是赚翻了?  第1张
为什么要开发EnovelCms,闻名知意,EnovelCms就是简易的小说系统的意思。经过一个多月的从零开始、自主的编码之苦,经过反复的修改完善后,我决定将其整理出来,开源给对此类技术有兴趣或有所需求的开发者们。
目前网络上的同类CMS系统,也不在少数,臃肿完善的杰奇CMS,还有其他很多种各类小说系统,应有尽有。不过我本来是打算做英文小说站,计划通过AI翻译国内免费小说,把内容分享到海外网络。但是目前市面上的小说系统不管是功能还是语言包的处理,都没有我觉得理想的,我要的是后台中文,方便我管理网站,毕竟本身英文不太好;前端英文,方便海外用户浏览;更重要的极简,容易维护管理。

一、 前后台功能

前台用户端 包含了一个小说站应有的各个模块:
首页与推荐:支持丰富的广告位置锚点,后台轻松管理广告内容;支持"Diy榜单",可以高自由度组合个性化榜单,对前端设计极其友好。
用户系统:支持邮件发送验证码注册;支持签到获得金币,连续签到奖励;支持金币兑换VIP和易支付购买VIP,VIP目前只设计了免广告功能;支持书架和阅读记录。
EnovelCms:如果把中文免费小说翻译成英文小说,是不是赚翻了?  第2张
书库与筛选:支持按分类、连载状态、字数范围、更新时间、点击量等种方式进行组合筛选。前端可切换列表/网格两种视图,让页面看起来更高级,当然你可以自由设计。
沉浸式阅读:阅读页提供了字体缩放、夜间模式,所有设置会自动保存在浏览器中,下次打开会自动恢复。
国际化:内置中英双语,可轻松切换,并支持动态上传新的语言包。本来设计的是前台让用户自由切换的,但是后面想到切换了程序语言,但是小说信息和内容都无法改变,意义不大,于是把语言设置放到了后台,管理员要做什么语言的网站,就添加对应的语言包即可(复制默认语言包,让AI给你翻译成其他任意语言给你,方便至极)。

二、 技术栈与代码解析

EnovelCms采用原生PHP+PDO/MySQLi双驱动+自研轻量路由架构。不依赖任何第三方PHP框架,核心代码行数不多,但结构清晰,易于二次开发。
下面分享几个在开发中比较得意的代码设计,看看它是如何工作的。

1、 灵活的数据库驱动设计

为了兼容不同的PHP环境,系统在Database.php中实现了PDO和MySQLi的两种连接Mysql的方式,优先使用PDO,不支持PDO的情况下自动降级到MySQLi。查询方法query同时支持了两种驱动的参数绑定,这让开发时可以用一套代码应对所有查询,而无需关心底层用的是哪种驱动。
下面是摘自 includes/Database.php的代码,展示了混合驱动的参数绑定处理:
public function query($sql, $params = []) {
    if ($this->type === 'pdo') {
        $stmt = $this->connection->prepare($sql);
        $stmt->execute($params);
        return $stmt;
    } else {
        // MySQLi 需要手动构建 bind_param 的参数引用
        $stmt = $this->connection->prepare($sql);
        if ($stmt && !empty($params)) {
            $types = '';
            $bindParams = [];
            foreach ($params as $key => $value) {
                if (is_int($value)) $types .= 'i';
                elseif (is_float($value)) $types .= 'd';
                else $types .= 's';
                $bindParams[] = &$params[$key];
            }
            array_unshift($bindParams, $types);
            call_user_func_array([$stmt, 'bind_param'], $bindParams);
            // ...
        }
    }
}

2. 可配置的"Diy榜单"缓存系统

前端各个页面都可以调用的自定义榜单,由于各个版块的数据查询是高并发场景的瓶颈。为了解决这个问题,我设计了diy_blocks表和配套的处理函数。网站管理人员可以在后台配置一个块,比如"最近7天点击最高的10本小说",设置缓存时间为300秒。前台调用DiyString('top_views_week')时,系统会自动判断缓存是否过期,是则执行复杂查询并更新缓存,否则直接返回JSON缓存数据,大幅提升了页面加载速度。这对于前端模板设计是极其重要的。
EnovelCms:如果把中文免费小说翻译成英文小说,是不是赚翻了?  第3张
以下是摘自 includes/functions.php的代码,展示了DiyString的缓存逻辑:
function DiyString($blockName) {
    global $db;
    $block = $db->fetch($db->query("SELECT * FROM diy_blocks WHERE name = ?", [$blockName]));
    if (!$block) return [];
    // 核心:判断缓存是否有效
    if ($block['updated_at'] && (time() - strtotime($block['updated_at']) < $block['cache_time'])) {
        return json_decode($block['data'], true) ?: [];
    }
    // 缓存失效,执行复杂查询生成数据
    $data = generateBlockData($block);
    $json = json_encode($data);
    // 更新数据和时间戳
    $db->query("UPDATE diy_blocks SET data = ?, updated_at = NOW() WHERE id = ?", [$json, $block['id']]);
    return $data;
}

3. 路由系统

前端URL使用伪静态解析,所有请求都汇聚到根目录的index.php。然后通过自己设计的路由逻辑,将例如/novel/123这样的路径映射到对应的处理函数和模板。这种单一入口的模式,极大程度地让整个应用的请求处理和安全性更集中、更可控。

4. 函数式的前端模板

模板设计的时候,模板函数DiyString和DiyStrTitle让前端页面的开发变得极其简洁。不用在模板中写复杂的SQL查询或条件判断,直接调用函数并传入后台设置的唯一名称即可获取数据。这使得前端设计师在模板开发上更简单、好上手。

5、安全性

使用自己设计的图像验证码、CSRF校验、自己设计的h($str)、input(参数...)、input_filter_value(canshu1, 参数2)、safe_nl2br($str)进行安全过滤和防XSS。

function h($str) {
 if ($str === null) return '';
 return htmlspecialchars($str, ENT_QUOTES, 'UTF-8');
}
function input($key, $default = '', $method = 'REQUEST', $htmlspecialchars = true) {
 $data = null;
 switch (strtoupper($method)) {
 case 'GET': $data = $_GET; break;
 case 'POST': $data = $_POST; break;
 case 'COOKIE': $data = $_COOKIE; break;
 default: $data = $_REQUEST; break;
 }
 $value = isset($data[$key]) ? $data[$key] : $default;
 if (is_array($value)) {
 foreach ($value as $k => $v) {
 $value[$k] = input_filter_value($v, $htmlspecialchars);
 }
 return $value;
 }
 return input_filter_value($value, $htmlspecialchars);
}
function input_filter_value($value, $htmlspecialchars) {
 if ($htmlspecialchars && is_string($value)) {
 $value = trim($value);
 $value = htmlspecialchars($value, ENT_QUOTES, 'UTF-8');
 } elseif (is_string($value)) {
 $value = trim($value);
 }
 return $value;
}
function safe_nl2br($str) {
 $str = preg_replace('/\n+/', "\n", $str);
 $str = h($str);
 return nl2br($str);
}


注释:
input():安全、简洁地获取用户输入;
input_filter_value():底层过滤工具;
safe_nl2br():安全处理多行文本换行;
h():输出到页面时防 XSS。

三、 系统要求与安装

这套EnovelCms系统对运行环境要十分求简单,可以让你快速部署:
PHP 版本:8.0 ~ 8.4
数据库:MySQL 5.7+
Web服务器:Nginx 或 Apache,需开启伪静态(后台已提供规则)
其他:需要openssl等常用PHP扩展
自带安装程序,模板默认榜单数据已内置,安装过程非常直观。直接访问首页,会自动进入安装向导,首先进行PHP版本检测,检测合格填写好数据库信息和网站管理员信息就可以安装成功。整个安装过程只需几秒,十分方便!

EnovelCms从开始编写代码到打demo打磨,我不断学习和精进,经历过无数次测试修改、修改测试......它肯定是不完美的,但它是一个基础的、可用的、可以立刻落地的项目,而且后续会持续升级维护。

我希望能给想要搭建小说站的站长提供一个低成本的选择,也希望能给正在学习PHP的开发者一个可以参考的、真实的、有一定复杂度的项目源码。如果你想要二开或者使用,只需保留版权信息即可,无需授权!
下载地址:https://www.wszzw.cn/post/628.html
EnovelCms:如果把中文免费小说翻译成英文小说,是不是赚翻了?  第4张


欢迎您,来自美国的朋友,您的IP:216.73.216.216,您的网络:


PHP笔记排行
随机推荐
猜你喜欢

服务热线

1888888888

要发发发发发发

站长微信公众号

站长微信公众号

分享:

支付宝

微信

💬