基于php+mysql+apache的在线购物网站设计与实现(全套源码+配套论文)
大家好,今天给大家介绍基于php+mysql+apache的在线购物网站设计与实现,更多精选毕业设计项目实例见文末哦。
文章目录:
1、项目简介
- 为了便于用户在千万计的产品中通过对不同制造商、不同产地的产品的价格、性能等参数进行比较,快速的找到自己需要的产品,尽可能缩短购买时间,并在制造商和消费者之间建立一个高效的平台,采用简洁高效的PHP语言与MySQL数据库等技术,并借鉴了开源社区中最经典的技术思想和开发模式,设计和开发了这一产品报价系统。该系统主要实现了产品搜索、用户评论、在线购买等前台模块与产品管理、用户管理、订单管理等后台模块。通过科学全面的测试,系统实现了产品报价和在线购物的主要功能。产品报价系统做为现有电子商务和在线购物模式的重要补充,在实际的应用中必将显现其突出的优势。
2、资源详情
项目难度:中等难度
适用场景:相关题目的毕业设计
配套论文字数:13738个字32页
包含内容:整套源码+完整毕业论文
很多同学询问怎么下载开题报告、论文答辩、课题报告等ppt模板,给大家找了个好用的下载工具,可以试试:
3、关键词
产品报价;在线购物;电子商务;PHP;MySQL;开源社区4、资源下载
本项目源码及完整论文如下,有需要的朋友可以点击进行下载。如果链接失效可点击下方卡片扫码自助下载。
序号 | 毕业设计全套资源(点击下载) |
---|---|
本项目源码 | 基于php+mysql+apache的在线购物网站设计与实现(源码+文档)_php_mysql_在线购物网站_电子商务.zip |
5、毕设简介
提示:以下为毕业论文的简略介绍,项目源码及完整毕业论文下载地址见文末。
1 引言
1.1 系统的开发背景
1.1.1 在线购物的发展
省略
1.1.2 产品报价系统的现状
产品报价系统的开发,主要是用来帮助消费者在最短的时间内通过产品参数的比较,找到自己需要的产品,并使用系统提供的在线购买功能,实现整个购物流程。
目前,产品报价系统已经越来越多的应用到了大型的电子商务解决方案之中,起到了良好的效果。在泡泡网(http://product.pcpop.com/)、中关村在线(http://detail.zol.com.cn/)、IT世界网(http://www.it.com.cn/)、太平洋电脑网(http://www.pconline.com.cn/market/)等国内著名的IT和数码产品信息网都提供了强大的产品报价功能[1]。
1.2 系统实现的目标
本系统主要实现产品报价和传统在线购物的结合。一方面用户可以使用该系统对产品进行多种属性的搜索,对不同制造商和不同型号的产品进行简单的比较,最后提交订单并完成整个在线购买流程。另一方面,建立严格的审核和快捷的订单处理机制,对管理员进行权限管理,分为系统管理员、产品管理员和订单管理员等。管理员在后台设置产品的类别、制造商信息以及对不同的产品进行属性定制,建立专有的产品属性字段。
1.3 系统开发的意义
本系统的开发,将在一定程度上缩短用户在产品选择和购物的中间环节,简化购物流程,提高效率。为用户节省大量的时间。通过对新注册用户的审核,来建立一个安全可靠的购物环境,解决传统电子商务存在的诚信度问题。
2 产品报价系统分析
2.1 网站的设计目标
网站使用简洁的框架结构,让审核通过并登陆了的用户进行产品的搜索、使用购物车、填写定单、选择支付和送货方式等操作,用户发表产品评论,在填写定单的时候可以附带留言对自己订购的产品加以备注说明。管理员有权在后台面板进行用户管理(包括审核、查看、编辑与添加)、订单管理和留言管理以及一些常规的设置和数据库管理(包括备份和恢复)等操作。
2.2 网站的可行性分析
2.2.1 用户群体与市场分析
省略
2.2.2 技术能力分析
根据本系统的功能需求,采用PHP编程语言与开源的MySQL数据库引擎进行开发。由于PHP作为一种高效而且语言结构清晰的编程语言,尤为适合于模块化功能的开发,而且因为其本身和服务器结合比较紧密,有大量优秀的函数库可以使用,在执行效率和安全性上有很大优势。而MySQL作为一种快速的、多线程、多用户和健壮的SQL数据库服务器,根据第三方测试结果,在千万级的数据环境中依然保持较高的执行速度。因此在技术层面上,是完全可行的。
2.2.3 可行性分析总结
省略
2.3 网站设计的特点
省略
3 系统的开发技术及主要构架
3.1 开发技术的选择
3.1.1 PHP编程技术
PHP(“PHP Hypertext Preprocessor”,超文本预处理器的字母缩写)是一种被广泛应用的开放源代码的多用途脚本语言,它可以嵌入到 HTML中,尤其适合 web开发。它还是一种简单的、面向对象的、解释型的、健壮的、安全的、性能非常之高的、独立于架构的、可移植的、动态的脚本语言。
PHP代码在服务器端被解释转变成普通的HTML页面内容,送给浏览器端,这种模式可使我们用它来完成相当复杂的功能。它能运行在包括Windows、Linux等在内的绝大多数操作系统环境中,常与免费的Web服务器软件Apache和免费数据库软件MySQL配合使用于Linux平台上,具有较高的性价比。
强大的数据库支持:目前其支持范围覆盖了包括Oracle,Sybase,Microsoft SQL,MySQL,Informix,Solid dBase,ODBC,Unix dbm,PostgreSQL,Adabas D等在内的大多数常见数据库。用它编写一个含有数据库功能的网页程序十分简单。
PHP可以编译成具有与许多数据库相连接的函数。PHP与MySQL是绝佳组合。
可扩展性:就像前面说的那样,PHP已经进入了一个高速发展的时期。对于一个非程序员来说为PHP扩展附加功能可能会比较难,但是对于一个PHP程序员来说并不困难。
面向对象编程:PHP提供了类和对象。基于web的编程工作非常需要面向对象编程能力。PHP也支持构造器、提取类等。
3.1.2 MySQL开源数据库的开发
MySQL是最受欢迎的开源SQL数据库管理系统,它由MySQL AB开发、发布和支持。MySQL AB是一家基于MySQL开发人员的商业公司,它是一家使用了一种成功的商业模式来结合开源价值和方法论的第二代开源公司。MySQL是MySQL AB的注册商标。
省略
3.2 系统的主要架构及开发模式
3.2.1 基于B/S的体系结构
本产品报价系统采用B/S模式,服务器采用著名的web服务器端软件apache,该http服务器有着良好的跨平台性和安全性,可以运行在包括windows、linux、mac等操作系统上。用户客户端使用各种浏览器都能够进行正常的浏览和操作。需要注意的是在程序的开发过程中,程序和路径相关的要考虑到不同的操作系统的文件目录结构。
3.2.2 OOP(面向对象编程)在PHP中的运用
面向对象的方法是一种运用对象、类、继承、封装、聚合、消息传送、多态性等概念来构造系统的软件开发方法。面向对象方法的基本思想是:从现实世界中客观存在的事物(即对象)出发来构造软件系统,并在系统构造中尽可能运用人类自然的思维方式。
关于OOP思想是否适用于PHP程序开发的争论一直在持续,一方面PHP向来以快捷开发著称,在程序中可以直接的对变量进行调用,况且PHP自身就提供了庞大的函数库。而OOP则需要使用对象来调用每一个函数和属性。但是在本系统的开发中,大量使用到了OOP的思想,最突出的就是对数据库的操作部分,在后续的代码中出现对数据库的操作的时候使用对象调用让整个流程和结构显得更加清晰。在PHP5的开发过程中,OOP的思想已经得到了一定的重视[7]。
4 系统的功能和流程分析
4.1 平台功能模块的设计分析
根据需求分析和产品报价系统的整体工作流程,本系统所具有的基本功能模块主要包括查询、购买、留言、用户管理、产品管理、留言管理和订单管理等,除了以上基础模块,在开发过程中还开发了一些相关的模块来补充和完善整个系统,以期获得更好的效果。
系统功能模块关系图如图1。
图1 产品报价系统功能模块图
4.2 系统流程分析
以下部分主要对各个功能模块的实现流程思路进行分析。
4.2.1 前台购物流程
只有管理员审核通过的注册用户才具有在本系统购买产品的权限,当用户搜索到所要订购的产品时,点击“购买”按钮,即可将产品放入购物车中,系统页面转向购物车页面,用户可以在看到产品现有库存,并根据自身需要设置购买的产品数量。
设置完毕后,用户可以继续购物,也可以通过页面上的“结帐”开始订单填写流程。页面将显示出订购产品的基本信息、用户所在的通讯地址(用做产品发货地址),用户需要确认正确的收货地址,如果需要设置新的收货地址,可以在自己的通讯录内添加。在收货地址确认后用户需要选择送货方式,比如普通邮寄、特快专递等,在确认送货方式之后,进入支付方式的选择,用户可以选择在线支付,也可以选择邮局汇款,在线支付的可以通过在线支付的接口实现支付。在支付方式确认之后,订单的全部信息设置完毕,用户做最后的确认,无误之后确认定单。整个订单过程完毕。等待管理员处理订单。
用户可以在个人面板查看个人订购记录与订单处理状态。
用户购物的整体流程如图2。
图2 前台购物流程图
4.2.2 注册登陆功能流程
注册流程的实现较为简单,用户在系统首页或者系统任何通过登陆才有访问权限的页面都能找到会员注册的链接。点击注册链接,用户按照表单所需信息填写,需填写真实信息,因为新注册用户必须经过管理员审核才能成为正式会员在本站进行产品订购。信息填写完毕并提交之后,系统提示注册成功,但是需要管理员审核。
登陆功能中,注册用户需要提供其正确的注册邮箱和密码,忘记密码的用户可以通过“找回密码”填写注册使用的邮箱名称,提交发送找回密码的请求,系统收到请求后,将会通过邮件将用户的新密码发送到用户注册邮箱中去。
4.2.3 商品搜索流程
搜索功能是系统最重要的一个模块,在搜索页,用户可以输入产品关键字,并根据产品的价格范围、产品制造商以及产品类别等属性进行查询,在查询的过程中,可以使用符号与关键字的结合进行模糊搜索。在搜索结果中,每个产品都会以规范的表格形式展示出来,并直观的显示出产品的关键属性和特点,并提供直接的购买按钮。
4.2.4 留言评论流程
在每个产品的介绍下面都有产品评论的功能,注册用户可以对产品发表评论,对产品提出问题或者疑问,并评分。信息提交之后,管理员将能通过后台的管理功能查看的相关的评论以及问题。
4.2.5 商品管理流程
在本产品报价系统中,主要通过管理员添加产品信息,在后台的产品管理中,管理员需要设置产品的类别,类别设置能够设立一级分类与二级分类。类别主要信息包括类别名称、排列顺序、类别形象图片等。管理员还需要设置和管理产品制造商,在添加产品信息时,管理员需要设置产品的类别、制造商、价格、库存数量等属性,库存数量会在每次的订购之后自动的减少。在产品添加之后并不能直接的显示在前台的页面上,只有在产品被管理员激活之后才能够显示。管理员有权限对已存在的类别、制造商、产品进行包括编辑、删除的管理。由于产品库存会随着产品订购而减少,管理员可以通过编辑产品来修改库存数量。同时,也可以将特有产品设置为特价产品来销售。
4.2.6 订单处理流程
管理员在查看到新订单出现时,查看订单信息,根据用户所订购的产品以及所选取的支付和运送方式,对订单进行处理,在确认已经收到用户的订购货款的时候,开始进行正式的处理中,并根据办理的情况,修改产品订单的处理状态,用户可以通过个人面板了解订单状态,及时的了解到最新的处理情况,和网站保持一种便捷的沟通渠道,从而保证了购物过程的安全和流畅。
4.2.7 用户管理流程
用户群组是本系统一个重要模块,为了对新注册用户进行审核,在开发过程中,将新注册的用户默认为待审核组的成员,管理员登陆后,可以查看新注册用户的资料,待确认审核通过后将其从待审核组转到正式用户组,实现了基本的审核功能,而只有正式会员才享有在本站订购产品的权限。其次在用户管理中,管理员可以添加用户,添加完成后将给新添加的用户发送一封邮件,进行通知。管理员还可以通过姓名、邮箱以及所在群组搜索查找用户,并对用户进行编辑、删除等操作。而管理员也作为一个特殊的群组存在,主要分为系统管理员、订单管理员和产品管理员,每个管理员都具有相应的权限。
5 系统功能的具体实现
5.1 系统数据库的设计
根据需求分析以及系统功能的需要,系统信息数据存放在MySQL数据表中。下面给出重要数据表的简单描述。
1.customers(用户信息表)
该表存储了用户的基本信息,主要用于用户的登陆以及站内的活动记录。表内数据由用户注册时写入,如表1。
表1 用户信息表
2.usergroups(用户群组表)
该表存储了系统群组的信息,每个群组所享有的权限是不同的,新注册用户默认为待审核成员组。该表的字段属性如表2。
表2 系统群组信息表
3.categories(产品分类表)
该表存储了产品类别信息,主要包括了产品编号、标识图片以及订购类型编号等。字段属性描述如表3。
表3 产品分类表
4.address_book(用户通讯地址表)
系统将用户注册时的通讯地址保存到该表中,用户可以根据自身情况,在通讯录最多设置5个通讯地址,该通讯地址主要作为订购产品的发货地址和邮件接收地址。保证产品通过用户选择的送货方式送达用户手中。字段属性描述如表4。
表4 用户通讯地址表
5.manufacturers(制造商信息表)
制造商信息表主要存储了制造商的基本信息,包括编号、名称、形象图片、添加及更新日期。本表信息由系统管理员进行管理。字段属性描述如表5。
表5 制造商信息表
6.products(产品信息表)
该表存储了产品的基本信息。由管理员在后台添加产品时候输入。字段属性描述如表6。
表6 产品信息表
7.reviews(用户评论表)
该表存储了用户提交的产品评论信息,主要包括了用户的信息和评论以及评分的信息。字段属性描述如表7。
表7 用户评论表
5.2 功能总体说明
5.2.1 系统流程图
系统整体流程图如图3。
图3 系统整体流程图
5.2.2 目录结构说明
本系统程序代码包含11个子目录,主要目录描述说明为:
admin : 管理后台程序目录,包括后台程序、数据库备份目录、后台管理子模块程序目录。
htmlarea : htmlarea在线编辑器的全部程序,包括编辑器的js文件、编辑器图标以及模版程序。
images : 该目录主要为系统中使用到的图片、图标,包括jpg、gif、ico等格式。
includes : 系统的重要函数,包括全局配置文件,还有调用频繁的代码段。
modules : 存放系统中一些小的功能模块的代码。比如站内新闻订阅。
osdata : 数据库备份和恢复的设置目录,主要存放系统备份的数据库,可以从这里面将数据库导入到系统中去。
templates : 系统前台模版文件,为html格式,通过PHP文件的包含而使用。
5.3 各功能模块的实现
5.3.1 数据库的连接
系统中对数据库的操作是以类的形式表现的,将对数据库操作的函数封装到类dbstuff中,包括数据库的连接和查询以及从查询结果从取数据。然后建立一个新的对象db,在整个系统中直接使用对象操作数据库。在类dbstuff中,对数据库连接的代码片段是:
function connect($dbhost, $dbuser, $dbpw, $dbname, $pconnect = 0){
if ($pconnect){
if (!@MySQL_pconnect($dbhost, $dbuser, $dbpw)){
$this->halt('连接数据库服务器失败');
}
}
else{
if (!@MySQL_connect($dbhost, $dbuser, $dbpw)){
$this->halt('连接数据库服务器失败');
}
}
MySQL_select_db($dbname); //选择数据库
}
function select_db($dbname){ //将选择数据库以函数的形式表示
return MySQL_select_db($dbname);
}
对数据库操作的类封装在includes目录中的db_MySQL.PHP文件中,然后在application_top.PHP文件中建立对象,然后在使用到数据库操作的每个页面将application_top.PHP包含进去。在application_top.PHP建立对象的操作代码为:
$db = new dbstuff; //建立对象
$db->connect(DB_SERVER, DB_SERVER_USERNAME, DB_SERVER_PASSWORD, DB_DATABASE,
USE_PCONNECT); //使用对象来操作数据库连接
$db->select_db(DB_DATABASE);
5.3.2 用户注册与审核模块
作为一个产品报价系统,首先它是一个在线购物系统,因此为了建立一个良好的购物环境,保证系统的安全和用户的信息,新用户的审核是一个重要的环节。新用户在前台首页或者系统任何一个需要登陆才能操作的功能页,都会自动的跳转到登陆注册页面,注册页面如图4所示。
图4 用户注册页面
点击用户注册链接,进入如图4的页面,填写真实的个人信息,在确认无误之后提交,系统将对提交信息进行初步的过滤,如果无误,将会提示注册成功。此时用户可以登陆系统,使用搜索功能,发布产品评论,修改个人资料,但是不能订购产品,在等待管理员审核通过之后才具有购买产品的权限,成为正式会员。审核功能如图15。
在注册页面,标注星号的为必须填写的字段,在程序中对此类字段进行是否为空的判断。如果均不为空则插入数据表中,否则返回信息提交页面。
在这个过程中,重要的就是提取用户提交的信息,这是对信息进行判断和写入数据库的重要步骤,该过程使用到了位于includes目录中的global.PHP文件中自定义函数tep_db_prepare_input()。该函数的实现为:
function tep_db_prepare_input($string){
if (is_string($string)){
return trim(tep_sanitize_string(stripslashes($string))); //字符串替换函数
}
elseif (is_array($string)){
reset($string);
while (list($key, $value) = each($string)){
$string[$key] = tep_db_prepare_input($value);
}
return $string;
}
else{
return $string;
}
}
审核模块,由管理员在后台对所要审核的会员所在的群组进行更改,管理员能全面的查看到会员的全部资料,确认之后将用户由待审核组更改为正式会员组即实现了审核功能。
5.3.3 用户登陆模块的实现
注册用户通过前台页面的登陆窗口(如图5),进入系统,以进行相关操作。登陆主要使用用户邮箱地址和注册密码,如果与数据库匹配成功则登陆成功。用户遗忘密码时,通过找回密码功能来获得一个新的密码,这使用到了两个操作:
首先就是通过用户提供的邮箱地址进行数据库的操作,如果邮箱存在就随机产生一个密码,并将加密后的新密码写入到数据库中。
图5 用户登陆页面
产生新密码的实现过程为:
$email_address = tep_db_prepare_input($HTTP_POST_VARS['email_address']); //读取用户提交信息
$check_customer_query = $db->query("select customers_firstname, customers_password, customers_id from $table_customers where customers_email_address = '".safe_input($email_address)."'"); //数据库查询
if ($db->num_rows($check_customer_query)){ //邮箱地址存在,分配新密码
$check_customer = $db->fetch_array($check_customer_query);
$new_password = tep_create_random_value(ENTRY_PASSWORD_MIN_LENGTH); //随机产生密码
$crypted_password = md5($new_password); //对随机产生的密码加密$db->query("update $table_customers set customers_password =
'".safe_input($crypted_password). "' where customers_id = '" . (int)$check_customer['customers_id'] . "'");//更新用户信息
其次,系统需要自动的发送邮件到用户信箱,将新密码以邮件方式发送给用户。发送给用户的密码是没有加密前的随机密码。发送邮件之前,系统需要配置好邮件服务功能。实现过程使用到了函数tep_mail(),该函数的实现代码为:
function tep_mail($to_name, $to_email_address, $email_subject, $email_text,
$from_email_name, $from_email_address){
if (SEND_EMAILS != 'true')
return false;
require_once('includes/classes/mime.PHP');
require_once('includes/classes/email.PHP');
$message = new email(array('X-Mailer: Mailer'));
$text = strip_tags($email_text);
if (EMAIL_USE_HTML == 'true'){
$message->add_html($email_text, $text);
}
else{
$message->add_text($text);
}
$message->build_message();
$message->send($to_name, $to_email_address, $from_email_name,
$from_email_address, $email_subject); //使用到了PHP封装的函数send()
}
5.3.4 商品搜索模块的实现
产品搜索主要是通过对数据字段的查询实现的。如图6所示,用户通过输入产品名称的关键字,目前可以实现的是使用产品名称关键字、产品分类(包含子分类)、产品制造商与产品的价格范围和上架的日期范围进行组合式的搜索服务。
搜索结果将产品以列表的形式调用出来,并且显示各个产品的参数,以便于产品之间的比较,搜索结果显示如图7。在实现该模块中,对数据库的查询、产品的显示形式与分页是重点技术点。
图6 产品搜索页面
其中搜索过程对数据库的操作较为复杂,需要同时对不同数量的关键字进行处理。搜索处理用到的重要函数有以下2个:
function tep_get_all_get_params() 用于获取用户搜索输入的所有参数
function tep_parse_search_string() 用户对所有参数的处理。
图7 前台产品展示页面
5.3.5 购物车模块的实现
在产品列表点“购买”按钮,就自动的将所要购买的产品放进购物车中,如图7,在图8中,点继续购物就可以回到产品页面,继续选择自己需要的产品。如果要结帐,只需要点“结帐”按钮,就会进入到订单填写的流程。如图2所示。 订单处理主要包括确认收货地址、选择收货方式和选择支付方式三个主要步骤,其中可以发布订单的特殊要求和供货方需要注意的事项。购物车管理页面如图8。
图8 购物车管理页面
在本模块中,需要对用户是否具有购物权限进行判断,未审核通过的用户虽然能够将喜欢的产品放进购物车(即使未通过审核的用户,放进购物车的产品信息也可以保存,以便用户在具有权限时继续购买,但在未通过审核前,其行为不影响产品库存数量)。权限判断的代码为:
$query1 = $db->query(
"select status from $table_customers where customers_id ='".(int)
$customer_id."'");
$check_status = $db->fetch_array($query1);
if ($check_status['status'] == 'verify'){
echo "<script>alert('您的资料还没有通过审核,暂时不能购买产品,我们将尽快为您开通。');history.back();</script>";
exit();
}
5.3.6 产品管理模块的实现
产品管理模块包含的主要功能有:添加管理产品分类(如图9),添加管理产品(如图10),设置制造商(如图11),设置产品特有属性(如图12)。
产品分类管理模块,为二级分类。通过管理后台的“新分类”链接,可以添加新的分类,通过“新产品”的链接可以在当前类别下添加产品,同样在一级分类下面也具有这两项功能。可以对已存在类别进行包括修改、删除和移动在内的操作。而对类的操作均是对数据库的直接操作。其中添加类的核心代码为:
$action = (isset($HTTP_GET_VARS['action']) ? $HTTP_GET_VARS['action']: (isset($HTTP_POST_VARS['action']) ? $HTTP_POST_VARS['action']: ''));
if ($action){
switch ($action){
case 'new_category':
if (isset($HTTP_POST_VARS['categories_id']))
$categories_id = stripslashes($HTTP_POST_VARS['categories_id']);
$sort_order = stripslashes($HTTP_POST_VARS['sort_order']);
$db->query(
"insert into $table_categories (parent_id,sort_order,date_added) values ('$current_category_id','$sort_order',now())");
$categories_id = $db->insert_id();
$languages = tep_get_languages();
for ($i = 0, $n = sizeof($languages); $i < $n; $i++){
$categories_name_array = $HTTP_POST_VARS['categories_name'];
$language_id = $languages[$i]['id'];
$categories_name = stripslashes($categories_name_array[$language_id]);
$db->query(
"insert into $table_categories_description (categories_name,categories_id,language_id) values ('$categories_name','$categories_id','$language_id')");
}
$categories_image = new upload('categories_image',
'/upload/images/category');
if ($categories_image->parse($timestamp)){
$categories_image->save();
$db->query("update $table_categories set categories_image =
'".addslashes($categories_image->filename)."' where categories_id = '".(int)$categories_id."'");
}
updatecache('categories');
cpmsg("分类添加成功。", tep_href_link('admincp.PHP', 'act=catalog&cPath
='.$cPath.'&cID='.$categories_id));
图9 产品分类添加与管理
同样,产品的添加以及制造商的管理在实现上与分类的管理是一致的。效果如图10。
图10 产品添加管理页面
图11 制造商管理页面
图12 产品属性管理页面
5.3.7 用户管理与权限的实现
主要包括了对用户的搜索查找、添加用户、编辑、删除以及对用户群组的权限和积分设置。搜索结果以列表形式显示。用户搜索页如图13。
搜索用户的实现程序片段为:
elseif ($searchsubmit || $deletesubmit || $exportsubmit){
if (!$page){ //分页显示程序段
$page = 1;
}
$offset = ($page - 1) * MAX_DISPLAY_SEARCH_RESULTS;
$conditions = ""; //用户搜索条件处理
$conditions .= $name != "" ?
" AND (customers_firstname LIKE '%$name%' OR customers_firstname='$name')" : NULL;
$conditions .= $email != "" ?
" AND (customers_email_address LIKE '%$email%' OR customers_email_address='$email')" : NULL;
$conditions .= $userstatus != "" ? " AND status='$userstatus'" : NULL;
if ($conditions){ //如果搜索条件存在,开始搜索
$conditions = substr($conditions, 5);
if ($searchsubmit){ //action判断
$query = $db->query(
"SELECT COUNT(*) FROM $table_customers WHERE $conditions"); //符合条件的用户总数
$num = $db->result($query, 0);
$multipage = multi($num, MAX_DISPLAY_SEARCH_RESULTS, $page, "admincp.PHP?act=members&searchsubmit=yes&name=$name&email=$email&userstatus=$userstatus");
$query = $db->query(
"SELECT * FROM $table_customers WHERE $conditions LIMIT $offset,".MAX_DISPLAY_SEARCH_RESULTS);
while ($member = $db->fetch_array($query)){
//循环分页显示用户列表
}
图13 用户搜索页
添加用户主要是由管理员来录入新用户信息,填写提交成功后,由系统向添加的用户发送一封邮件,以通知新用户。该功能主要方便建立系统内的一些特殊的用户,满足多方面的要求。比如购买特殊产品权限的用户。添加新用户功能如图14。
图14 添加新用户
图15中显示的即为用户搜索的结果,管理员可以直接进行会员的审
核,也可以通过如图15中的“编辑”链接,查看用户详细信息。
图15 用户审核功能页
删除用户的选择框在左边,选中并提交即可删除。
用户组的设置主要是通过对用户积分范围的设置来划分不同的用户组,不同的用户组享有不同的产品优惠。用户组设置功能如图16。
图16 用户组设置
通过如图17的页面,系统管理员有权限对系统的其他管理员进行权限的设置,分为产品管理员、订单管理员等。每个头衔可以设置相匹配的权限。
图17 管理员权限设置页面
5.3.8 订单与评论管理
订单管理是产品报价系统的重要部分,主要实现的功能包括订单搜索、订单查看与处理、订单删除等。订单搜索通过订单号、订单状态、顾客名与顾客邮箱关键字进行搜索。在订单处理页,管理员能查看新订单的完整资料,并根据订单的处理状态进行管理,并通过系统邮件与顾客沟通,将订单的处理信息反馈给顾客,同时管理员能对一些订单进行删除操作。
评论管理主要提供了简单的评论查看与删除功能,整个实现过程较为简单。
5.3.9 系统数据管理
MySQL数据库的最大特点就是提供了很多便于直接使用的操作函数,可以轻松的将复杂的数据库操作由清晰的函数实现。在系统数据管理这个模块,主要实现了数据备份和数据恢复(即数据库导入)。
6 系统测试及难点分析
6.1 系统运行环境的搭建
本系统的开发和测试均在windows操作系统平台下进行的,使用AMP集成软件包搭建运行环境
Apache,一种开放源码的HTTP服务器,可以在大多数计算机操作系统中运行,由于其跨平台和安全性而被广泛使用,是最流行的Web服务器端软件之一。它快速、可靠并且可通过简单的API扩展,Perl/Python等解释器可被编译到服务器中[ 5]。
Apache支持许多特性,其中大部分通过编译的模块实现。这些特性从服务器端的编程语言支持到身份认证方案。一些通用的语言接口支持Perl、Python、Tcl和PHP。流行的认证模块包括mod_access,mod_auth和mod_digest。其他的例子有SSL和TLS支持(mod_ssl),proxy模块。很有用的URL重写(由mod_rewrite实现),定制日志文件(mod_log_config),以及过滤支持(mod_include和mod_ext_filter)。Apache日志可以通过网页浏览器使用免费的脚本AWStats或Visitors来进行分析。
相比较linux下的复杂安装过程,在windows操作系统下搭建运行环境相对简单,但是不足之处在于配置选项较少,安全性相对不高。在windows上主要采用继承软件包来直接安装,甚至不需要做任何配置就可以直接使用。
省略
6.2 系统程序的安装
在搭建有apache+PHP+MySQL的服务器平台上,系统管理员只需要使用MySQL命令端或者web管理软件在MySQL服务器端创建一个数据库mywork.然后使用MySQL数据库导入命令将系统中的数据库文件导入到新创建的数据库mywork中即可。然后配置位于目录includes中的配置文件configure.PHP,修改为当前的数据库用户名和密码即可安装成功。使用默认用户邮箱:[email protected] 和密码:117227 登陆后台进行系统设置和管理。
6.3 系统的测试
测试平台为windows操作系统,运行环境由MAP集成软件包搭建。Apache和PHP采用了缺省设置。
6.3.1 系统关键部分测试分析
测试分为两个部分:
第一部分主要就是测试系统所要求的最基本的功能,主要侧重于用户前台的使用流程。基本的用户注册和登陆功能相当流畅,但是在产品搜索功能上,虽然能够使用关键字搜索到产品,但是还有所欠缺,而且可以使用的产品属性关键字还太少。在前台的购物流程中,前期发现的购物权限设置问题已经得到了解决。测试过程中,购物环节完全可以成功运行,但是当用户购买产品超过库存数量的时候,虽然程序可以正确运行,但是缺少一个适当的判断环节。
第二部分主要是针对后台管理的测试,由于后台管理功能模块较为集中,是整个系统的核心所在,特别是对用户的审核、对管理员的权限分配以及对订单的处理都完全符合系统设计初期的功能要求。因此从整体上来说,系统的设计和实现是成功的。
6.3.2 测试结果分析与说明
从整体的测试结果来看,在大中型的商务应用中,PHP与MySQL的结合具有相当的优势。
首先就是缩短了开发时间,PHP与MySQL提供的大量固有的函数库直接在程序中使用,提高了程序的运行效率。虽然系统的功能还显得弱小,但是系统的优良性能已经得到了很好的体现。
6.3.3 系统安全与性能分析
系统设计过程中,对代码中出现的可能对系统造成安全威胁的字符进行过滤和字符的转换,在一定程度上提高了系统运行的安全性。同时所采用的编程语言和数据库的特性足以承受大量的数据读取和写入。
6.4 系统中存在的问题及解决方法
第一:在系统的设计初期,对用户的权限分配考虑不周,所有登陆用户均可以进行产品购买。缺少对新注册用户的审核。这个问题已经得到解决,在系统的用户群组中建立了待审核用户组,默认所有新注册用户为该组成员,用户注册成功提交之后,提示用户等待管理员审核。在产品购买页面对用户进行判断,如果为待审核群组的会员则不能进行购物。
第二:由于第一个问题的出现,在后台的用户资料查看中,没有将用户的详细资料调用显示,管理员不能够直观全面的了解用户的情况。就不方便进行审核,解决办法是从数据库中读取用户的资料,以表格形式显示出来。
结 论
在开发阶段的后期对系统功能进行综合测试,通过对各种所需数据的录入检验各接口类对象、产品搜索、产品评论、在线购物与后台的用户管理、产品管理和订单管理的功能是否正常,测试的主要方面包括输入数据的合法性检验,用户界面的操作友好程度。通过对单个功能模块和系统整体的性能测试,本系统运行状态良好,实现了预定功能,符合设计需求。与此同时,根据系统的特点,开发了匹配的相关功能,使系统不断的完善,在实际的应用中具有更强的适应性。
然而,做为产品报价系统,在产品的销售和在线订单实现过程中,本身需要有良好的性能来防范可能出现的任何漏洞,对程序代码本身的安全性要求相当高,从这个方面来看,还需要进一步的工作来完善,在确保功能流程的前提下为用户提供体验性好而且可信任的服务。另外对于订单的管理也存在需要改进的地方,比如按照月份生成Excel或者PDF格式的报表。
参考文献
[1] 金兰,郑玉,黄续新.我国电子商务的现状与未来[J] .计算机时代,2006,(10):25~29。
[2] 李端明,李宇翔.电子商务环境下的网络消费者[J] .商场现代化,2006,(30):31~36。
[3] 威利[澳] . PHP和MySQL Web开发(第3版)[M] .武欣 等译.北京:机械工业出版社,2005。
[4] 威廉斯[澳],莱恩[澳] .PHP & MySQL Web数据库应用开发指南[M] .南京:东南大学出版社,2006。
[5] 仲进平,寿加炎.PHP+MYSQL 网络开发技术[M] . 北京:人民邮电出版社,2000。
[6] Matt Zandstra[美] .PHP5的异常处理机制 [J] .PHP&More,2006,(2):19~24。
[7] Leendert Brouwer[美] .以OO的方式使用PHP [J] .PHP&More,2006,(3):35~41。
[8] 杨宝昌. MySQL实现中文全文检索的解决方案[J] .程序员,2006,(10):26~29。
[9] 顾治华,忽朝俭. MySQL存储引擎与数据库性能[J] .计算机时代,2006,(10):71~82。