Tuiwenya-开源小说网站

西门桃桃 2021-01-27 PM 3180℃ 0条

这个项目一开始不是为了开源使用的,所以数据库的配置暂时没有做成一键安装的方式。等以后有时间了再改成可以直接上传代码就能使用的版本,现在如果需要使用的话,需要按照下面的教程设置好数据库。

数据库的结构:

all.jpg

网站中主要用到了以上6个Table,novel、chapter、content用于存小说,search用于记录用户搜索失败的小说,source记录小说来源,user用于用户登录。

按照下方图片中这几个表的格式在自己数据库中创建对应的Table

novel

novel.jpg

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for novel
-- ----------------------------
DROP TABLE IF EXISTS `novel`;
CREATE TABLE `novel` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `title` varchar(128) NOT NULL DEFAULT '',
  `author` varchar(16) DEFAULT '',
  `total` int(11) DEFAULT '0',
  `category` varchar(16) DEFAULT '未知',
  `introduce` text,
  `domain` varchar(255) DEFAULT '',
  `source` varchar(255) DEFAULT '',
  `readCount` int(11) DEFAULT '0',
  `isDelete` tinyint(1) DEFAULT '0',
  `isComplete` tinyint(1) DEFAULT '1',
  `isUpload` tinyint(1) DEFAULT '0',
  `ctime` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
  `utime` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  KEY `title` (`title`) USING BTREE,
  KEY `author` (`author`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=10724 DEFAULT CHARSET=utf8;

SET FOREIGN_KEY_CHECKS = 1;

chapter

chapter.jpg

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for chapter
-- ----------------------------
DROP TABLE IF EXISTS `chapter`;
CREATE TABLE `chapter` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `title` varchar(255) NOT NULL DEFAULT '',
  `novel_id` int(11) NOT NULL,
  `order_index` int(11) DEFAULT '0',
  `source` varchar(255) DEFAULT '',
  `ctime` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
  `utime` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  KEY `novel_id` (`novel_id`)
) ENGINE=InnoDB AUTO_INCREMENT=8070576 DEFAULT CHARSET=utf8;

SET FOREIGN_KEY_CHECKS = 1;

content

content.jpg

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for content
-- ----------------------------
DROP TABLE IF EXISTS `content`;
CREATE TABLE `content` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `chapter_id` int(11) NOT NULL DEFAULT '0',
  `content` mediumtext NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `chapter_id` (`chapter_id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=9235311 DEFAULT CHARSET=utf8mb4;

SET FOREIGN_KEY_CHECKS = 1;

search

search.jpg

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for search
-- ----------------------------
DROP TABLE IF EXISTS `search`;
CREATE TABLE `search` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `kw` varchar(255) NOT NULL DEFAULT '',
  `isDelete` tinyint(1) DEFAULT '0',
  PRIMARY KEY (`id`),
  UNIQUE KEY `kw` (`kw`(191)) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=8955 DEFAULT CHARSET=utf8mb4;

SET FOREIGN_KEY_CHECKS = 1;

source

source.jpg

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for source
-- ----------------------------
DROP TABLE IF EXISTS `source`;
CREATE TABLE `source` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `novel` varchar(255) DEFAULT NULL,
  `category` varchar(16) DEFAULT '',
  `isDownload` tinyint(1) DEFAULT '0',
  PRIMARY KEY (`id`),
  UNIQUE KEY `novel` (`novel`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=15441 DEFAULT CHARSET=utf8;

SET FOREIGN_KEY_CHECKS = 1;

user

user.jpg

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for user
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(20) NOT NULL,
  `password` char(32) NOT NULL,
  `name` varchar(16) DEFAULT NULL,
  `ip` varchar(16) DEFAULT NULL,
  `login_times` int(11) DEFAULT '0',
  `role` tinyint(1) DEFAULT '0',
  `status` smallint(1) DEFAULT '1',
  `isVip` tinyint(1) DEFAULT '0',
  `isDelete` tinyint(1) DEFAULT '0',
  `ctime` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
  `utime` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8;

SET FOREIGN_KEY_CHECKS = 1;

然后在Config.php中配置好自己的数据库,这时上传代码,应该就不会报错了。

database.jpg

爬虫:

爬虫的代码基本写在cacheController、indexController中(目前已经注释),如果想要使用这里功能,需要打开注释。
解析HTML使用的框架为QueryList,感兴趣的可以点击看看他们的文档。

网站架构:

https://tuiwenya.com/index.php?c=chapter&a=index&n=1628&name=斗破之无上之境

网站基于MVC架构实现,以上面这个路径为例,index.php为入口文件,c参数对应控制器的名称,a参数对应方法名称,n参数对应小说的id,name参数对应小说名。

想要运行指定的方法,就只需要按照这种方式传参数访问就可以实现了。

其他的想到了再写~

标签: PHP

非特殊说明,本博所有文章均为博主原创。

评论啦~