摘 要
随着互联网技术持续进步,提供用户登录功能的网站日益增多,以便于用户管理账户信息、查看浏览记录和发表评论等。因此,网站登录模块的设计与实现已逐渐成为网站开发的重要环节。在这一背景下,,PHP作为一种广泛使用服务器端脚本语言,其网页登录模块的设计与实现技术也成为了许多网站开发者研究和探讨的问题。
本网页登录模块系统是基于PHP框架和MySQL数据库为基础的系统开发,系统主要分为注册用户模块和管理员模块。注册用户模块主要包括注册登录、首页、交流论坛、网站公告、新闻资讯等功能模块。用户通过注册可以成为系统用户,可以查看网站公告、新闻资讯等内容,可以发表论坛内容,同时也可以对个人信息进行维护管理。管理员模块主要包括系统用户、系统管理、网站公告管理、资源管理、交流管理等功能模块,管理员可以对系统用户、网站公告、新闻资讯、交流论坛信息进行管理。
关键词:网页登录模块;PHP;MySQL
Abstract
With the continuous advancement of internet technology, there are increasingly more websites that provide user login functions, making it easier for users to manage account information, view browsing history, and post comments. Therefore, the design and implementation of website login modules have gradually become an important part of website development. In this context, PHP, as a widely used server-side scripting language, the design and implementation technology of its web login module has also become a topic of research and exploration for many website developers.
This web page login module system is developed based on the PHP framework and MySQL database. The system is mainly divided into a registered user module and an administrator module. The registration user module mainly includes functional modules such as registration and login, homepage, communication forums, website announcements, news and information. Users can become system users by registering, view website announcements, news and information, publish forum content, and maintain and manage personal information. The administrator module mainly includes functional modules such as system users, system management, website announcement management, resource management, and communication management. Administrators can manage system users, website announcements, news information, and communication forum information.
Keywords: web login module; PHP; MySQL
目 录
4.16 表sensitive_vocabulary (敏感词汇)
4.20 表user_group (用户组:用于用户前端身份和鉴权)
致谢 35
第一章 绪论
1.1 研究背景和目的
随着互联网技术的不断发展,越来越多的网站需要提供用户登录功能,以便用户能够管理自己的账户信息、查看网站公告、新闻资讯、发表评论、发帖等等。因此,网站登录模块的设计与实现成为了网站开发中的重要组成部分。在这个背景下,PHP作为一种流行的服务器端脚本语言,其网页登录模块的设计与实现也成为了许多网站开发者关注的问题。设计开发PHP网页登录模块系统旨在实现用户注册和登录功能,保护用户数据和提高网站安全性,同时提升用户体验和促进网站的发展。
1.2研究方法
首先,通过引擎搜索或者查阅相关文献资料,了解了本系统开发的背景以及设计系统的意义所在,收集用户需求信息。
其次,在开发工具上,选用PHP框架来设计开发本系统,MySQL作为设计数据库的工具。即利用PHP语言实现用户界面,并同数据库连接起来实现完整的通信功能。
再次,设计出系统大致的功能模块。主要从方便注册用户和管理员的角度进行分析,明确该系统应该具有的功能。
最后,完成系统测试,通过用例测试发现存在的问题并找到解决的方案。利用现有的开发平台,结合自己所学的知识,在老师的指导帮助下来完成该设计,确保系统运行的可靠性和稳定性。1.3 论文结构与章节安排
本文共分为七章,章节内容安排如下:
第一章为绪论,主要介绍系统的研究背景和意义,同时进行了论文整体框架的结构的简要介绍。
第二章为相关技术介绍,主要对系统开发所采用的相关技术进行介绍。
第三章为系统分析,主要对系统进行可行性技术、系统功能分析、用例分析。
第四章为系统的设计,主要是对系统的架构、功能结构、系统数据库进行分析。
第五章为系统实现,根据系统功能的划分,分别的对系统所需要实现的用户功能和管理员功能进行了分析和说明。
第六章:系统测试。主要对系统的部分界面进行展示并对主要功能进行测试。
第七章:总结。主要对系统的开发设计工作进行总结。
第二章 相关技术介绍
2.1 PHP描述
PHP采用函数或者过程来解析对于数据的操作,但又把数据和函数之间相互分开,这样并不利于维护,并会增加程序的工作量。而面向对象的编程将程序的函数和函数对于数据的操作封装在一个类中,作为一个整体来处理。所以PHP语言是主要通过面向对象来实现编程,并且摒除了C++语言中的指针、多继承等比较难理解部分,创造出了自身独有的单继承、多接口、高内聚、低耦合等特性。
PHP技术对动态Web页面的开发作用简直是举足轻重。可以很快的响应到客户端的发送请求。是甲骨文公司旗下的IT及互联网技术服务公司Sun Micro Systems公司主导并创立的动态网页技术的标准。而且能依据请求内容动态地生成XML、HTML,为用户的网络请求提供技术服务,而且可以与服务器上的其它PHP程序共同处理先对复杂的业务需求。
PHP主要优势如下:
(1)一旦程序有一次成功的编写,就能在多处运行起来。
(2)支持面特别广,许多平台已经引入该技术。
2.2 MySQL描述
现在MySQL数据库在网络上它可以支撑许多个用户,而且也可以适应客服机和服务器的部署或者配置等,我们这里的服务器和客户机其实就是一种软件上的概念,并且我们使用的计算机硬件也与他们不存在一一对应的关系。
MySQL是一款非常流行的关系型数据库管理系统,它的出现一直都是佼佼者,它不仅功能非常强大,而且使用起来非常方便,并且MySQL的跨平台能力也很好,软件开发人员非常喜欢它的这些强大的优点。不同于其他关系型数据库,对于数据库的管理它有着自己的一套方案,通过对用户设定相应的权限和角色来达到对数据库的管理。由此可见,MySQL是一个能够适用于吞吐量高,可靠性高,效率高的一款数据库管理软件。
优点一:MySQL中对于不同身份的用户都设定其不同的权限来完成不同的业务逻辑,这使得MySQL在安全和完整性远远超出了其他关系型数据库。
优点二:对于那些动画、图形和声音的数据类型MySQL也可以支持,这说明多数据类型MySQL也是可以支持的。
优点三:MySQL还可以做到多个平台的开发,软件开发的多种编程语言都可以实现对MySQL数据库的操作。
2.3 Think PHP框架介绍
Think PHP是为了简化企业级应用开发和敏捷WEB应用开发而诞生的。最早诞生于2006年初,2007年元旦正式更名为Think PHP,并且遵循Apache2开源协议发布。Think PHP从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,也注重易用性。并且拥有众多原创功能和特性,在社区团队的积极参与下,在易用性、扩展性和性能方面不断优化和改进。
Think PHP是一个快速、兼容而且简单的轻量级国产PHP开发框架,诞生于2006年初,原名FCS,2007年元旦正式更名为Think PHP,遵循Apache2开源协议发布,从Struts结构移植过来并做了改进和完善,同时也借鉴了国外很多优秀的框架和模式,使用面向对象的开发结构和MVC模式,融合了Struts的思想和Tag Lib(标签库)、RoR的ORM映射和Active Record模式。
Think PHP可以支持windows/Unix/Linux等服务器环境,正式版需要PHP5.0以上版本支持,支持MySQL、PgSQL、Sqlite多种数据库以及PDO扩展,Think PHP框架本身没有什么特别模块要求,具体的应用系统运行环境要求视开发所涉及的模块。
作为一个整体开发解决方案,Think PHP能够解决应用开发中的大多数需要,因为其自身包含了底层架构、兼容处理、基类库、数据库访问层、模板引擎、缓存机制、插件机制、角色认证、表单处理等常用的组件,并且对于跨版本、跨平台和跨数据库移植都比较方便。并且每个组件都是精心设计和完善的,应用开发过程仅仅需要关注您的业务逻辑。
第三章 系统分析
3.1 可行性分析
在软件开发的过程中,可行性分析是至关重要的,它旨在评估问题的可行性,以便尽可能快地解决,同时也要考虑到不同的解决方案的优势和劣势,以及实施这些方案所带来的经济效益。通过对技术、操作和经济因素的综合考量,我们可以更好地评估PHP网页登录模块设计与实现的可行性,具体表现在:
3.1.1 技术可行性
PHP是一种强大的、易于学习的编程语言,具有丰富的社区资源。PHP具有优秀的性能,可以轻松处理数百万次请求。此外,PHP具有跨平台的优势,可以在多种操作系统上运行,如Linux、Windows等。这使得PHP成为了开发网页登录模块系统的理想选择。因此从技术层面来说是可行的。
3.1.2 经济可行性
PHP拥有丰富的开源框架,如PHP、Think PHP等。这些框架为开发者提供了快速开发、安全稳定的基础架构。PHP的开源框架可以帮助开发者快速完成开发任务,降低开发周期,从而降低开发成本。此外,PHP的跨平台特性使得系统可以轻松部署在各种服务器上,降低服务器成本。因此从经济层面来说是可行的。
3.1.3 操作可行性
PHP可以轻松与HTML、CSS、JavaScript等技术结合,为用户提供美观、易用的界面,让用户可以轻松完成登录操作。因此从操作层面上来说是可行的。
3.1.4 社会可行性
PHP作为一种广泛应用的编程语言,在社会上具有较高的认可度。企业和个人开发者都愿意采用PHP进行开发,这为登录模块系统的推广和应用提供了便利。
3.2 系统功能分析
3.2.1 功能性分析
按照PHP网页登录模块的系统角色分析,主要包括注册用户模块和管理员模块,其主要内容如下:
- 注册用户模块
1) 首页:用户可以查看首业展示的轮播图、网站公告和新闻资讯等信息。
2 )注册登录:用户可以通过注册成为系统用户,注册后的用户可以用账户名密码登录系统。
3 )交流论坛:用户可以查看交流论坛列表信息中的某一论坛详情并进行点赞、收藏和发表评论操作,也可以发表论坛内容。
4) 网站公告:用户可以查看网站公告列表里的相关信息。
5 )新闻资讯:用户可以查看新闻资讯列表里的某一资讯详情并进行点赞、收藏和发表评论操作。
6 )我的:用户可以修改个人信息和登录密码,可以查看交流论坛和收藏列表等信息。
- 管理员模块
1) 后台首页:可以查看系统首页信息。
2 )系统用户:管理员可以对系统用户进行查询、重置、添加和删除管理。
3 )系统管理:管理员可以对系统轮播图进行查询、重置、添加和删除管理。
4 )网站公告管理管理员可以查看网站公告列表中的某一公告详情,可以对网站公告信息进行查询、重置、添加和删除管理。
5)资源管理:管理员可以添加新闻分类信息,可以查看资讯列表信息中的某一资讯详情及评论信息,管理员可以对新闻资讯列表信息进行查询、重置、添加和删除管理。
6)交流管理:管理员对交流论坛列表和论坛分类列表信息进行查询、重置、添加和删除管理。
7)我的账户 :管理员可以修改个人信息和登录密码。
3.2.2非功能需求分析
PHP网页登录模块系统的非功能性需求比如系统的安全性怎么样,可靠性怎么样,性能怎么样,可拓展性怎么样等。具体可以表示在如下3-1表格中:
表3-1 PHP网页登录模块系统非功能需求表
安全性 | 主要指PHP网页登录模块系统数据库的安装,数据库的使用和密码的设定必须合乎规范。 |
可靠性 | 可靠性是指PHP网页登录模块系统能够安装用户的指示进行操作,经过测试,可靠性90%以上。 |
性能 | 性能是影响PHP网页登录模块系统占据市场的必要条件,所以性能最好要佳才好。 |
可扩展性 | 比如数据库预留多个属性,比如接口的使用等确保了系统的非功能性需求。 |
易用性 | 用户只要跟着PHP网页登录模块系统的页面展示内容进行操作,就可以了。 |
可维护性 | PHP网页登录模块系统开发的可维护性是非常重要的,经过测试,可维护性没有问题 |
3.3 系统用例分析
通过3.2功能的分析,得出了PHP网页登录模块系统的用例图:
注册用户角色的用例图如下图3-1所示。
图3-1注册用户角色用例图
管理员角色的用例图如下图3-2所示。
图3-2 管理员角色用例图
第四章 系统设计
4.1 系统架构设计
PHP网页登录模块系统采用三层开发设计模式,分为:用户界面层,业务逻辑层和数据访问层。用户界面层用来和用户交互,业务逻辑层负责业务的处理和各层之间的数据的传递;数据访问层负责对数据库的访问和检索。
系统的架构图如下图所示。
图4-1 系统架构图
系统各层之间的调用过程如下:
(1)用户通过用户界面层访问系统,向系统提交请求,界面层对请求进行初步的处理和包装,并判断是否要与业务逻辑层进行交互。
(2)业务逻辑层接收来自界面层的请求,对请求进行数据处理。然后调用数据访问层来实现数据库访问,数据访问层访问数据库,将数据读出并返回给逻辑层。
(3)逻辑层将处理的结果,返回给界面层。界面层加以处理呈现给用户。
4.2系统总体设计
在这个PHP网页登录模块系统上,我们将会发现一个由两个用户角色组成的功能模块。虽然两个模块看起来各自独立,但它们所使用的数据库却是一致的。这些模块的功能都是经过精心设计和分析,并结合了大量的资料和信息,才得以实现的。
综上所述,系统功能结构图如图4-2所示。
图4-2 系统功能结构图
4.3 数据库设计
4.3.1 数据库概念设计
数据库概念设计是指对于某个具体应用的数据模型(数据结构),进行抽象和设计,以便在后续的数据库实现阶段中进行数据库逻辑设计和物理结构设计。概念结构本身特性就是其能表现来自用户的各类需求。
系统ER图如下图4-3所示。
图4-3 系统ER图
4.3.2 数据库表设计
所有系统的应用数据相互区分。一旦在相应的系统中实现,它们将与自己相应的网络和服务器通信。所以这个系统可以连接这些数据。当我们选择桥梁截面时,以下将简要介绍如何建立系统。在单击上一个按键的时候,就会自动在对话框中弹出数据源的名字,之后再单击下一个按键时,就在填写相对应的身份验证和登录信息。按照系统功能设计的特点与职能模块的分类,个人留言网站的总体设计和实施过程一共涉及到了几个资料表格。
以下就介绍了一些根据各类别主要数据库表的设计结构以及基本功能建立数据库表:
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | token_id | int | 10 | 0 | N | Y | 临时访问牌ID | |
2 | token | varchar | 64 | 0 | Y | N | 临时访问牌 | |
3 | info | text | 65535 | 0 | Y | N | ||
4 | maxage | int | 10 | 0 | N | N | 2 | 最大寿命:默认2小时 |
5 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
6 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
7 | user_id | int | 10 | 0 | N | N | 0 | 用户编号: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | article_id | mediumint | 8 | 0 | N | Y | 文章id:[0,8388607] | |
2 | title | varchar | 125 | 0 | N | Y | 标题:[0,125]用于文章和html的title标签中 | |
3 | type | varchar | 64 | 0 | N | N | 0 | 文章分类:[0,1000]用来搜索指定类型的文章 |
4 | hits | int | 10 | 0 | N | N | 0 | 点击数:[0,1000000000]访问这篇文章的人次 |
5 | praise_len | int | 10 | 0 | N | N | 0 | 点赞数 |
6 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
7 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
8 | source | varchar | 255 | 0 | Y | N | 来源:[0,255]文章的出处 | |
9 | url | varchar | 255 | 0 | Y | N | 来源地址:[0,255]用于跳转到发布该文章的网站 | |
10 | tag | varchar | 255 | 0 | Y | N | 标签:[0,255]用于标注文章所属相关内容,多个标签用空格隔开 | |
11 | content | longtext | 2147483647 | 0 | Y | N | 正文:文章的主体内容 | |
12 | img | varchar | 255 | 0 | Y | N | 封面图 | |
13 | description | text | 65535 | 0 | Y | N | 文章描述 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | type_id | smallint | 5 | 0 | N | Y | 分类ID:[0,10000] | |
2 | display | smallint | 5 | 0 | N | N | 100 | 显示顺序:[0,1000]决定分类显示的先后顺序 |
3 | name | varchar | 16 | 0 | N | N | 分类名称:[2,16] | |
4 | father_id | smallint | 5 | 0 | N | N | 0 | 上级分类ID:[0,32767] |
5 | description | varchar | 255 | 0 | Y | N | 描述:[0,255]描述该分类的作用 | |
6 | icon | text | 65535 | 0 | Y | N | 分类图标: | |
7 | url | varchar | 255 | 0 | Y | N | 外链地址:[0,255]如果该分类是跳转到其他网站的情况下,就在该URL上设置 | |
8 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
9 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | auth_id | int | 10 | 0 | N | Y | 授权ID: | |
2 | user_group | varchar | 64 | 0 | Y | N | 用户组: | |
3 | mod_name | varchar | 64 | 0 | Y | N | 模块名: | |
4 | table_name | varchar | 64 | 0 | Y | N | 表名: | |
5 | page_title | varchar | 255 | 0 | Y | N | 页面标题: | |
6 | path | varchar | 255 | 0 | Y | N | 路由路径: | |
7 | position | varchar | 32 | 0 | Y | N | 位置: | |
8 | mode | varchar | 32 | 0 | N | N | _blank | 跳转方式: |
9 | add | tinyint | 3 | 0 | N | N | 1 | 是否可增加: |
10 | del | tinyint | 3 | 0 | N | N | 1 | 是否可删除: |
11 | set | tinyint | 3 | 0 | N | N | 1 | 是否可修改: |
12 | get | tinyint | 3 | 0 | N | N | 1 | 是否可查看: |
13 | field_add | text | 65535 | 0 | Y | N | 添加字段: | |
14 | field_set | text | 65535 | 0 | Y | N | 修改字段: | |
15 | field_get | text | 65535 | 0 | Y | N | 查询字段: | |
16 | table_nav_name | varchar | 500 | 0 | Y | N | 跨表导航名称: | |
17 | table_nav | varchar | 500 | 0 | Y | N | 跨表导航: | |
18 | option | text | 65535 | 0 | Y | N | 配置: | |
19 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
20 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | collect_id | int | 10 | 0 | N | Y | 收藏ID: | |
2 | user_id | int | 10 | 0 | N | N | 0 | 收藏人ID: |
3 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
4 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
5 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
6 | title | varchar | 255 | 0 | Y | N | 标题: | |
7 | img | varchar | 255 | 0 | Y | N | 封面: | |
8 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
9 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | comment_id | int | 10 | 0 | N | Y | 评论ID: | |
2 | user_id | int | 10 | 0 | N | N | 0 | 评论人ID: |
3 | reply_to_id | int | 10 | 0 | N | N | 0 | 回复评论ID:空为0 |
4 | content | longtext | 2147483647 | 0 | Y | N | 内容: | |
5 | nickname | varchar | 255 | 0 | Y | N | 昵称: | |
6 | avatar | varchar | 255 | 0 | Y | N | 头像地址:[0,255] | |
7 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
8 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
9 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
10 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
11 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | forum_id | mediumint | 8 | 0 | N | Y | 论坛id | |
2 | display | smallint | 5 | 0 | N | N | 100 | 排序 |
3 | user_id | mediumint | 8 | 0 | N | N | 0 | 用户ID |
4 | nickname | varchar | 16 | 0 | Y | N | 昵称:[0,16] | |
5 | praise_len | int | 10 | 0 | Y | N | 0 | 点赞数 |
6 | hits | int | 10 | 0 | N | N | 0 | 访问数 |
7 | title | varchar | 125 | 0 | N | N | 标题 | |
8 | keywords | varchar | 125 | 0 | Y | N | 关键词 | |
9 | description | varchar | 255 | 0 | Y | N | 描述 | |
10 | url | varchar | 255 | 0 | Y | N | 来源地址 | |
11 | tag | varchar | 255 | 0 | Y | N | 标签 | |
12 | img | text | 65535 | 0 | Y | N | 封面图 | |
13 | content | longtext | 2147483647 | 0 | Y | N | 正文 | |
14 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
15 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
16 | avatar | varchar | 255 | 0 | Y | N | 发帖人头像: | |
17 | type | varchar | 64 | 0 | N | N | 0 | 论坛分类:[0,1000]用来搜索指定类型的论坛帖 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | type_id | smallint | 5 | 0 | N | Y | 分类ID:[0,10000] | |
2 | name | varchar | 16 | 0 | N | N | 分类名称:[2,16] | |
3 | description | varchar | 255 | 0 | Y | N | 描述:[0,255]描述该分类的作用 | |
4 | url | varchar | 255 | 0 | Y | N | 外链地址:[0,255]如果该分类是跳转到其他网站的情况下,就在该URL上设置 | |
5 | father_id | smallint | 5 | 0 | N | N | 0 | 上级分类ID:[0,32767] |
6 | icon | varchar | 255 | 0 | Y | N | 分类图标: | |
7 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
8 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | hits_id | int | 10 | 0 | N | Y | 点赞ID: | |
2 | user_id | int | 10 | 0 | N | N | 0 | 点赞人: |
3 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
4 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
5 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
6 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
7 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | notice_id | mediumint | 8 | 0 | N | Y | 公告id: | |
2 | title | varchar | 125 | 0 | N | N | 标题: | |
3 | content | longtext | 2147483647 | 0 | Y | N | 正文: | |
4 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
5 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | praise_id | int | 10 | 0 | N | Y | 点赞ID: | |
2 | user_id | int | 10 | 0 | N | N | 0 | 点赞人: |
3 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
4 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
5 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
6 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
7 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
8 | status | bit | 1 | 0 | N | N | 1 | 点赞状态:1为点赞,0已取消 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | registered_users_id | int | 10 | 0 | N | Y | 注册用户ID | |
2 | name | varchar | 64 | 0 | Y | N | 姓名 | |
3 | gender | varchar | 64 | 0 | Y | N | 性别 | |
4 | examine_state | varchar | 16 | 0 | N | N | 已通过 | 审核状态 |
5 | user_id | int | 10 | 0 | N | N | 0 | 用户ID |
6 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
7 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | sensitive_vocabulary_id | int | 10 | 0 | N | Y | 敏感词汇ID | |
2 | sensitive_vocabulary | varchar | 64 | 0 | Y | N | 敏感词汇 | |
3 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
4 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | slides_id | int | 10 | 0 | N | Y | 轮播图ID: | |
2 | title | varchar | 64 | 0 | Y | N | 标题: | |
3 | content | varchar | 255 | 0 | Y | N | 内容: | |
4 | url | varchar | 255 | 0 | Y | N | 链接: | |
5 | img | varchar | 255 | 0 | Y | N | 轮播图: | |
6 | hits | int | 10 | 0 | N | N | 0 | 点击量: |
7 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
8 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | upload_id | int | 10 | 0 | N | Y | 上传ID | |
2 | name | varchar | 64 | 0 | Y | N | 文件名 | |
3 | path | varchar | 255 | 0 | Y | N | 访问路径 | |
4 | file | varchar | 255 | 0 | Y | N | 文件路径 | |
5 | display | varchar | 255 | 0 | Y | N | 显示顺序 | |
6 | father_id | int | 10 | 0 | Y | N | 0 | 父级ID |
7 | dir | varchar | 255 | 0 | Y | N | 文件夹 | |
8 | type | varchar | 32 | 0 | Y | N | 文件类型 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | user_id | mediumint | 8 | 0 | N | Y | 用户ID:[0,8388607]用户获取其他与用户相关的数据 | |
2 | state | smallint | 5 | 0 | N | N | 1 | 账户状态:[0,10](1可用|2异常|3已冻结|4已注销) |
3 | user_group | varchar | 32 | 0 | Y | N | 所在用户组:[0,32767]决定用户身份和权限 | |
4 | login_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 上次登录时间: |
5 | phone | varchar | 11 | 0 | Y | N | 手机号码:[0,11]用户的手机号码,用于找回密码时或登录时 | |
6 | phone_state | smallint | 5 | 0 | N | N | 0 | 手机认证:[0,1](0未认证|1审核中|2已认证) |
7 | username | varchar | 16 | 0 | N | N | 用户名:[0,16]用户登录时所用的账户名称 | |
8 | nickname | varchar | 16 | 0 | Y | N | 昵称:[0,16] | |
9 | password | varchar | 64 | 0 | N | N | 密码:[0,32]用户登录所需的密码,由6-16位数字或英文组成 | |
10 | | varchar | 64 | 0 | Y | N | 邮箱:[0,64]用户的邮箱,用于找回密码时或登录时 | |
11 | email_state | smallint | 5 | 0 | N | N | 0 | 邮箱认证:[0,1](0未认证|1审核中|2已认证) |
12 | avatar | varchar | 255 | 0 | Y | N | 头像地址:[0,255] | |
13 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | group_id | mediumint | 8 | 0 | N | Y | 用户组ID:[0,8388607] | |
2 | display | smallint | 5 | 0 | N | N | 100 | 显示顺序:[0,1000] |
3 | name | varchar | 16 | 0 | N | N | 名称:[0,16] | |
4 | description | varchar | 255 | 0 | Y | N | 描述:[0,255]描述该用户组的特点或权限范围 | |
5 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
6 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
7 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
8 | register | smallint | 5 | 0 | Y | N | 0 | 注册位置: |
9 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
10 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
第五章 系统实现
5.1 注册用户功能模块
5.1.1 首页界面
系统首页以上中下的布局进行展示,正上方是系统的导航栏,中间是轮播图,下面是网站公告、新闻资讯等内容,其界面展示如下图5-1所示。
图5-1首页界面图
5.1.2 用户注册界面
用户点击右上角“注册”进入注册页面填写账号、密码、确认密码、昵称、邮箱、身份等信息后点击“注册”按钮,即可完成注册。其界面展示如下图5-2所示。
图5-2用户注册界面图
注册的关键代码如下:
public function register()
{
if (Request::isPost()) {
$request = Request::param();
$request['create_time'] = isset($request['create_time']) ? $request['create_time'] : date('Y-m-d H:i:s');
$request['update_time'] = isset($request['update_time']) ? $request['update_time'] : date('Y-m-d H:i:s');
$result = $this->validate($request, $this->validate);
if (true !== $result) {
$data['error'] = 30000;
$data['message'] = $result;
} else {
$request['password'] = md5($request['password']);
$result = $this->model->register($request, $this->table);
$data = $result;
}
} else {
$data['error'] = 30000;
$data['message'] = "field的值不能为空!";
}
return json_encode($data);
}
public function register($request=[],$table_name = ''){
$username = $request['username'];
$bol = $this->where(['username'=>$username])->find();
if (!$bol){
$result = self::allowField(true)->save($request);
if ($result) {
return ['result' => 1];
} else {
return ['error' => ['code' => 3000, 'message' => '注册失败']];
}
}else{
return ['error' => ['code' => 3000, 'message' => '注册失败,账号已存在']];
}
}
5.1.3 用户登录界面
用户注册后可以通过自己的账户名和密码进行登录的,经验证输入信息准确无误后即可完成登录。其界面如下图5-3所示。
图5-3用户登录界面图
登录的关键代码如下:
public function login()
{
if (Request::isPost()) {
$request = Request::param();
$result = $this->validate($request, $this->validate);
if (true !== $result) {
$data['error'] = 30000;
$data['message'] = $result;
} else {
$request['password'] = md5($request['password']);
$result = $this->model->login($request, $this->table);
$data = $result;
}
} else {
$data['error'] = 30000;
$data['message'] = "field的值不能为空!";
}
return json_encode($data);
}
public function login($request=[],$table_name = ''){
$username = $request['username'];
$password = $request['password'];
$bol = $this->where(['username'=>$username])->find();
if ($bol){
$password = md5($password);
if ($request['password']==$bol['password']) {
//添加token信息
$access_token['create_time'] = date('Y-m-d H:i:s');
$access_token['update_time'] = date('Y-m-d H:i:s');
$access_token['info'] = json_encode($bol);
// $access_token['info'] = $bol;
$access_token['token'] = md5(date('Y-m-d H:i:s'));
$bol_token = Db::name('AccessToken')->insert($access_token);
if ($bol_token){
$data['obj'] = $bol;
$data['obj']['token'] = $access_token['token'];
return ['result' => $data];
}else{
return ['error' => ['code' => 5000, 'message' => '登录失败,token生成失败']];
}
} else {
return ['error' => ['code' => 5000, 'message' => '登录失败,密码不正确']];
}
}else{
return ['error' => ['code' => 5000, 'message' => '登录失败,账号不存在']];
}
}
5.1.4交流论坛界面
用户可以查看交流论坛列表信息中的某一论坛详情并进行点赞、收藏和发表评论操作,也可以发表论坛内容。其界面如下图5-3所示。
图5-4交流论坛界面图
5.1.5网站公告界面
用户可以查看网站公告列表里的相关信息。其界面如下图5-5所示。
图5-5网站公告界面图
5.1.6新闻资讯界面
用户可以查看新闻资讯列表里的某一资讯详情并进行点赞、收藏和发表评论操作。其界面如下图5-6所示。
图5-6新闻资讯界面图
5.1.7个人中心界面
用户点击右上角“我的”下拉按钮的“个人中心”,进入个人中心页面可以查看个人首页、交流论坛和收藏列表信息。可以对交流论坛类别信息进行查询、重置和删除操作。其界面如下图5-7所示。
图5-7个人中心界面图
5.2 管理员功能模块
5.2.1系统用户界面
管理员可以对系统用户进行查询、重置、添加和删除管理。其界面如下图5-8所示。
图5-8个人中心界面图
添加的关键代码如下:
public function add()
{
if (Request::isPost()) {
$request = Request::param();
$request['create_time'] = isset($request['create_time']) ? $request['create_time'] : date('Y-m-d H:i:s');
$request['update_time'] = isset($request['update_time']) ? $request['update_time'] : date('Y-m-d H:i:s');
$result = $this->validate($request, $this->validate);
if (true !== $result) {
// 验证失败 输出错误信息
$data['error'] = 30000;
$data['message'] = $result;
} else {
if($this->table == 'user'){
$request['password'] = md5($request['password']);
}
$res = $this->add_before($request, $this->table, $this->table_id);
if($res['code'] == 200){
$result = $this->model->add($request, $this->table, $this->table_id);
$this->add_after($this->table);
$data = $result;
}else{
$data['error'] = $res;
}
}
} else {
$data['error']['code'] = 30000;
$data['error']['message'] = "field的值不能为空!";
}
return json_encode($data);
}
删除的关键代码如下:
public function del()
{
$request = Request::param();
$result = $this->model->del_data($request, $this->table, $this->table_id);
$data = $result;
return json_encode($data);
}
5.2.2系统管理界面
管理员可以对系统轮播图进行查询、重置、添加和删除管理。其界面如下图5-9所示。
图5-9系统管理界面图
轮播图上传的关键代码如下:
public function upload()
{
$month = date('Ym', time());
$data = 'file';
$path = 'upload/file/' . $month . "/";//上传文件保存位置
$allow_ext = explode(",", "jpg,jpeg,png,jfif,bmp,gif,ico,xls,xlsx,AVI,mov,rmvb,rm,FLV,mp4,3GP");
if ($_FILES) {
$file = $_FILES[$data];
$rst = [];
if (!empty($file['name'])) {
$file_type = explode('.', $file['name']);
$ext = end($file_type); //获取文件的格式
$ext = strtolower($ext);
if (!in_array($ext, $allow_ext)) {
$rst['error']['code'] = 30000;
$rst['message'] = '只能上传jpg,jpeg,png,jfif,bmp,gif,ico,xls,xlsx,AVI,mov,rmvb,rm,FLV,mp4,3GP类型文件';
} else {
if (!is_dir($path))
{
mkdir($path, 0777, true);
};
$name = date('YmdHis') . '_' . rand(10000, 99999) . '.' . $ext;
$save_rst = move_uploaded_file($file['tmp_name'], $path . $name);
if ($save_rst !== false) {
$rst['result']['url'] = 'http://'.$_SERVER['HTTP_HOST'].'/'.$path . $name;
} else {
$rst['error']['code'] = 30000;
$rst['error']['message'] = '文件上传失败';
}
}
} else {
$rst['error']['code'] = 30000;
$rst['error']['message'] = '未选择文件';
}
} else {
$rst['error']['code'] = 30000;
$rst['error']['message'] = '未获取到文件';
}
return json_encode($rst);
}
5.2.3网站公告管理界面
管理员可以查看网站公告列表中的某一公告详情,可以对网站公告信息进行查询、重置、添加和删除管理。其界面如下图5-10所示。
图5-10网站公告管理界面图
5.2.4资源管理界面
管理员可以添加新闻分类信息,可以查看资讯列表信息中的某一资讯详情及评论信息,可以对新闻资讯列表信息进行查询、重置、添加和删除管理。其界面如下图5-11所示。
图5-11资源管理界面图
5.2.4交流管理界面
管理员对交流论坛列表和论坛分类列表信息进行查询、重置、添加和删除管理。其界面如下图5-12所示。
图5-12交流管理界面图
第六章 系统测试
6.1 测试目的
无论什么样的系统,测试都至关重要,通过测试可以检查出潜藏的缺陷,从而确保系统的性能和稳定性,避免Bug的出现,并确保系统的功能和性价比达到预期的要求。
6.2 系统测试用例
系统测试包括:用户登录功能、新闻资讯查看功能、系统轮播图信息添加功能、密码修改功能测试,如表6-1、6-2、6-3、6-4所示:
用户登录功能测试:
表6-1 用户登录功能测试表
用例名称 | 用户登录系统 |
目的 | 测试用户通过正确的用户名和密码可否登录功能 |
前提 | 未登录的情况下 |
测试流程 | 1) 进入登录页面 2) 输入正确的用户名和密码 |
预期结果 | 用户名和密码正确的时候,跳转到登录成功界面,反之则显示错误信息,提示重新输入 |
实际结果 | 实际结果与预期结果一致 |
新闻资讯查看功能测试:
表6-2 新闻资讯查看功能测试表
用例名称 | 新闻资讯查看 |
目的 | 测试新闻资讯查看功能 |
前提 | 用户登录 |
测试流程 | 点击新闻资讯 |
预期结果 | 可以查看到所有新闻资讯信息 |
实际结果 | 实际结果与预期结果一致 |
系统轮播图信息添加界面测试:
表6-3 系统轮播图信息添加界面测试表
用例名称 | 系统轮播图信息添加测试用例 | |
目的 | 系统轮播图信息添加功能 | |
前提 | 管理员用户正常登录情况下 | |
测试流程 | 1)管理员点击系统管理,然后点击轮播图进入添加页面填写信息。 2)点击进行提交。 | |
预期结果 | 提交以后,页面首页会显示新的轮播图信息 | |
实际结果 | 实际结果与预期结果一致 | |
实际结果 | 实际结果与预期结果一致 |
密码修改功能测试:
表6-4 密码修改功能测试表
用例名称 | 密码修改测试用例 |
目的 | 测试管理员密码修改功能 |
前提 | 管理员用户正常登录情况下 |
测试流程 | 1)用户密码修改并完成填写。 2)点击进行提交。 |
预期结果 | 使用新的密码可以登录 |
实际结果 | 实际结果与预期结果一致 |
6.3 系统测试结果
通过编写PHP网页登录模块系统的测试用例,已经检测完毕用户登录功能、新闻资讯查看功能、系统轮播图信息添加功能、密码修改功能测试,通过这四大模块的测试为PHP网页登录模块系统的后期推广运营提供了强力的技术支撑。
第七章 总结
在开发PHP网页登录模块系统之前,我们需对用户的实际需求进行深度剖析。这不仅包括对系统的可行性研究,还包括对功能需求和其他需求的详细分析。在可行性分析阶段,我们从技术性和经济性等多个角度对系统实现的可能性进行了全面评估,结果表明,该系统的实施是完全可行的。
本文首先概述了PHP网页登录模块系统开发的背景及其意义,接着详细阐述了系统的具体业务需求,并根据这些需求对系统的结构以及功能模块进行了精细的设计。我们把这个系统划分为多个独特的功能模块,每个模块都具有其独特的功能和作用。
在深入分析系统功能需求的过程中,我们对系统的总体架构和功能模块进行了深入研究,并选择了最适合的系统开发技术来完成各个模块的开发工作。系统开发完成后,我们进行了系统的测试。测试结果表明,该系统在功能和性能方面都满足了预期的要求,具有极高的稳定性和可靠性。
参考文献
[1]陶坤美.基于PHP的管理信息系统在中波发射台中的应用[J].无线互联科技,2023,20(18):42-45.
[1]张曰花,陈红娟,刘婷婷.基于HTML5+PHP技术的化妆品网站设计与实现[J].现代信息科技,2023,7(24):33-36+40.
[2]胡涵毅.基于PHP的校园资源共享平台设计与实现[J].现代信息科技,2023,7(23):1-5.
[3]杨秀君.网页设计基础课程教学改革探索[J].科技风,2023,(33):97-99.
[4]余军.运用JQuery制作网页轮播图特效[J].电脑编程技巧与维护,2023,(11):148-150.
[5]李新荣.“HTML5+CSS3网页制作”课程实验系统设计与实现[J].电脑编程技巧与维护,2023,(10):141-143+169.
[6]刘帅,黄猛,杨光.《PHP网站开发》课程应用混合式教学的研究与实践[J].电子元器件与信息技术,2023,7(09):213-216.
[7]赵停停.基于MySQL数据库技术的Web动态网页设计研究[J].信息与电脑(理论版),2023,35(17):174-176.
[8]田玉昆.项目教学法在网页设计技术教学中的应用探析[J].电脑知识与技术,2023,19(24):140-142.
[9]田娟.基于PHP+MySQL员工信息管理系统后台设计与实现[J].电脑知识与技术,2023,19(23):47-49.
[10]刘艳春,张宗霞.基于PHP的动态网站设计与实现[J].集成电路应用,2023,40(07):238-239.
[11]Yin Z ,Lee J U S .Security Analysis of Web Open-Source Projects Based on Java and PHP[J].Electronics,2023,12(12):
[12]田娟.PHP+MySQL动态网站开发课程教学改革实践探究[J].电脑知识与技术,2023,19(11):156-158.DOI:10.14004/j.cnki.ckt.2023.0625
[13]Américo R ,Fernando A E B .PHP code smells in web apps: Evolution, survival and anomalies[J].The Journal of Systems Software,2023,200
[14]陈赵云.基于PHP+MySQL的视频上传与删除功能实现[J].现代信息科技,2023,7(05):21-23+29.
[15]Report Reveals Over 61% of PHP Teams Using Unsupported PHP Versions[J].M2 Presswire,2023,
[16]朱真真,王柯梦.php在动态网站开发中的优势与具体应用分析[C]//广东省教师继续教育学会.广东省教师继续教育学会第六届教学研讨会论文集(一).河南省商丘工学院;,2023:3.
[17]张黎平.“互联网+”背景下PHP动态网站开发技术研究[J].无线互联科技,2022,19(16):154-156.
[18]赵婉彤.基于PHP与MySQL的动态网站设计与实现[J].电脑编程技巧与维护,2022,(08):103-105+109.
[19]张俊.MySQL数据库在PHP网页中的动态应用[J].集成电路应用,2022,39(06):112-113.
[20]么伟伟,张涛.PHP技术在企业网站开发中的应用研究[J].现代工业经济和信息化,2022,12(05):158-159+23
致 谢
首先,我要向我的论文指导老师献上最深的敬意和感谢。在整个论文创作的过程中,老师的指导是我前行道路上的明灯。他耐心地指导我,用他深厚的学识和敏锐的洞察力,提出了许多具有深远意义的建议。他的严谨治学态度、敬业务实的精神和高超的教学艺术,都为我树立了追求卓越的榜样,对我未来的人生道路和学业成就产生了深远的影响。
同时,我要向我班的同学们表达我的诚挚感谢。你们既是我的亲密战友,也是我生活中的良师。正是你们的鼓励和支持,使我在大学期间的学习和生活变得丰富多彩。我要对那些在我求学路上给予我帮助的所有老师和同学们表示衷心的感谢,是你们给了我继续前进的力量。
我还要向我无私的父母表达我的深深感激。是你们用无尽的爱和关怀,将我抚养成人。你们的养育之恩,我将永世铭记在心,我将会用我的行动和成绩来回报你们的期望。在未来的日子里,我将会继续努力,用实际行动来回报你们对我付出的所有。
总的来说,在这篇论文中,我要向所有给予我帮助和支持的人表示感谢,包括我的指导老师、同学们、家人和朋友们。是你们的爱和关怀,让我在学术和个人生活中取得了丰硕的成果。我会珍视这份感恩之情,将这份力量带入我的学习和未来的生活中,持续追求卓越,努力成为一个更优秀的人。