• PHP+防止SQL注入的网上二手交易平台 毕业设计-附源码241552


    防止SQL注入的网上二手交易平台的设计与实现

    摘 要

    近年来,随着移动互联网的快速发展,电子商务越来越受到网民们的欢迎,电子商务对国家经济的发展也起着越来越重要的作用。简单的流程、便捷可靠的支付方式、快捷畅通的物流快递、安全的信息保护都使得电子商务越来越赢得网民们的青睐。现今,大量的计算机技术应用于商业领域,包括软件技术、网络技术、硬件技术等。越来越多的企业使用计算机来开展业务、销售、购买和宣传各种商品。各种商业系统和软件已经解放了企业的双手,并使企业能够最大限度地获得利益。因此,计算机技术在商业领域占有非常重要的地位。

    本文主要通过对系统的前台系统和后台管理系统进行了功能性需求分析,对系统的安全性和可扩展性进行了非功能性需求分析。在详细的需求分析的基础上,根据系统的功能设计确定了数据库结构,实现完整的代码编写。网上二手交易平台使用 Dreamweaver、HBuilder代码编辑器、Apache服务器等开发工具,完成了系统的主要模块的页面设计和功能实现。本文展示了首页页面的实现效果图,并通过代码和页面介绍了用户注册功能、商品发表功能、充值下单功能、信息反馈功能、加入购买和查看购买功能、生成订单和查看我的订单功能、在线付款功能以及订单管理功能的实现过程。

    关键词:电子商务; HBuilder代码编辑器;商品搜索

    Design and implementation of online second-hand trading platform to prevent SQL injection

    Abstract

    In recent years, with the rapid development of mobile Internet, e-commerce is more and more welcomed by Internet users. E-commerce also plays a more and more important role in the development of national economy. Simple process, convenient and reliable payment method, fast and smooth logistics express delivery and safe information protection all make e-commerce more and more popular among Internet users. Nowadays, a large number of computer technologies are used in commercial fields, including software technology, network technology, hardware technology and so on. More and more enterprises use computers to carry out business, sell, buy and publicize all kinds of goods. Various business systems and software have liberated the hands of enterprises and enabled enterprises to maximize benefits. Therefore, computer technology plays a very important role in the commercial field.

    This paper mainly analyzes the functional requirements of the foreground system and background management system, and analyzes the non functional requirements of the security and scalability of the system. Based on the detailed demand analysis, the database structure is determined according to the functional design of the system to realize the complete coding. The second-hand trading website uses Dreamweaver, hbuilder code editor, Apache server and other development tools to complete the page design and function implementation of the main modules of the system. This paper shows the implementation effect diagram of the home page, and introduces the implementation process of user registration function, commodity publishing function, recharge order function, information feedback function, add purchase and view purchase function, generate order and view my order function, online payment function and order management function through code and page.

    Key words: E-commerce; Hbuilder code editor; Product search

    目  录

    第1章 绪论

    1.1 研究背景与意义

    1.2 开发现状

    1.3 论文组成结构

    第2章 开发工具及相关技术介绍

    2.1 PHP开发语言

    2.2 JavaScript脚本语言

    2.3 Mysql数据库

    2.4 AJAX技术

    第3章 系统分析

    3.1 可行性分析

    3.1.1 经济可行性

    3.1.2 技术可行性

    3.1.3 操作可行性

    3.2 功能性需求分析

    3.3 非功能性需求分析

    3.4 业务流程分析

    第4章 系统设计

    4.1 系统架构设计

    4.2 功能模块设计

    4.3 数据库设计

    4.3.1 概念模型设计

    4.3.2 数据库逻辑设计

    4.3.3 数据库表设计

    第5章 系统实现

    5.1 用户登录的实现

    5.2 系统前台主要功能实现

    5.2.1 首页的实现

    5.2.2 用户注册的实现

    5.2.3 商品展示的实现

    5.2.4 商品搜索的实现

    5.2.5 商品购买的实现

    5.2.6 在线留言的实现

    5.3 系统后台主要功能实现

    5.3.1 用户管理的实现

    5.3.2 商品管理的实现

    5.3.3 订单管理的实现

    第6章 系统测试

    6.1 系统可靠性测试

    6.2 系统功能性测试

    6.3 系统合格性测试

    6.4 测试结果

    第7章 总结与展望

    参考文献

    致谢

    1. 绪论
      1. 研究背景与意义

    21世纪是一个以网络为核心的信息时代,数字化、网络化与信息化为特征的时代。这些多元化的组合在国际贸易和商业领域得到了广泛的应用,已经成为各国商务发展的一大趋势。应运而生的网上二手交易平台作为信息时代的一种新的商品交易形式,不仅对商品销售的运作方法和过程产生了巨大的影响,而且也带来了一场革命,这场革命的影响将远远超过在线购物本身的意义,它还将会在社会的生产和管理、人们的生活和就业、政府职能、法律制度以及文化等方面改变人类的思维观念和人际交往模式。

    跳蚤市场(Group purchase)就是二手商品的交易市场,在当前在高校中,往往在临近毕业时是常见的,网上二手交易平台商品多样化和价格低廉的优势,很受同学们的青睐,它也起到了商品再利用,节约资源的作用。然而在有如此多的优点的同时,也有着许多的缺点,比如只有在毕业之际,人们才比较聚集,在平常,人们难以聚集起来这样买二手商品,而且平常也没有时间去这样买。

      1. 开发现状

    由于近年来在线销售行业的兴起,也了解了一些相关信息。在中国,以前的销售只是传统销售,而在线销售似乎满足了市场需求。到目前为止,有一些家喻户晓的名字,如淘宝和天猫。然而,这种在线销售也有一些缺点:用户不能在下订单并付款后立即提货,他们还应该考虑货物是否受损。该系统是根据商品网络上的销售情况开发的。

    经过几年的发展,许多被消费者认可的网上购物中心已经出现在国内外。这些网上购物中心的内容是多样化的,它们包含的功能相对完善,包括注册用户、搜索商品、管理订单、介绍商品细节以及在线留言。如今,互联网的广泛使用在一定程度上导致了国内外在线购物中心的发展,只要企业通过这个平台在线打字,就可以随时管理系统的内容。通过展示商品内容和发布公告,鼓励消费者购买和进行在线交易。

      1. 论文组成结构

    根据市场调研得到的信息数据,结合国内外前沿研究,利用相关系统开发和设计方法,最终设计出网上二手交易平台。

    本文共有七章,如下所示。

    第一章概述了网上二手交易平台的研究目的和意义;精炼地总结了国内外在内的领域研究情况和未来的研究趋势,最后给出了论文的组成结构。

    第二章简要概述了本文所用的开发技术和工具。

    第三章简要对系统各业务流程进行需求分析、可行性分析。

    第四章对网上二手交易平台进行设计。

    第五章对网上二手交易平台进行实现,并贴出相关页面截图,语言描述出具体功能实现的操作方法。

    第六章对网上二手交易平台采用测试用例的方式来对一些主要功能模块测试,最后得出测试结果。

    第七章总结全文并对未来的研究做出展望。

    1. 开发工具及相关技术介绍
      1. PHP开发语言

    PHP是一种面向对象的程序设计语言,类是PHP程序的基本组成单元,类中又包含了属性和方法,在类中又可以创建无数个对象。类中包含的主要成员是字段和方法,字段是指一种数据变量,方法是指对字段进行操作的集合,包括给其他变量赋值、调用方法等[1]。PHP代码都是编写在类体中,类体中的每个数据项都可以看作是一个对象,PHP不支持类的多重继承,但可以支持接口的多重继承,并且支持类和接口的实现[2]。由于PHP通常在网络环境中使用,所以PHP提供了一个防止代码恶意攻击的安全机制,同时,PHP具有强类型机制、自动收集垃圾和异常处理等特性,这些都是PHP语言健壮性的重要保证[3]。

    1、PHP语言具有如下特点:

    (1)PHP 结合 C、Java、Perl 以及自创的新语法形成了自己独特的语法。

    (2)PHP可以更快速的执行动态网页,当然这只是相对于CGI或者Perl来说,PHP可以在HTML文档中嵌入程序,而且去执行,另外PHP能够实现CGI的所有功能,因此说明PHP具有很强大的功能[4]。

    (3)大部分当下流行的数据库和操作系统PHP语言都能够支持。

    (4)PHP语言的最重要特点就是可以让C、C++进行扩展

    2、PHP语言具有如下优势:

    (1)开放源代码:事实上PHP的所有源代码都可以得到。

    (2)免费性:PHP是开源代码并且免费

    (3)快捷性:PHP对于初学者来说,它不止编辑简单可以嵌入与HTML语言中,而且对于程序开发和运行也是非常快速的,并且非常容易掌握。

    (4)跨平台性强:PHP是可以在服务器运行的脚本语言,所以在UNIX、Android、Mac OS、WINDOWS等操作平台上都可以运行[5]。

    (5)效率高:PHP对系统资源的消耗相当少,所以它的效率高。

    (6)图像处理:PHP不止是可以使用GD2对图像进行处理,而且他还可以完成对图像的创建。

    (7)面向对象:php4、php5对于PHP在面向对象上,有了许多的改进,PHP语言开发大型商业程序也是可以胜任的[6]。

      1. JavaScript脚本语言

    此作品中,其中包含了页面的搭建,以及前后台数据接口的连接等,而对于实现用户页面交互以及一些页面逻辑性判断等功能都是用JavaScript完成的[7],而JavaScript是已经被广泛用于Web应用开发,是一种属于网络的脚本语言,常用来为网页添加各式各样的动态功能,为用户提供更流畅美观的浏览效果。通常JavaScript脚本是通过嵌入在HTML中来实现自身的功能。JavaScript作为一种描述语言,作用于web前端,它基于对象(object)和事件驱动(Event Driven)并且安全性也较好。它可以有效的在客户端运行并为服务器减轻负担[8]。

    1、JavaScript具有的特点:

    (1)脚本语言。JavaScript是一种脚本语言并具有解释性,在程序运行过程中,它就可以进行解释[9]。

    (2)基于对象。JavaScript可以创建对象,而且还可以使用现在存在的对象,它是基于对象的脚本语言。

    (3)简单。JavaScript不对使用的数据类型有着严格的要求,应用的是弱类型的变量类型,设计是十分紧凑简单。

    (4)动态性。JavaScript是可以不经过Web服务器对用户的操作做出相应,是可以采用事件驱动的脚本语言。

    (5)跨平台性。JavaScript可以不依赖操作系统,但需要浏览器的支持。所以在编写JavaScript脚本后可以在任意机器上使用,但要注意的一点,使用的浏览器是支持JavaScript脚本语言,现在大多浏览器也支持JavaScript[10]。

    2、JavaScript的用途

    JavaScript的用途是解决页面交互和数据交互,最终目的是丰富客户端效果以及数据的有效传递[11]。

    (1)实现页面交互,提升用户体验实现页面特效。即js操作html的dom节构或操作样式。

    (2)客户端表单验证。当数据传送到服务端前,可以将用户填入并上交的信息快速有效的验证,进行了数据的交互,为服务器减轻了负担[12]。

      1. Mysql数据库

    Mysql Database,通常简称为Mysql,是一款关系型数据库的管理系统。Mysql数据库系统是目前最流行的关系型数据库管理系统之一,其系统具有良好的可移植性,功能强大且使用十分方便[8]。Mysql支持很多系统和硬件,包括HP-UX,Linux,MicrosoftWindows,SunSolaris,AppleMac等[13]。

    Mysql系统的特点:

    (1)Mysql的多线索服务器的体系结构使其只利用很少的资源就能够支持多用户的、大数据的高性能事务处理;

    (2)Mysql支持大量的多媒体数据,例如声音、动画、二进制图形和多维数据结构等;

    (3)Mysql提供了安全保密管理系统,具有良好的安全性、一致性和完整性;

    (4)具有新的分布式数据库能力和分布处理的能力;

    (5)提供了一些高级语言的接口软件,可以帮助快速开发基于客户端的应用程序,具有良好的移植性、可连结性和可兼容性[14]。

    Mysql数据库逻辑结构包含表空间(tablespace)、段(segment)、范围(extend)、数据块(datablock)、和模式对象(schemaobject) 。每一个数据库都可以逻辑划分为一个或多个表空间,每一个表空间都是由一个或多个数据文件来组成。Mysql数据库分为系统表空间和非系统表空间,每一个Mysql数据库都包含一个称作SYSTEM的系统表空间。

      1. AJAX技术

    AJAX是创建交互式网页的一种开发技术,利用AJAX技术可以实现以无刷新网页的方式更新HTML元素中的内容。传统的网页如果要更新网页内容,必须重新加载整个页面,而AJAX使用异步数据传输在网页和Web服务器之前传递HTTP请求,这样可以使网页只请求少量信息,而不用刷新整个页面[15]。

    1. 系统分析
      1. 可行性分析

    本系统将在经济、技术、操作这三个角度上进行可行性分析。

        1. 经济可行性

    整个系统从设计到开发以及测试过程严谨步骤齐全,所有工作任务全部由本人完成,并未获取外部技术支持,节约了一切服务成本开销以及人工成本,在硬件方面,为节约成本使用一台二手移动工作站作为项目部署服务器以及数据库服务器,成本在一万元一下,真个网络部署也是由本人独立完成不涉及到其他人工费用,整个开发过程本着低成本,低消耗的原则。

        1. 技术可行性

    技术可行性分析的目的是确认该系统能否利用现有技术实现,并评估开发效率和完成情况。技术的可行性是指在当前的技术条件下,计算机软件和硬件的开发是否能够满足发展的要求。因为该系统的开发基于PHP语言,所以开发该系统所需的软件和硬件条件可以在普通计算机上满足。因为它占用的内存相对较少,所以用Mysql数据库开发和设计软件理论上没有问题,因为它占用的内存太少。上述技术可以有效地保证系统的成功和高效开发。

        1. 操作可行性

    网上二手交易平台的使用界面简单易于操作,采用常见的界面窗口来登录界面,通过电脑进行访问操作,用户只要平时使用过电脑都能进行访问操作。此系统的开发采用PHP技术开发,人性化和完善化是B/S结构开发比较显要的特点使得用户操作相比较其他更加简洁方便。易操作、易管理、交互性好在本系统操作上体现得淋漓尽致。

      1. 功能性需求分析

    前台需求:

    (1)用户模块:主要包括用户的注册和登陆、用户个人信息管理和用户买入卖出查询等功能。

    (2)商品模块:主要包括商品浏览、商品信息展示、商品搜索、商品购买等功能。

    (3)购买模块:主要包括添加购买、查看我的购买和删除购买等功能。

    (4)订单模块:主要包括生成订单、我的订单、查看订单详细信息、在线支付、确认收货等功能。

    (5)留言反馈模块:主要让买家向卖家进行消息的反馈,然后由卖家来回复反馈问题。

    后台需求:

    (1)用户管理:主要包括用户列表、用户等级管理和用户评论管理等功能。

    (2)商品管理:主要包括商品列表、充值管理、商品信息管理等功能。

    (3)订单管理:主要包括订单状态管理。

    (4)地区管理:主要包括地区的管理。

    系统用例图如下所示。

    图3-1系统用例图

      1. 非功能性需求分析 

    随着用户量的增加,系统可能会需要同时服务上千、上万个页面,服务器需要同时响应大量用户的操作,这就要求系统需要有良好的可扩展性,否则系统会出现延迟,卡顿甚至服务器崩溃的问题。高扩展性可以使软件保持旺盛的生命力,同时也能够使系统更好的适应用户增加、提高性能需求、增加应用功能等改变。

    系统中保存了大量用户和管理员的个人信息,因此,保证系统服务器和数据安全是在开发过程中需要考虑的重要问题。安全性包括服务器安全、操作系统安全、数据库安全、程序代码安全以及用户个人信息和支付安全等,系统可以通过采用防火墙技术、加密技术、认证技术等来增强其安全性,只有一个健壮安全的系统才能具有长久的生命力。

      1. 业务流程分析

    网上二手交易平台的前台中,用户模块和商品模块进行数据交互,实现购买的功能。前台的功能主要包括用户模块、商品模块、充值模块、购买模块和订单模块。

    网上二手交易平台的后台中,管理员对用户在前台提交申请产生的数据进行处理,以满足用户的需求。前台系统和后台系统有数据交互,整个系统各个部分相互独立又密不可分。后台的功能主要包括用户管理、商品管理、充值管理、订单管理。

    系统业务流程图如下所示。

    图3-2系统业务流程图

    1. 系统设计
      1. 系统架构设计

    软件系统的功能是多样的,在软件设计的过程中分层进行的思维是极为重要的,这样的思维可以在软件开发的过程中很大程度降低层之间的耦合度,这一点是符合“低耦合、高内聚”的软件设计原则的。因此,可以把网上二手交易平台划分为显示层、数据层和业务层。在系统的架构中,为了方便上层调用完成相应的功能,每个层次都会为其对应的上层提供相应的接口。

    系统架构图如下所示。

    图4-1系统架构图

    1.显示层

    此层主要是为用户提供计算机交互的UI界面,它根据用户的相应操作来提供相应的逻辑处理。

    2.数据库层

    数据库不仅是对软件所涉及的实体映射,而且也是系统读取和处理数据的关键所在。本系统的整个操作流程设计都是围绕着数据库里面的数据所展开的。

    3.业务层

    主要是通过系统的业务层中的业务逻辑来实现业务需求,依据相应的需求,剖析实现的策略和对应的业务逻辑,其优劣,在很大程度上决定了软件的质量,所以,整个系统成败的主要原因在于业务的逻辑实现。

      1. 功能模块设计

    通过软件的需求分析已经获得了系统的基本功能需求。根据各大功能模块的不同,将系统分为各种功能大块。系统功能结构如下图所示。

    图4-2系统功能结构图

    注册/登录

    游客(未进行注册或登陆的用户)可以浏览、搜索商品,但不能进行收藏和购买。用户注册首先需要进行表单验证,来验证用户名和手机号码是否合法,然后验证用户名和手机号是否已经存在,验证通过即可注册。

    注册成功后,用户可以通过输入用户名来登录系统,输入密码后进行验证。登录成功后,用户可以使用商品收藏、商品购买、查看我的订单、个人信息管理等功能。

    个人信息管理

    用户登录系统后,在账户设置中,可以修改昵称、头像、手机号、登陆密码、收货地址等个人基本信息。

    商品搜索

    系统首页展示了商品搜索输入框,用户在输入框内输入与商品名称相关的关键字,系统通过模糊查询搜索到用户需要的商品并展示。

    商品信息展示

    用户在浏览商品时,点击某一个商品,跳转到该商品的信息展示页。在商品信息页面展示了商品的详情信息,比如商品介绍,商品详情,商品销量和收藏量,商品评价等,用户通过浏览信息了解商品的主要功能和评价,最终决定是否购买。

    商品购买

    在商品信息页面,用户可以通过点击“购买”进行购买商品,点击后跳转到订单生成页面。订单生成页面会展示商品信息,收货地址,优惠信息等,用户确认后信息无误点击“提交”生成订单,订单生成后跳转到支付页面,支付完成则购买成功。

    查看订单详情

    用户在查看我的订单列表时,可以点击某一个订单来查看该订单的详细信息,主要包括订单编号、订单状态、订单日期、订单中的商品、交易金额等。

    商品列表

    管理员可以在“商品列表”中展示商城中需要销售的商品,包含商品名称,商品属性以及类目等商品信息。管理员可以对商品进行搜索,按分类查询商品。

    商品添加

    添加商品首先需要输入商品基本信息,如商品名称、商品数量、商品分类等;然后需要编辑商品信息详情,如商品规格,商品描述,商品图片等。管理员也可以删除已添加的商品。

    商品管理

    用户在购买商品时需要选择商品规格,管理员可以设置商品规格的名称以及展示的顺序等。管理员还可以给商品规格添加属性值,也可以删除不需要的属性值。同时,管理员可以编辑商品信息,如商品介绍、商品展示图片等,方便用户浏览。

    留言反馈管理

    卖家可以在后台为用户提供建议服务,卖家可以查看用户建议的状态,对于没有及时回复的建议快速给予回答。卖家还可以进行建议分类,比如购物的流程、对商品的疑问、支付方式等。通过分类添加,方便用户查看,使用户获得更好的用户体验。

      1. 数据库设计
        1. 概念模型设计

    概念设计包括实体和联系两部分,如该系统中,用户是一个实体,其属性包括用户 ID 标识、用户名、密码、电话、地址等属性。联系是指实体之间有意义的关联,包括一对一、一对多、多对多三种类型。

    系统E-R图如下所示。

    图4-3系统E-R图

    在图中,用户购买商品,关系为1:N,管理员审核商品,关系为1:N,用户和购买的关系为1:1,用户和订单的关系为1:N。

        1. 数据库逻辑设计

    针对系统的实体和属性,结合数据设计思想,对系统的逻辑设计的内容进行如下描述。

    商品(商品编号、物品名称、物品类型、物品价格、物品数量、物品图片、上架人)。

    订单(订单编号、物品编号、物品名称、物品类型、物品价格、物品数量、购买数量、总价格、预存金、交易方式、上架人、购买人、是否支付)。

    反馈(反馈编号、标题、回复内容、接受人、反馈人)。

        1. 数据库表设计

    数据库表是设计和实现系统的一个重要基础。以下列出了该购物系统几个重要的数据库表。

    campus_management

    字段名称

    类型

    长度

    不是null

    主键

    字段说明

    campus_management_id

    int

    11

    主键

    校区管理ID

    campus

    varchar

    64

    校区

    recommend

    int

    11

    智能推荐

    create_time

    datetime

    0

    创建时间

    update_time

    timestamp

    0

    更新时间

    cart

    字段名称

    类型

    长度

    不是null

    主键

    字段说明

    cart_id

    int

    11

    主键

    购物车ID

    title

    varchar

    64

    标题

    img

    varchar

    255

    图片

    user_id

    int

    10

    用户ID

    create_time

    timestamp

    0

    创建时间

    update_time

    timestamp

    0

    更新时间

    state

    int

    1

    状态使用中,已失效

    price

    double

    8

    单价

    price_ago

    double

    8

    原价

    price_count

    double

    10

    总价

    num

    int

    8

    数量

    goods_id

    mediumint

    8

    商品id

    type

    varchar

    64

    商品分类

    description

    varchar

    255

    描述

    collect

    字段名称

    类型

    长度

    不是null

    主键

    字段说明

    collect_id

    int

    10

    主键

    收藏ID

    user_id

    int

    10

    收藏人ID

    source_table

    varchar

    255

    来源表

    source_field

    varchar

    255

    来源字段

    source_id

    int

    10

    来源ID

    title

    varchar

    255

    标题

    img

    varchar

    255

    封面

    create_time

    timestamp

    0

    创建时间

    update_time

    timestamp

    0

    更新时间

    goods

    字段名称

    类型

    长度

    不是null

    主键

    字段说明

    goods_id

    mediumint

    8

    主键

    产品id

    title

    varchar

    125

    标题

    img

    text

    0

    封面图

    description

    varchar

    255

    描述

    price_ago

    double

    8

    原价

    price

    double

    8

    卖价

    customize_field

    text

    0

    自定义字段

    sales

    int

    10

    销量

    inventory

    int

    11

    商品库存

    type

    varchar

    64

    商品分类

    hits

    int

    10

    点击量

    content

    longtext

    0

    正文产品的主体内容

    create_time

    timestamp

    0

    创建时间

    update_time

    timestamp

    0

    更新时间

    img_1

    text

    0

    主图1

    img_2

    text

    0

    主图2

    img_3

    text

    0

    主图3

    img_4

    text

    0

    主图4

    img_5

    text

    0

    主图5

    source_table

    varchar

    255

    来源表

    source_field

    varchar

    255

    来源字段

    source_id

    int

    10

    来源ID

    user_id

    int

    11

    添加人

    order

    字段名称

    类型

    长度

    不是null

    主键

    字段说明

    order_id

    int

    11

    主键

    订单ID

    order_number

    varchar

    64

    订单号

    goods_id

    mediumint

    8

    商品id

    title

    varchar

    32

    商品标题

    img

    varchar

    255

    商品图片

    price

    double

    10

    价格

    price_ago

    double

    10

    原价

    num

    int

    8

    数量

    price_count

    double

    8

    总价

    norms

    varchar

    255

    规格

    type

    varchar

    64

    商品分类

    contact_name

    varchar

    32

    联系人姓名

    contact_email

    varchar

    125

    联系人邮箱

    contact_phone

    varchar

    11

    联系人手机

    contact_address

    varchar

    255

    收件地址

    postal_code

    varchar

    9

    邮政编码

    user_id

    int

    10

    买家ID

    merchant_id

    mediumint

    8

    商家ID

    create_time

    timestamp

    0

    创建时间

    update_time

    timestamp

    0

    更新时间

    description

    varchar

    255

    描述

    state

    varchar

    16

    订单状态

    ordinary_users

    字段名称

    类型

    长度

    不是null

    主键

    字段说明

    ordinary_users_id

    int

    11

    主键

    普通用户ID

    campus

    varchar

    64

    校区

    gender

    varchar

    64

    性别

    examine_state

    varchar

    16

    审核状态

    recommend

    int

    11

    智能推荐

    user_id

    int

    11

    用户ID

    create_time

    datetime

    0

    创建时间

    update_time

    timestamp

    0

    更新时间

    second_hand_mall

    字段名称

    类型

    长度

    不是null

    主键

    字段说明

    second_hand_mall_id

    int

    11

    主键

    二手商城ID

    seller_number

    int

    11

    卖家编号

    campus

    varchar

    64

    校区

    hits

    int

    11

    点击数

    recommend

    int

    11

    智能推荐

    cart_title

    varchar

    125

    标题

    cart_img

    text

    0

    封面图

    cart_description

    varchar

    255

    描述

    cart_price_ago

    double

    8

    原价

    cart_price

    double

    8

    卖价

    cart_inventory

    int

    11

    商品库存

    cart_type

    varchar

    64

    商品分类

    cart_content

    longtext

    0

    正文产品的主体内容

    cart_img_1

    text

    0

    主图1

    cart_img_2

    text

    0

    主图2

    cart_img_3

    text

    0

    主图3

    cart_img_4

    text

    0

    主图4

    cart_img_5

    text

    0

    主图5

    create_time

    datetime

    0

    创建时间

    update_time

    timestamp

    0

    更新时间

    seller

    字段名称

    类型

    长度

    不是null

    主键

    字段说明

    seller_id

    int

    11

    主键

    卖家ID

    campus

    varchar

    64

    校区

    gender

    varchar

    64

    性别

    seller_number

    varchar

    64

    卖家编号

    examine_state

    varchar

    16

    审核状态

    recommend

    int

    11

    智能推荐

    user_id

    int

    11

    用户ID

    create_time

    datetime

    0

    创建时间

    update_time

    timestamp

    0

    更新时间

    1. 系统实现
      1. 用户登录的实现

    用户注册完成后,点击“登陆”进入到登陆页面,输入用户名和密码,点击“登陆”按钮,对用户名和密码进行验证,根据传入的用户名和密码在数据库中是否能查询到一条用户信息,若不能返回用户信息则登陆失败,页面提示用户名或密码错误。

    登录界面如下图所示。

    图5-1登录界面

    登录系统主要代码如下。

    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' => '登录失败,账号不存在']];

            }

        }

      1. 系统前台主要功能实现 
        1. 首页的实现

    用户界面要尽量简洁大方,使用户能够方便找到需要的功能入口,浏览、购买商品,且要易于修改和维护,同时还要保证用户合法和系统安全。

    首页界面如下图所示。

    图5-1首页界面

    首页关键代码如下。

    $obj = $this->where($where)->field($field)->find();

    $result = self::allowField(true)->save($request);

    $result = $this->where($where)->update($request);

    $result = $this->where($where)->delete();

        1. 用户注册的实现

    用户进入系统首页后,点击“注册”链接进入到注册页面,按照页面提示输入用户名、密码和手机号,页面进行表单验证,验证输入的用户名和手机号是否合法,表单验证通过后,点击“立即注册”按钮,利用 Ajax 技术,对用户名和手机号实现页面无刷新验证,检测数据库中是否已经存在该用户名或手机号,若数据库中不存在,则注册成功,注册成功后,自动跳转到登录页面。

    用户注册界面如下所示。

    图5-1用户注册界面

    用户注册代码如下:

    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' => '注册失败,账号已存在']];

            }

        }

        1. 商品展示的实现

    商品展示页是展示系统商品的页面,通过sql语句:"select shangpinxinximingcheng,id,tupian,jiage,addtime from shangpinxinxi order by addtime desc",将所有是商品按商品编号降序排列。

    商品展示页面,如下图所示。

    图5-1商品展示页面

    商品展示主要代码如下。

    public function get_list($request=[],$table_name = '',$table_id = ''){

            $page = 1;

            $size = $table_name == "auth" ? 100 : 10;

            $where = [];

            $order = $table_id.'_id desc';

            $field = '*';

    //        echo $order;exit;

            $columns = Db::query( "show COLUMNS FROM `".$table_name."`");

            foreach($columns as $key=>$val){

                $field_name = $val['Field'];

                if(isset($request['like'])){

                    if ($request['like']==true){

                        //字段模糊查询

                        if(isset($request[$field_name])){

                            $where[] = [$field_name, '=', $request[$field_name]];

                        }

                    }else{

                        //字段模糊查询

                        if(isset($request[$field_name])){

                            $where[] = [$field_name, 'like', '%' . $request[$field_name] . '%'];

                        }

                    }

                }else{

                    //字段模糊查询

                    if(isset($request[$field_name])){

                        $where[] = [$field_name, 'like', '%' . $request[$field_name] . '%'];

                    }

                }

                //范围查询

                if(isset($request[$field_name.'_min'])){

                    $where[] = [$field_name, '>=', $request[$field_name.'_min']];

                }

                if(isset($request[$field_name.'_max'])){

                    $where[] = [$field_name, '<=', $request[$field_name.'_max']];

                }

            }

            //分页

            if (isset($request['page'])){

                $page = $request['page'];

            }

            if (isset($request['size'])){

                $size = $request['size'];

            }

            //排序

            if (isset($request['order'])){

                $order = $request['order'];

            }

            //查询字段

            if (isset($request['field'])){

                $field = $request['field'];

            }

            //模糊查询

            $list= $this->where($where)->order($order)->field($field)->page($page, $size)->select()->toArray();

            foreach($list as &$l){

             foreach($l as &$o){

             if(strpos($o,$_SERVER['HTTP_HOST']) === false){

             $o = str_replace('upload','http://'.$_SERVER['HTTP_HOST'].'/upload',$o);

             }

             }

            }

            return $list;

        }

        1. 商品搜索的实现

    系统首页提供了搜索商品的输入框,用户在输入框内输入想要查找商品的关键字,点击搜索按钮,系统将用户输入的关键字传递到后台。首先创建一个实体类 PageBean,该实体类的属性包括页码 pageCode、每页记录数 pageSize、总记录数 totalRecord 和一个 List 集合 beanList,利用输入的关键字对数据库进行模糊查询,将得到的结果存入 PageBean 中,返回PageBean 跳转到 goodList.php 页面,在 goodList.php 页面,使用循环将搜索到的结果分页展示。

    商品搜索界面如下图所示。

    图5-1商品搜索界面

        1. 商品购买的实现

    用户在浏览商品时,对于心仪的想要购买的商品,可以将该商品添加到购买中。点击“添加购买”按钮,页面将该商品的数据传递到后台,首先查询数据库购买表中是否已经存在该商品,若存在直接将商品数量加一,若不存在则创建一个新的购买对象,添加购买成功,数据库中的购买表添加一条信息。用户还可以点击“我的购买”查看添加到购买的商品,系统通过读取 session获取到用户 ID,将用户 ID 传递到后台,在购买表中查询该用户的所有购买信息,返回数据到我的购买页面。

    商品购买界面如下图所示。

    图5-1商品购买界面

    个人购买界面如下图所示。

    图5-1个人购买界面

    商品购买主要代码如下:

    public function add($request=[],$table_name = '',$table_id = ''){

            $result = self::allowField(true)->save($request);

            if ($result) {

                return ['result' => 1];

            } else {

                return ['error' => ['code' => 3000, 'message' => '数据添加失败']];

            }

        }

        1. 在线留言的实现

    用户在lyblist查看留言信息,先使用sql语句查询出所有留言表的数据,返回一个数组对象,在for循环里,使用php得到每个数组对象的数据,然后放入页面模板中,用户点击我要留言则跳转至lyb.php。

    在线留言界面如下图所示。

    图5-1在线留言界面

    留言回复界面如下图所示。

    图5-1留言回复界面

    在线留言主要代码如下。

    public function avg_group()

        {

            $request = Request::param();

            if (isset($request['groupby']) && isset($request['field'])) {

                if (!empty($request['groupby']) && !empty($request['field'])) {

                    $result = $this->model->avg_group($request, $this->table, $this->table_id);

                    $data = $result;

                } else {

                    $data['error']['code'] = 30000;

                    $data['error']['message'] = "groupby或者field的值不能为空!";

                }

            } else {

                $data['error']['code'] = 30000;

                $data['error']['message'] = "groupby或者field的值不能为空!";

            }

            return json_encode($data);

        }

      1. 系统后台主要功能实现 
        1. 用户管理的实现

    管理员对系统用户的管理,在yhzhgl.php实现管理员用户的管理,包括录入、删除、修改,修改密码通过SESSION获取用户名,然后输入新密码,提交到mod.php中,使用sql命令更新密码。

    用户管理界面如下图所示。

    图5-1用户管理界面

    登录密码修改界面如下图所示。

    图5-1登录密码修改界面

    登录密码修改的逻辑代码如下。

    public function change_password()

        {

            $accessTokenModel = new AccessTokenModel();

            $token = Request::header('x-auth-token');

            if (!empty($token)) {

                $result = $accessTokenModel->getToken($token);

                if (Request::isPost()) {

                    $get = Request::get();

                    $keys = array_keys($get);

                    $where = [];

                    if ($result) {

                        $where[] = ["user_id", '=', $result['user_id']];

                        $i = 0;

                        foreach ($get as $key => $val) {

                            $where[] = [$keys[$i], '=', $val];

                            $i++;

                        }

                        $request = Request::post();

                        $request['update_time'] = isset($request['update_time']) ? $request['update_time'] : date('Y-m-d H:i:s');

                        $result = $this->validate($request, $this->validate);

    $new_password['password'] = $request['password'];

                        if (true !== $result) {

                            // 验证失败 输出错误信息

                            $data['error'] = 30000;

                            $data['message'] = $result;

                        } else {

                            $result = $this->model->change_password($new_password, $this->table, $this->table_id, $where);

                            $data = $result;

                        }

                    } else {

                        $data['error'] = 30000;

                        $data['message'] = "token错误或失效,未查询到用户数据";

                    }

                } else {

                    $data['error'] = 30000;

                    $data['message'] = "field的值不能为空!";

                }

            } else {

                $data['error'] = 30000;

                $data['message'] = "token的值不能为空!";

            }

            return json_encode($data);

        }

        1. 商品管理的实现

    管理员可以获取系统中所有商品的列表并对其进行编辑。管理员在添加商品时,需要输入商品基本信息,如名称、价格、规格等,还需要输入商品详情描述,包括对商品功能的描述以及展示图片等。添加商品完成,数据库商品表添加一条信息。管理员可以搜索商品,同时可以对已经添加的商品进行编辑。

    商品管理界面如下图所示。

    图5-1商品管理界面

    商品管理主要代码如下。

    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['code'] = 1;

                            $rst['result']['url'] = 'http://'.$_SERVER['HTTP_HOST'].'/'.$path . $name;

    //                        $rst['ext'] = $ext;

                        } 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);

        }

        1. 订单管理的实现

    管理员在后台管理界面点击到所有订单界面dingdan_list.php,向控制层dingdanAction发送请求,搜索当前所有订单信息,dingdanAction向订单数据访问层调用搜索全部订单的请求,向数据库的订单表搜索当前所有订单并将订单信息以对象的形式层层返回到dingdan_list.php界面,显示出当前所有订单信息。同时可以删除过期订单,确认已有订单,进行发货处理。

    订单管理界面如下图所示。

    图5-1订单管理界面

    订单管理主要代码如下。

    public function sum()

        {

            $request = Request::param();

            if (isset($request['field'])) {

                if (!empty($request['field'])) {

                    $result = $this->model->sum_field($request, $this->table, $this->table_id);

                    $data = $result;

                } else {

                    $data['error']['code'] = 30000;

                    $data['error']['message'] = "field的值不能为空!";

                }

            } else {

                $data['error']['code'] = 30000;

                $data['error']['message'] = "field的值不能为空!";

            }

            return json_encode($data);

    }

    1. 系统测试
      1. 系统可靠性测试

    以进入系统首页的访问速度为例展示系统的性能测试;系统的主要用户群体是购物理念较为先进的消费者,系统要在3秒钟内响应;需要完成页面的菜单栏、首页轮播图片、类目及商品列表以及各功能模块入口等元素的显示。

      1. 系统功能性测试

    功能性测试是指执行指定的工作流程,通过对一个系统的所有特性和功能都进行测试确保符合需求和规范。

    系统功能性测试表如下表所示。

    表6-1系统功能性测试表

    编号

    测试功能

    测试内容

    测试结果

    1

    用户登录

    1.验证用户名与密码的正确性。

    2.验证密码是否可见。

    通过

    2

    首页展示

    1.首页数据是否成功加载。

    2.验证搜索功能的准确性。

    3.验证是否可以异步加载。

    4.验证导航栏按钮。

    通过

    3

    个人信息修改

    1.验证登录名是否可以正常更改。

    2.验证联系方式是否可以更改。

    3.验证收货地址可以正常修改。

    4.验证密码是否可以修改。

    通过

    4

    购买管理

    1.购买清单是否可以生成。

    2.验证消费信息是否准确。

    通过

    5

    商品管理

    1.商品信息是否与上传一致。

    2.是否能完成价格修改。

    3.验证库存信息修改。

    通过

    6

    订单处理

    1.能否正常上传单号完成发货。

    2.验证数据准确性。

    通过

    7

    添加商品

    1.上传商品是否添加验证。

    2.图片是否成功上传。

    3.验证表单是否提交成功。

    通过

    8

    用户管理

    1.验证用户录入功能。

    2.验证用户违规清理功能。

    通过

      1. 系统合格性测试

    集成测试后,所有的模块已经全部连接完毕,形成了一个完整的系统。合格性测试是在集成测试完毕后,进一步对系统进行综合性的检测。经过合格性测试,可以检查出系统是否符合系统的设计,能够完成需求的所有功能。本系统经过最后的测试,所有模块功能都能按预定要求工作。

      1. 测试结果

    在实际测试中,经过一系列系统性的测试,使我们能够及时发现一些系统在设计中出现的疏忽和漏洞。经过严密的测试,不仅发现了模块内部的错误,也查找到模块连接后产生的错误。经过测试,对系统产生错误的地方进行优化、修改和完善,使得系统能够实现最初设计的基本功能。

    1. 总结与展望

    本文针对网上二手交易平台的特点和用户需求,利用 PHP相关技术、Web 开发技术和MVVM 模式等技术,通过详细的需求分析、页面设计和功能设计,最终实现了一个基于 PHP 的网上二手交易平台。

    系统利用 Html 提供的标签库、JQuery 技术和 CSS 技术进行了系统页面设计,实现了包括用户模块、商品模块、购买模块和订单模块的前台系统以及包括用户管理模块、商品管理模块、订单管理模块的后台系统。另外,系统还进行了数据安全设计和推荐商品模块设计,并添加了用户的访问控制,建立了一个完整、健壮、安全稳定的网上二手交易平台。

    该系统的特点有:

    (1)简单大方,易于操作的 Web 页面;

    (2)利用 Ajax 技术使页面进行无刷新更新;

    (3)根据用户的浏览和购买记录,向用户推荐可能感兴趣的商品;

    (4)系统具有商品搜索功能,使用户能够简单方便的找到自己心仪的商品;

    (6)有良好的安全性和可扩展性,增强了系统的可靠性,使系统保持持久的生命力。

    由于时间限制和本人能力条件有限,该系统还存在一些不足,今后也会出现许多新的开发技术,未来还可以对系统做出如下改进:

    (1)优化系统页面,使页面更加美观且方便操作;

    (2)优化商品搜索功能,提供多条件选择查询搜索;

    (3)优化商品推荐功能,提高商品推荐的精准度;

    (4)优化在线支付功能,提供更多支付接口,使用户付款更加方便;

    (5)进一步提高系统的安全性,使系统更加健壮;

    (6)优化数据和代码,提升软件效率,方便系统维护和扩展。

    参考文献

    [1]黄建澍.浅谈“互联网+”对外贸的影响(深圳)[J].知识经济,2016(15).

    [2]张周平.2017年度中国电子商务市场数据监测报告[R].电子商务研究中心,2018.

    [3]PanH,JiangWR,YanJ,etal.DesignandImplementationofE-commerceFeatureMajorWebsite[C]//SecondInternationalConferenceonMultimedia&InformationTechnology.IEEE,2015.

    [4]中国互联网络信息中心,李静.第41次《中国互联网络发展状况统计报告》发布[J].中国广播,2018.

    [5]HeidarzadehHanzaeeK,JavanbakhtA.Theeffectsofshoppingenvironmentonconsumptionemotions,perceivedvaluesandbehavioralintentions[J].ManagementScienceLetters,2013:2501-2512.

    [6]彭非.B2B电子商务模式在我国的研究现状及发展趋势探析[J].金融经济,2017(2):85-87.

    [7]曹继东.互联网+科技自媒体创新与盈利模式[R].北京:中国科技新闻学会,2015.

    [8]艾维娜,杨坚争.B2B电子商务平台发展及存在的问题[J].电子商务,2018.

    [9]LeeRST.ANewEraofIntelligente-CommerceBasedonIntelligentJavaAgent-BasedDevelopmentEnvironment(iJADE)[M]//Internet-BasedIntelligentInformationProcessingSystem,2015.

    [10]卢信文,武志学.关于程序设计入门语言的教学改革研究[J].电脑知识与技术,2015(4):101-103.

    [11]邱仲潘,张星成,宋智军.高级程序设计语言:PHP版[M].清华大学出版社,2015.

    [12]ChenKY,ChangJ,HouTW.AnEnergy-EfficientJavaVirtualMachine[J].IEEETransactionsonCloudComputing,2015:1-1.

    [13]宦臣.JavaWeb开发中MVC模式的研究[J].时代教育(教育教学版),2015(21).

    [14]LiJH,MengFX,WenXM.TheDesignandRealizationofLibraryMISBasedonMVC[J].AdvancedMaterialsResearch,2013,756-759:1114-1118.

    [15]于湛麟,李仲秋,任永昌.SSH框架实现MVC架构的电子商务软件平台[J].计算机技术与发展,2016(10).

    [16]张南平,朱富利.基于MVC模式的Struts框架的研究与应用[J].计算机技术与发展,2016,16(3).

    [17]张晓峰.基于MDA的Web信息系统设计与实现[D].上海交通大学,2016.

    [18]陈力行.基于开源框架的教学辅助平台的设计与实现[D].电子科技大学,2017.

    [19]宁承林.基于MVC模式的Struts框架在J2EEWEB应用中的研究与实现[D].北京邮电大学,2015.

    [20]WojciechowskiJ,SakowiczB,DuraK,etal.MVCmodel,strutsframeworkandfileuploadissuesinwebapplicationsbasedonJ2EEplatform[C]//ModernProblemsofRadioEngineering,Telecommunications&ComputerScience,InternationalConference.IEEE,2014:342-345.

    致谢

    时光飞逝,转眼间我在学校的这些年生活即将结束,回顾这几年的学习生活,收获良多,既有幸福也有难过,学校生活的结束对于我来说也是一个新的开始。论文即将完成,在此,我心中有许多想要感谢的人。首先感谢我的导师,不仅在学习研究方面加以指导,也在生活和为人处世上给予帮助。还要感谢授课老师,你们严谨的学术精神和积极向上的工作态度都在激励我的成长和进步。感谢多年来一直生活在一起的室友,谢谢你们多年来的陪伴和照顾。最后,要感谢各位论文评审老师,感谢您们在百忙之中抽空评阅本论文并给出宝贵的意见和建议。

    点赞+收藏+关注  →  私信领取本源代码、数据库

  • 相关阅读:
    Day810.MySQL调优之事务:高并发场景下的数据库事务调优 -Java 性能调优实战
    Java基础 进程与线程3
    LINUX 服务器中病毒了,后来追踪到的一个机器运行脚本,研究了一下对于初学者shell的人有很大的帮助
    动机:关于如何获得和保持动力的科学指南
    openfeign原理
    输入网址input,提取标题和正文
    AI 大模型
    JavaScript 变量提升的作用
    项目实战— pytorch搭建CNN处理MNIST数据集
    腾讯云数据库公有云市场稳居TOP 2!
  • 原文地址:https://blog.csdn.net/weixin_BYSJ1987/article/details/126930542