精华内容
下载资源
问答
  • 一个颜色各方面都还不错的小型门户网站的前端代码,主要以颜色的搭配,设计,以及代码的建议程度!
  • 一个小型的个人网站,仅供大家参考,用到了一些简单的技术,但作为平常的作业足够了,属于静态的网页
  • C#一个小型管理系统,特别适合初学者
  • 网站运用HTML技术、c#技术、.Net开发平台、小部分JavaScript代码、MySQL数据库等技术。 一个小型的购物网站,大三的所以有些粗糙,还望见谅。
  • 小型信息分类网下载是一个asp+access的分类信息类网站源码,该种软件很适合用来地方门户网站。 首先不要喷啊!这个是属于买了后二次开发的,不是本人原创的,喜欢的就下载,目
  • 小型电子商务网站

    2014-12-18 18:14:25
    这个是一个用struts2+hibernate4一个系统,包含一个注册登录子系统,一个销售子系统
  • 30分钟搭建一个小型网站框架(python django) 最近因为要做一个小型的网站,需求很简单有点像公司内部的管理网站,和室友一起倒腾,发现了一些坑。我自己之前没有接触过python 但是发现真的非常好上手。 我们没人会...

    30分钟搭建一个小型网站框架(python django)

    最近因为要做一个小型的网站,需求很简单有点像公司内部的管理网站,和室友一起倒腾,发现了一些坑。我自己之前没有接触过python 但是发现真的非常好上手。

    我们没人会前端,所以最怕修改网页,一开始选择了Flask框架,我搞了半天遇到各种坑(还要修改css 麻烦),中间件也不好用,劝大家用django,资料多,非常好用。

    那么开始说重点,需要做的哪些东西。

    http://python.usyiyi.cn/ 是主要的资料,里面是中文的资料建议一点点看下去。

    1-项目环境搭建。

      1.1第三方库准备

      开发环境是mac os 和ubantu  推荐大家下载一个第三方的软件叫 "Anaconda" ,安装非常简单,直接运行脚本就好。

         安装完了,可以到命令行运行 pip list。可以看到已经安装的python第三方库 。

      此时我们是没有django的库的。

      pip install Django

      一句话安装完。怎么算成功呢?可以直接在写的python 里import django 没报错就成功,数据库我们选择的是mysql,django 也需要安装算是中间件类似于java中的JDBC。

       照样一句话

      pip install MySQL-python

      怎么成功? 就在 python 里import _mysql 没出错的话,恭喜你,要装的基本装完了。

      1.2IDE的安装

          IDE 使用eclipse,讲一个工具Pydev,安装自行百度,点点就行。

          然后 到Eclipse了 New->Project->Pydev->Pydev Django Project,一路next 。发现eclipse 找不到Django 环境,回来点击 click here to configure an interpreter 然后把python interpreter 中的名为python的删掉,那是系统默认的,改成anaconda目录 下 bin/里面的python。默认是2.7.11吧。忘记安装目录?一个命令 sudo find / -name anacon* 搞定~。找到以后加进去,到了图一这一步就结束。


                                      (图1)

    2-数据库配置和使用

      2.1数据库连接文件配置

        我选了mysql,当然在这之前mysql的帐号密码应该自己确定了吧。mysql配置应该简单。但是如果要支持远程访问,比如你把数据库放到云上,别人机器上,毕竟开发不是一个人的事,我自己遇到的坑是"关于 mysql 配置文件中的 bind-address",自行百度,解决方案是删除就好。(推荐几个mysql 连接的桌面软件,用Navicat ,或者mysql workbench 都是不错的)。(后来发现这里输入密码和帐号没什么用还是要去修改在与项目同名的app里面的setting)。现在在mysql自己创建一个database 取名随便。我叫test,其他字段应该不用解释了如图2。

                                 (图2)

      2.2创建APP(模块)

      然后我们在工程里根目录右击->Django->Create App->输入名字就好。因为网页主要是MVC模式,创两个吧。一个叫db 专用于管理数据库(models 层) 第二个专用于后台逻辑。名字随便取因为可能要对应多个模块。django里面增加一个app 就需要在与项目同名的那个app的setting中Installed_app里面加入app名(如图4)。我们加入以后目录结构(如图3.)

                                   (图3)

                                 (图4)

      2.3用django模型层建表

      数据库正式开发,数据库创建,在db的models.py中 对应数据库中每个表写class,就是定义好字段,因为Django的目标是要程序员完全脱离数据库的操作。那么我们先不建表,cd 到你的工程目录去,用命令行 用打入 manage.py  migrate 命令。效果如图5。

                                   (图5)

      如果你的配置是没错的,此时django 已经在你的数据库中建了很多表,都是django自带的,我也没有用起来,唯一用的是django自带的数据库管理界面,类似于Navicat,还支持搜索功能,自己去文档里 http://python.usyiyi.cn/django_182/intro/tutorial02.html 学吧。

    然后在db的models里写一个表的代码。然后效果如图6 还是用了Manage 脚本。

    复制代码

    from __future__ import unicode_literals
    
    from django.db import models
    
    # Create your db here.
    class Message(models.Model):
        user_id = models.BigIntegerField(blank=True, null=True)

    复制代码


                                  (图6)

      到这里表都结束了,实际开发中,我数据库都是先建好的,那我全部都要写每个类是不是很麻烦,有没有偷懒的办法呢?

      答案是用./manage.py inspectdb

      用了就知道,他会反向生成表的代码, 然后直接复制进models里面就好了。

    3-url 解析

      3.1url匹配处理函数

      在Django中 一般url解析分为两层。

      第一层负责解析APP的名,像我在test 里urls.py里写的(如图7)。第一个参数表示响应的url,第二个参数表示处理的模块。



                                 (图7)

      第二层是解析到具体的模块中的某个函数来响应对应的url。

      比如在view app 中的urls.py(需要自己创建) 写的(图8)url(函数中第一个参数为匹配路径,后一个是对应函数名)里面的home对应view app中的views.py 里的函数home

                              (图9)

      3.2静态网页配置

      其实到这个时候已经可以实现响应了。(到这里还要解决一个问题 'Index/home.html')在哪里呢?我们此时创一个文件夹叫templates html都应该放在这里,Index 是一个模块的名字。你可以在templates下面建很多个文件夹,对应很多的APP模块。(html就不属于本文范畴了)此时目录结构为

                               (图10)

    搞定了后别忘记在test的setting 里加上一句代码

                                  (图11)

      "就是DIRS"里面.想想也是,不然 Django怎么知道我们的html放在这里呢。

    4-逻辑层(也就是最后一步了,怎么样把数据库的东西查出来,放到html中。)

      4.1数据库中的数据

      往表里插两条数据

                                (图12)

      4.2动态显示数据

       看下代码:html部分

                                 (图13)

      里面的{%%}是django 自带标签的自己看文档学一下就会。

                                  (图14)

      里面的Message.objects.all() 表示从Message表中取出所有数据。还有什么复杂查询自己看文档,一般都是filter exclude,django 还支持sql语句直接写,函数名叫raw().    

    context就是返回给页面的一个对象里面放了很多值。在python里叫字典(dict)

      4.3启动服务器

      最后我们用命令行来到我们的目录,敲./manage.py runserver (要支持所有端口 和外网访问加0.0.0.0)。然后出现

                                  (图15)

      4.4查看网页

      再到浏览器敲127.0.0.1:8000 django默认端口                                             (图16)

      4.5实际开发中问题

      结果出来了。遇到具体问题就是查一些文档和stackoverflow。发现一个时区问题,建议和我改成一样。把test里面setting中的时区部分改成这样。否则你会有八个小时的时差,

            

    展开全文
  • html5,小型项目

    2018-01-03 14:47:24
    的,一个小型游戏网站,用到了html5和css知识,简单的一个游戏小网站,适合初学者学习
  • 本文会遇到很多的代码,如果想要源代码的小伙伴,我已经分享到下方了,想要的可以自己研究一下本人从事Python开发多年,很多小伙伴说想学一下web中的Django框架,我就用Django框架做一系列的实战项目,欢迎大家订阅...
    本文会遇到很多的代码,如果想要源代码的小伙伴,我已经分享到下方了,想要的可以自己研究一下

    本人从事Python开发多年,很多小伙伴说想学一下web中的Django框架,我就用Django框架做一系列的实战项目,欢迎大家订阅。 欢迎大家订阅微信公众号:Python从程序猿到程序员, 或者加4913.08659, 编码:柯西,编码:柯西。 有不懂的可以在里面问,同时也是一个 学习直播资料的平台

    前言
      不管是运维还是开发抑或是测试,工作中不免会和Linux服务器打交道,常见的操作譬如:查看CPU或内存状态、查看和修改服务器时间、查看或者修改服务器配置文件、实时查看或回看系统的日志、重启服务器中某个进程等。如果不在服务器旁,一般会选择利用Xshell这样的远程SSH工具登陆到服务器去执行所需操作。如果有一个Web工具,该工具将会很方便的给目标用户提供服务,对于开发来说,可以更注重自己代码本身,对于运维而言可以方便直接的知道服务器的状态,对于测试人员而言,提高测试的效率。  本人在开发这个基于django的Web工具前并没有网站开发经验,都是摸着石头过河,所以在开发过程中遇到很多的问题,并且逐个解决并达成需求,其中也直接拿来一些代码复用。这些文章中会包含一些前端的技术(websocket、ajax、路由)和一些后端的小模块(paramiko、openid、webserver、MySQL),在这些小零件的拼凑中又会衍生很多小的细节和方法。此篇文章会做一个回顾,虽然很多功能有更好的实现方法,里面涉及的技术难度也不大,但是也希望能够帮助到有需求的童鞋。

    内容介绍
    文章默认读者已经具备了django的开发经验,文章直接略过了纷繁的初学内容,直接开始小项目
    这些功能其实都很简单,就像搭积木一样,关键是遇到和解决的问题是否可以让需要的童鞋少走一点弯路。网站风格如下图1和图2所示(这里是主页面,没有截登陆界面和其他功能界面):




    源码

    环境
      python版本:python2.7  django版本:python-django-1.11  数据库:Mysql  MySQL_python连接库: https://pan.baidu.com/s/14WpD... 密码:0h5h

    源码
      网站的源码链接: https://pan.baidu.com/s/1uix-... 密码:j4sw  DASHGUM前端模板: https://pan.baidu.com/s/1FHCX... 密码:bo8d

    用法
      本地把网站跑起来需要改改下列这些地方。
    settings中的服务器登陆配置:


    有私钥的需要把私钥放在WebTool/WebTool下面:

    在functions中修改一些服务器路径和命令行:


    结语
      这个小项目用到的技术并不多,但是基本上可以实现和服务器的交互,都是通过网站调用python中的paramiko模块和服务器交互。虽然网站的功能不多,但是其中的交互思路可以举一反三写出更多的功能页(例如:CPU,内存预警等等),有些复杂的服务器功能最好是在服务器中写好shell脚本供给网站后台调用,前端的部件基本都可以在DASHGUM中找到适合的。
    展开全文
  • 做这个网站用了两周时间,在此把这个小项目做一个总结。 功能: DONE. 用户权限管理。包括管理员和普通用户。管理员有所有权限,包括更新网站状态 登录的其他值为用户名和密码,用户名和密码正确,跳转到下一页。...

    声明!

    最近几个月,不断地有站友向我索要完整的代码,其实之前我是全部粘贴到博客里供大家参考交流的。之所以删掉一部分,是因为有一些网站全盘照抄并标明为原创,以抄袭获取流量甚至盈利,违背了我的初衷。

    感谢各位不嫌弃我的代码粗陋。如果还有站友想要源代码,请在这篇博客下留下自己的联系方式。但是再次声明,之前和今后私下从我这里以任何方式要走的代码,都不能用作商业用途!

    请勿转载!

    谢谢!

    这是我在研究生期间,老师要求做的一个类似原始淘宝网的购物网站,
    因为不会PHP,为了写这个作业而新学的。
    做这个网站用了两周时间,在此把这个小项目做一个总结。

    这个小项目做的时间非常赶,一共两周,实际有效时间只有10天,中间还在忙其他的事。所以有很多不足之处。
    有些代码原本可以写的更精简,合并在一起。
    连接数据库和其他的一些执行sql语句的操作,可以封装在单独的文件里面调用,这里也都比较简单的哪里用到就在哪里处理了。
    数据库的链接方式用了两种,没有统一。

    还是有很多值得改进的地方。

    功能:

    DONE. 用户权限管理。包括管理员和普通用户。管理员有所有权限,包括更新网站状态
    登录的其他值为用户名和密码,用户名和密码正确,跳转到下一页。
    ADMIN具有添加,删除,更新等权限。用户只能查看手机,只能添加到购物车中的手机等。

    DONE.新用户:此模块适用于没有帐户的用户。这里用户可以创建一个帐户来登录。账户的创建是通过填写注册表单和用户的详细信息,如姓名,电话,电子邮件等来完成的。

    DONE.产品管理和展示:该模块展示手机产品信息,如产品编号,项目,名称,类别,产品图像,说明,功能和产品限制等。所有这些都将输入到数据库,因此可以在网站上找到。

    DONE.搜索:该模块可帮助客户根据自己的预算或兴趣来放松搜索。搜索可以在不同的类别上完成,如品牌,型号名称,型号,颜色或价格等。

    DONE:交易:在此模块中,购物车的管理已完成。此模块购物者可以选择任意数量的物品(手机,配件)并将它们添加到购物车,在从购物车购买物品后,所有要购买的物品都可以再次查看。如果他以后不喜欢,购物者也可以从购物车中取出。购物者还可以逐一检查购物车中保存的产品。由于产品从购物车中检出,总价格将相加。

    DONE:装运:在这个模块中,购物者可以选择合适的装运选项。购物者可以使用不同服务提供商提供的各种运送选项。

    DONE:付款:该模块描述了客户完成的付款。购物者可以选择不同的支付方式,并根据所选的支付方式的要求提供机密的支付信息。付款信息还可能包括购买型号,数量和供应商名称等信息。

    DONE:报告:在此模块中,将生成所有报告。无论何时出售物品或客户订购产品,都应立即通过电子邮件向其供应商发送警报,以便他可以尽快装运该物品。该模块有3个子模块;股票报告,订单报告和交付报告。

    • 股票报告将生成可用产品数量和产品状态的报告。
    • 订单报告将列出订购的产品清单以及购买该产品的客户详细信息,这些信息未送达。
    • 交付报告将生成已售出产品清单及其交付状态。

    ###1.数据库表设计
    下面是对数据库设计的一个说明,交作业用的。

    Design ideas of relational schema:
    Since the website will not be too complex, so I just design basic fields of the whole website logic. As for the tables “order_info” and “orderDetailRecord_info”, I separate order information into two tables to solve the problem that one order may have two types of products. Plus, the “p_image_url” field in the table “product_info”, will be used for analyzing url of images of products. Plus plus: actually an order may conclude many products, every products may choose different delivery method, but here we simplify it and assume that an order only have one delivery method.

    另外需要说明的是,
    delivery_info表和payment_info表中分别加入了一个random字段,是因为在写php处理的过程中,产生了相应的需要,具体处理请看代码。

    下面是具体的表名和字段:
    mysql1
    mysql2
    mysql3

    附上刚开始创建数据表的mysql代码,后期自此基础上有一些修改

    `admin_info(admin_id,admin_name,admin_pwd)`
    CREATE TABLE IF NOT EXISTS admin_info(
        admin_id int(10) NOT NULL AUTO_INCREMENT,
        admin_name varchar(50) NOT NULL,
        admin_pwd varchar(50) NOT NULL,
        PRIMARY KEY(admin_id)
    );
    
    
    `user_info(u_id,u_name,u_pwd,u_phone,u_email)`
    CREATE TABLE IF NOT EXISTS user_info(
        u_id int(10) NOT NULL AUTO_INCREMENT,
        u_name varchar(50) NOT NULL,
        u_pwd varchar(50) NOT NULL,
        u_phone int(50) NOT NULL,
        u_email varchar(50) NOT NULL,
        PRIMARY KEY(u_id)
    );
    
    
    `product_info(p_id, p_name,p_brand, p_type,p_price,p_inventory,p_descr,p_color,p_image_url)`
    CREATE TABLE IF NOT EXISTS product_info(
        p_id int(10) NOT NULL AUTO_INCREMENT,
        p_name varchar(50) NOT NULL,
        p_brand varchar(50) NOT NULL,
        p_type int(50) NOT NULL,
        p_price varchar(50) NOT NULL,
        p_inventory varchar(50) NOT NULL,
        p_descr varchar(100) NOT NULL,
        p_color varchar(50) NOT NULL,
        p_image_url varchar(200) NOT NULL,
        PRIMARY KEY(p_id)
    );
    
    
    `payment_info(pay_id,pay_user,receive_user,pay_account,receive_account,pay_status)`
    CREATE TABLE IF NOT EXISTS payment_info(
        pay_id int(10) NOT NULL AUTO_INCREMENT,
        pay_user varchar(50) NOT NULL,
        receive_user varchar(50) NOT NULL,
        pay_account int(50) NOT NULL,
        receive_account int(50) NOT NULL,
        pay_status boolean NOT NULL,
        PRIMARY KEY(pay_id)
    );
    
    
    `delivery_info(d_id,d_company,d_init_add,d_trgt_add,d_price)`
    CREATE TABLE IF NOT EXISTS delivery_info(
        d_id int(10) NOT NULL AUTO_INCREMENT,
        d_company varchar(50) NOT NULL,
        d_init_add varchar(50) NOT NULL,
        d_trgt_add varchar(50) NOT NULL,
        d_price varchar(50) NOT NULL,
        PRIMARY KEY(d_id)
    );
    
    
    `order_info(o_id,u_id,d_id,o_date,pay_id)`
    CREATE TABLE IF NOT EXISTS order_info(
        o_id int(10) NOT NULL AUTO_INCREMENT,
        u_id int NOT NULL,
        d_id int NOT NULL,
        o_date int(50) NOT NULL,
        pay_id int NOT NULL,
        PRIMARY KEY(o_id),
        FOREIGN KEY (u_id) REFERENCES user_info(u_id),
        FOREIGN KEY (d_id) REFERENCES delivery_info(d_id),
        FOREIGN KEY (pay_id) REFERENCES payment_info(pay_id)
    );
    
    
    `orderDetailRecord_info(r_id,o_id,p_id,p_num)`
    CREATE TABLE IF NOT EXISTS orderDetailRecord_info(
        r_id int(10) NOT NULL AUTO_INCREMENT,
        o_id int NOT NULL,
        p_id int NOT NULL,
        p_num int(50) NOT NULL,
        PRIMARY KEY(r_id),
        FOREIGN KEY (o_id) REFERENCES order_info(o_id),
        FOREIGN KEY (p_id) REFERENCES product_info(p_id)
    );
    
    
    `stock_info(s_id,p_id,p_inventory)`
    CREATE TABLE IF NOT EXISTS stock_info(
        s_id int(10) NOT NULL AUTO_INCREMENT,
        p_id int(10),
        p_inventory int(50),
        PRIMARY KEY(s_id),
        FOREIGN KEY(p_id) REFERENCES product_info(p_id)
    );
    
    
    
    

    下面是以上功能的代码以及一些相关的解释:
    最简单的主界面:
    index.html
    //只放了一个注册一个登录的链接

    <html>
    <head>
    <meta charset="utf-8">
    <title>Phones on saling</title>
    </head>	
    <h1>Phones on saling!</h1>
    	<a href="chooseCharactor.html" target="_blank">Sign in the website.</a><br><br>
    	<a href="login.php" target="_blank">Login into the website.</a>
    </html>
    
    

    ###1.注册功能:
    首先要选择角色类型:(这个功能是刚开始练习做的,其实应该把角色选择和注册功能都放在一个页面里,现在分为了三个,分别是选择,管理员注册和用户注册,比较麻烦。后来时间紧,就没有再改了,实际可以合并为一个。)

    chooseCharacter.html

    <html>
    <head>
    	<meta charset="utf-8">
    	<title>Sign in to phone website</title>
    </head>	
    	<h1>Choose your charactor</h1>
    	Please choose which kind of charactor you want to sign in?
    	<form action="chooseCharactor.php" method="get">
        	<select name="q">
        	<option value="">Choose charactor</option>
        	<option value="admin">Admin</option>
        	<option value="user">User</option>
        	</select><br>
        	<input type="submit" value="Submit">
    	</form>
    </html>
    
    

    chooseCharacter.php
    //选择相应的角色后,会跳转到不同角色的注册界面

    <!DOCTYPE html>
    <html>
    <head>
    	<title>Choose charactor</title>
    </head>
    <body>
    	<?php
    	       $q = isset($_GET['q'])? htmlspecialchars($_GET['q']) : '';
    	       if($q == "") {
                    echo "You must choose a charactor!";
                }else if($q != ""){
                    if($q =='admin') {
                        header('Location: adminSign.html');
                    } else if($q =='user') {
                        header('Location: sign.html');
                    }
                }
    	?>
    </body>
    </html>
    

    1)管理员注册:
    adminSign.html
    //管理员注册的界面。管理员注册需要拿到内部的Invitation number(邀请码),注册方可进行。如果已经注册,可以点击下方的login链接,直接登录,将跳转到login.php界面。

    <html>
    <head>
    	<meta charset="utf-8">
    	<title>Sign in to phone website as admin user</title>
    </head>	
    	<h1>Sign in</h1>
    	<form action="adminSign.php" method="post">
     		User name:<input type="text" name="username"><br>
     		User password:<input type="password" name="psw"><br>
     		Confirm user password:<input type="password" name="cofpsw"><br>
     		Invitation number:<input type="text" name="invtnum"><br>
     		<input type="submit" name="submit">
    	</form>
    	If you have already signed in, please click here to login.<br>
    	<a href="login.html" target="_blank">Login into the website.</a>
    </html>
    
    

    adminSign.php
    //处理管理员注册请求

    <!DOCTYPE html>
    <html>
    <head>
    	<title>Sign in the phone web as admin user, success!</title>
    </head>
    <body>
    	<?php
    		include 'executeSql.php';
    		$userName = $_POST["username"];
    		$pwd = $_POST["psw"];
    		$cofPsw = $_POST["cofpsw"];
    		$invtNum = $_POST["invtnum"];
    
    		if($userName == ""||$pwd == ""||$cofPsw == ""|| $invtNum == ""){
    			echo "None of the value can be empty!";
    		}else if($pwd != $cofPsw){
    			echo "The password entered for two time is not same!";
    		}else if($invtNum != "SN90IE58KP"){
    			echo "The invitation number is wrong!";	
    		}else{
    			echo "All values are right, your have sucessfully sign in as admin user!";
    			$sql = "INSERT INTO admin_info (admin_name,admin_pwd) VALUES('" . $userName . "','" . $pwd . "');";
    			//$sql = "INSERT INTO admin_info (admin_name,admin_pwd) VALUES('superadmin','admin123');";
    			//echo $sql;
    			executeSql($sql);
    		}
    	?>
    </body>
    </html>
    
    

    2)用户注册
    sign.html
    //用户注册界面

    <html>
    <head>
    <meta charset="utf-8">
    <title>Sign in to phone website</title>
    </head>	
    <h1>Sign in</h1>
    <form action="sign.php" method="post">
     	User name:<input type="text" name="username"><br>
     	User password:<input type="password" name="psw"><br>
     	Confirm user password:<input type="password" name="cofpsw"><br>
     	Phone:<input type="text" name="phone"><br>
     	Email:<input type="email" name="email"><br>
     <input type="submit" name="submit">
    </form>
    </html>
    
    

    sign.php
    //处理用户注册请求,收集基本信息并加入到数据库。如果存在数据缺失,则不能注册,对两次输入的密码做了基本的检测,并检测邮箱格式的正确性。
    //注册后会跳转到login.php界面,但是因为普通用户注册后,会自动为当前用户登录,并在当前的cookie中存储用户登录的状态,因此不需要再登录一次,可以直接由网页链接跳转到手机购买界面。

    <!DOCTYPE html>
    <html>
    <head>
    	<meta charset="utf-8">
    	<title>Sign in sucess!</title>
    	<style>
    	.button {
    		background-color: #4CAF50;
    		border: none;
    		color: white;
    		padding: 15px 32px;
    		text-align: center;
    		text-decoration: none;
    		display: inline-block;
    		font-size: 16px;
    		margin: 4px 2px;
    		cursor: pointer;
    	}
    	.table{
    	border-style:solid;
    	border-color:#98bf21;
    	align-self: center;
    	align-items: center;
    	}
    	/*.divcss5-right{width:320px; height:120px;border:1px solid #F00;float:right} */
    	.divcss5-right{float:right;} 
    	/* css注释:对divcss5-right设置float:right即可让对象靠右浮动 */
    	</style>
    </head>
    <body>
    	<?php
    	function executeSql($sql){
    		$flag = false;
    		$feedback = array();
    		if($sql == ""){
    			echo "Error! Sql content is empty!";
    		}else{
    			$servername = "localhost";
    			$username = "root";
    			$password = "";
    			$dbname = "hw";
    
    			$conn = mysqli_connect($servername, $username, $password, $dbname);
    
    			if (mysqli_connect_errno()){
    				echo "Failed to connect to MySQL: " . mysqli_connect_error();
    			}
    
    			$query_result=mysqli_query($conn,$sql);//query_result is a PHP array
    			if($query_result){
    				$flag = true;
    				$feedback = $query_result;
    				//$num_rows=mysqli_num_rows($query_result);
    			}
    		return array($flag,$feedback);
    		}
    	}
    
    	$userName = $_POST["username"];
    	$pwd = $_POST["psw"];
    	$cofPsw = $_POST["cofpsw"];
    	$phone = $_POST["phone"];
    	$email = $_POST["email"];
    
    	if($userName == "" || $pwd == "" || $cofPsw == "" || $phone == "" || $email == ""){
    		echo "None of the value can be empty!";
    	}
    	else if($pwd != $cofPsw){
    		echo "The password entered for two time is not same!";
    	}else if ($pwd == $cofPsw){
    		$sql = "INSERT INTO user_info (u_name,u_pwd,u_phone,u_email) VALUES('" .$userName ."','" . $pwd ."','" . $phone . "','" . $email . "');";
    		$result = executeSql($sql);
    		if($result){
    			$select_sql = "SELECT u_id FROM user_info WHERE u_name = '".$userName."';";
    			$result = executeSql($select_sql);
    			if($result[0]){
    				setcookie('login_status',true);
    				while($row = mysqli_fetch_assoc($result[1])){
    					$u_id=$row["u_id"];
    					setcookie('u_id',$u_id);
    				}
    				header("location:login.php");
    			}
    		}
    	}
    	?>
    </body>
    </html>
    
    

    ###2.登录功能:
    login.php
    //用户登录的界面,可以选择管理员用户登录和普通用户登录。
    作为管理员用户登录后,跳转到产品管理界面。作为普通用户登录后,跳转到网站主页,即手机购买界面。

    <html>
    <head>
    <meta charset="utf-8">
    <title>Login in to phone website</title>
    <style>
    	.button {
    		background-color: #4CAF50;
    		border: none;
    		color: white;
    		padding: 15px 32px;
    		text-align: center;
    		text-decoration: none;
    		display: inline-block;
    		font-size: 16px;
    		margin: 4px 2px;
    		cursor: pointer;
    		align-self:right;
    		float: left;
    	}
    	.body{font-family:Arial,Helvetica,sans-serif;font-size:20px;}
    	</style>
    <h2>User Login</h2>
    </head>
    	<body class = "body">
    		<?php
    		if(isset($_COOKIE['login_status'])){
    			echo "Login already.";
    		?>
    		<br>
    		<br>
    		<a href='showPhones.php'>Click here to buy phones.</a>
    		<?php
    		}else{
    		?>
    		<form action="process_login.php" method="post">
    
    			<select name="character">
    				<option value="">Choose your character</option>
    				<option value="admin">admin</option>
    				<option value="user">user</option>
    			</select><br>
    
     			User name:<input type="text" name="username"><br>
    			User password:<input type="password" name="psw"><br>
    			<input type="submit" class = "button" name="submit" value="Choose">
    		</form>
    		<?php
    		}
    		?>
    	</body>
    </html>
    
    

    process_login.php处理登录请求

    <!DOCTYPE html>
    <html>
    <body>
    	<?php
    	function executeSql($sql){
    		$flag = false;
    		$feedback = array();
    		if($sql == ""){
    			echo "Error! Sql content is empty!";
    		}else{
    			$servername = "localhost";
    			$username = "root";
    			$password = "";
    			$dbname = "hw";
    
    			$conn = mysqli_connect($servername, $username, $password, $dbname);
    
    			if (mysqli_connect_errno()){
    				echo "Failed to connect to MySQL: " . mysqli_connect_error();
    			}
    
    			$query_result=mysqli_query($conn,$sql);//query_result is a PHP array
    			if($query_result){
    				$flag = true;
    				$feedback = $query_result;
    				//$num_rows=mysqli_num_rows($query_result);
    			}
    			return array($flag,$feedback);
    		}
    	}
    
    
    	$userName = $_POST["username"];
    	$pwd = $_POST["psw"];
    
    	if(isset($_POST["submit"])){
    		$selected_Charactor = $_POST["character"];	
    	}else{
    		echo "You have choose the wrong charactor!";
    		echo "<br>";
    	}
    
    	if($userName == ""||$pwd == ""){
    		echo "None of the value can be empty!";
    		echo "<br>";
    	}
    
    	//declare the sql var and decides the value
    	//$sql;
    	if($selected_Charactor == "admin"){
    		$sql = "SELECT admin_id FROM admin_info WHERE admin_name = '" . $userName . "' and admin_pwd = '". $pwd ." ' ;" ;
    		$result = executeSql($sql);
    		if ($result[0]) {
    			header('Location: p_manage.php');
    		} else {
    			echo "Error! Something wrong in your username or password!";
    			echo "<br>";
    		}
    	}else if($selected_Charactor == "user"){
    		$sql = "SELECT u_id FROM user_info WHERE u_name = '" . $userName ."' and u_pwd = '".$pwd."' ;" ;
    		$result = executeSql($sql);
    
    		if($result[0]){
    			setcookie('login_status',true);
    			while ($row = mysqli_fetch_assoc($result[1])){
    					$u_id=$row["u_id"];
    					setcookie('u_id',$u_id);
    			}
    			header('Location: showPhones.php');
    		}else{
    			echo "Error! Something wrong in your username or password!";
    			echo "<br>";
    		}
    	}
    	?>
    </body>
    </html>
    
    
    

    ###3.手机产品管理(管理员):
    1)增加新的手机:
    add_product.html
    //增加新的手机库存

    <html>
    <head>
    	<title>Add new product</title>
    	<style>
    	.button {
    		background-color: #4CAF50;
    		border: none;
    		color: white;
    		padding: 15px 32px;
    		text-align: center;
    		text-decoration: none;
    		display: inline-block;
    		font-size: 16px;
    		margin: 4px 2px;
    		cursor: pointer;
    		align-self:right;
    		float: right;
    	}
    	.table{
    	border-style:solid;
    	border-color:#98bf21;
    	align-self: center;
    	align-items: center;
    	width: "12%";
    	height: "20%";
    	}
    	</style>
    </head>
    <h1 align="center">Hello admin user, you can add a new product into database!</h1>
    <body>
    	<form action="add_product.php" method="post">
    		<table align="center" class = "table" border="1">
            	<th>Product Name</th>
            	<th>Product Brand</th>
            	<th>Product Type</th>
            	<th>Product Price</th>
            	<th>Product Inventory</th>
            	<th>Product Description</th>
            	<th>Product Color</th>
            	<th>Product Url</th>
    			<tr>
    				<td><input type="text" name="name"></td>
    				<td><input type="text" name="brand"></td>
    				<td><input type="text" name="type"></td>
    				<td><input type="text" name="price"></td>
    				<td><input type="text" name="inventory"></td>
    				<td><input type="text" name="descr"></td>
    				<td><input type="text" name="color"></td>
    				<td><input type="text" name="url"></td>
    			</tr>
    		</table>
    		<input type="submit" class = "button" name="submit" value="Submit">
    	</form>
    </body>
    </html>
    
    

    add_product.php
    //处理增加请求

    <!DOCTYPE html>
    <html>
    <head>
    	<title>Add new product</title>
    </head>
    <body>
    	<?php
    	function executeSql($sql){
    		$flag = false;
    		if($sql == ""){
    			echo "Error! Sql content is empty!";
    			echo "<br>";
    		}else{
    			$servername = "localhost";
    			$username = "root";
    			$password = "";
    			$dbname = "hw";
    
    			// 创建连接
    			$conn = new mysqli($servername, $username, $password, $dbname);
    			// 检测连接
    			if ($conn->connect_error) {
    				die("Fail to connect!: " . $conn->connect_error);
    			}
    			//执行sql语句
    			if ($conn->query($sql) === TRUE) {
    				$flag = TRUE;
    			} else {
    				echo "Error: " . $sql . "<br>" . $conn->error;
    			}
    			$conn->close();
    			return $flag;
    		}
    	}
    
    	$p_name=$_POST["name"];
    	$p_brand=$_POST["brand"];
    	$p_type=$_POST["type"];
    	$p_price=$_POST["price"];
    	$p_inventory=$_POST["inventory"];
    	$p_descr=$_POST["descr"];
    	$p_color=$_POST["color"];
    	$p_image_url=$_POST["url"];
    
    	if($p_name ==""||$p_brand ==""||$p_type ==""||$p_price ==""||$p_inventory ==""||$p_descr ==""||$p_color ==""){
    		echo "You can not provide empty values!";
    	}else{
    		$sql = "INSERT INTO product_info(p_name,p_brand,p_type,p_price,p_descr,p_color,p_image_url) VALUES 
    		('".$p_name."','".$p_brand."','".$p_type."','".$p_price."','".$p_descr."','".$p_color."','".$p_image_url."');";
    
    		$result = executeSql($sql);
    		if($result){
    			$servername = "localhost";
    			$username = "root";
    			$password = "";
    			$dbname = "hw";
    
    			// 创建连接
    			$conn = mysqli_connect($servername, $username, $password, $dbname);
    
    			// Check connection
    			if (mysqli_connect_errno()){
    				echo "Failed to connect to MySQL: " . mysqli_connect_error();
    			}
    
    			$select_sql = "SELECT * FROM product_info WHERE p_name = '".$p_name."';";
    			$result=mysqli_query($conn,$select_sql);//result is a PHP array
    
    			var_dump($result);
    			$num_rows=mysqli_num_rows($result);
    			//echo $num_rows;
    
    			mysqli_close($conn);
    
    			while ($row = mysqli_fetch_assoc($result)){
    			$p_id=$row["p_id"];
    
    			$insert_sql = "INSERT INTO stock_info(p_id,p_inventory) VALUES (".$p_id.",".$p_inventory.");";
    			$feedback = executeSql($insert_sql);
    			if($feedback){
    				header("location:p_manage.php");
    			}
    		}
    	}
    }
    
    
    ?>
    <br>
    </body>
    </html>
    
    

    2)管理员管理手机(查看,删除,etc)
    p_manage.php

    <!DOCTYPE html>
    <html>
    <head>
    	<meta charset="utf-8">
    	<title>Read product information from database</title>
    	<style>
    	.button {
    		background-color: #4CAF50;
    		border: none;
    		color: white;
    		padding: 15px 32px;
    		text-align: center;
    		text-decoration: none;
    		display: inline-block;
    		font-size: 16px;
    		margin: 4px 2px;
    		cursor: pointer;
    		align-self:right;
    		float: right;
    	}
    	.table{
    	border-style:solid;
    	border-color:#98bf21;
    	align-self: center;
    	align-items: center;
    	width: "10%";
    	}
    	a:link {color:#000000;}      /* 未访问链接*/
    	a:visited {color:#4CAF50;}  /* 已访问链接 */
    	a:hover {color:#4CAF50;}  /* 鼠标移动到链接上 */
    	a:active {color:#0000FF;}  /* 鼠标点击时 */
    	</style>
    </head>
    	<h1 align="center">Welcome! Admin user. This is the page of Product Management.</h1>
    	<script src="http://libs.baidu.com/jquery/2.1.4/jquery.min.js"></script>
    	<script>
    		function newPage(){
    			window.location.assign("add_product.html")
    		}
    		function deleteProduct(p_id){
    			$.ajax({
    				type: "POST",
    				url: "deleteProduct.php",
    				data: "pid="+p_id,
    				success: function(msg){
    					window.location.reload();
    				}
    			});
    		}
    	</script>
    <body>
    	<table border="1" align="center" class = "table">
        	<tr>
            	<th align="center" width="10%">Product ID</th>
            	<th align="center" width="10%">Product Name</th>
            	<th align="center" width="10%">Product Brand</th>
            	<th align="center" width="10%">Product Type</th>
            	<th align="center" width="10%">Product Price</th>
            	<th align="center" width="10%">Product Inventory</th>
            	<th align="center" width="10%">Product Description</th>
            	<th align="center" width="10%">Product Color</th>
            	<th align="center" width="10%">Product Image</th>
            	<th align="center" width="10%">Delete Product</th>
        	</tr>
    	
    	<?php
    		$servername = "localhost";
    		$username = "root";
    		$password = "";
    		$dbname = "hw";
    
    		// 创建连接
    		$conn = mysqli_connect($servername, $username, $password, $dbname);
    
    		// Check connection
    		if (mysqli_connect_errno()){
      			echo "Failed to connect to MySQL: " . mysqli_connect_error();
      		}
    
    		$sql = "SELECT * FROM product_info;";
    		$result=mysqli_query($conn,$sql);//result is a PHP array
    
    		$num_rows=mysqli_num_rows($result);
    		//echo $num_rows;
    
    		$i=0;
    		while ($row = mysqli_fetch_assoc($result)){
    			$p_id=$row["p_id"];
    			$p_name=$row["p_name"];
    			$p_brand=$row["p_brand"];
    			$p_type=$row["p_type"];
    			$p_price=$row["p_price"];
    
    			$p_inventory=0;
    			$select_sql = "SELECT p_inventory FROM stock_info WHERE p_id = ".$p_id.";";
    
    			$select_result=mysqli_query($conn,$select_sql);
    			$select_num_rows=mysqli_num_rows($result);
    			if($select_num_rows){
    				while($select_rows = mysqli_fetch_assoc($select_result)){
    					$p_inventory=$select_rows["p_inventory"];
    				}
    			}else{
    				echo "not fetch";
    			}
    
    			$p_descr=$row["p_descr"];
    			$p_color=$row["p_color"];
    			$p_image_url = $row["p_image_url"];
    			
    			echo "<tr>";
    			echo "<td align='center'>".$p_id."</td>";
    			echo "<td align='center'>".$p_name."</td>";
    			echo "<td align='center'>".$p_brand."</td>";
    			echo "<td align='center'>".$p_type."</td>";
    			echo "<td align='center'>".$p_price."</td>";
    			echo "<td align='center'>".$p_inventory."</td>";
    			echo "<td align='center'>".$p_descr."</td>";
    			echo "<td align='center'>".$p_color."</td>";
    
    			//$image = 'https://cdn2.gsmarena.com/vv/pics/apple/apple-iphone-x-new-1.jpg';
    			$imageData = base64_encode(file_get_contents($p_image_url));
    			//var_dump($imageData);
    			//echo '<div class="img">';
    			echo '<td align="center">[外链图片转存失败(img-WDPS9q7a-1562059529495)(data:image/jpeg;base64,'.$imageData.')]</td>';
    			//echo '</div>';
    			//echo "<td><input type='button' value='Delete' onclick='deleteProduct(".$p_id.")'></td>";
    			?>
    			<td align="center"><a href='deleteProduct.php?goods_id=<?php echo $p_id; ?>'>Delete</a></td>
    			<?php
    			echo "</tr>";
    			$i++;
    		}
    		mysqli_close($conn);
    	?>
    	</table>
    	<br><br>
    	<div class="divcss5-right">
    	<input type="button" class = "button" value="Add new product" onclick="newPage()">
    	</div>
    </body>
    </html>
    
    

    界面如图所示(缩小版的界面)
    这里写图片描述

    4.用户购买手机

    手机展示界面,并可实现增加产品到购物车,没有实现批量添加,每点击一次手机产品对应的添加按钮,则购物车中增加一条该产品的记录。
    添加后会在购物车功能模块处理,如果已经添加够了,也可以直接点击页面最下方的链接,查看购物车。

    showPhones.php
    //代码和p_manage.php类似,有些功能类似或重合

    <!DOCTYPE html>
    <html>
    <head>
    	<meta charset="utf-8">
    	<title>Product information</title>
    	<style>
    	.button {
    		background-color: #4CAF50;
    		border: none;
    		color: white;
    		padding: 15px 32px;
    		text-align: center;
    		text-decoration: none;
    		display: inline-block;
    		font-size: 16px;
    		margin: 4px 2px;
    		cursor: pointer;
    		align-self:right;
    		float: right;
    	}
    	.table{
    	border-style:solid;
    	border-color:#98bf21;
    	align-self: center;
    	align-items: center;
    	width: "10%";
    	}
    	.body{font-family:Arial,Helvetica,sans-serif;font-size:20px;}
    	a:link {color:#000000;}      /* 未访问链接*/
    	a:visited {color:#4CAF50;}  /* 已访问链接 */
    	a:hover {color:#4CAF50;}  /* 鼠标移动到链接上 */
    	a:active {color:#0000FF;}  /* 鼠标点击时 */
    
    	</style>
    </head>
    	<h2 align='center'>Welcome! You can buy your own phone here.</h2>
    <body class="body">
    	<table border="1" class="table"  align='center'>
        	<tr>
            	<th align='center' width="10%">Product Name</th>
            	<th align='center' width="10%">Product Brand</th>
            	<th align='center' width="10%">Product Type</th>
            	<th align='center' width="10%">Product Price</th>
            	<th align='center' width="10%">Product Inventory</th>
            	<th align='center' width="10%">Product Description</th>
            	<th align='center' width="10%">Product Color</th>
            	<th align='center' width="10%">Product Image</th>
            	<th align='center' width="10%">Add to Cart</th>
        	</tr>
    	
    	<?php
    		$servername = "localhost";
    		$username = "root";
    		$password = "";
    		$dbname = "hw";
    
    		// 创建连接
    		$conn = mysqli_connect($servername, $username, $password, $dbname);
    
    		// Check connection
    		if (mysqli_connect_errno()){
      			echo "Failed to connect to MySQL: " . mysqli_connect_error();
      		}
    
    		$sql = "SELECT * FROM product_info;";
    		$result=mysqli_query($conn,$sql);//result is a PHP array
    
    		$num_rows=mysqli_num_rows($result);
    		//echo $num_rows;
    
    		$i=0;
    		while ($row = mysqli_fetch_assoc($result)){
    			$p_id=$row["p_id"];
    			$p_name=$row["p_name"];
    			$p_brand=$row["p_brand"];
    			$p_type=$row["p_type"];
    			$p_price=$row["p_price"];
    
    			$p_inventory=0;
    			$select_sql = "SELECT p_inventory FROM stock_info WHERE p_id = ".$p_id.";";
    
    			$select_result=mysqli_query($conn,$select_sql);
    			$select_num_rows=mysqli_num_rows($result);
    			if($select_num_rows){
    				while($select_rows = mysqli_fetch_assoc($select_result)){
    					$p_inventory=$select_rows["p_inventory"];
    				}
    			}else{
    				echo "not fetch";
    			}
    
    			$p_descr=$row["p_descr"];
    			$p_color=$row["p_color"];
    			$p_image_url = $row["p_image_url"];
    			
    			echo "<tr>";
    			echo "<td align='center'>".$p_name."</td>";
    			echo "<td align='center'>".$p_brand."</td>";
    			echo "<td align='center'>".$p_type."</td>";
    			echo "<td align='center'>".$p_price."</td>";
    			echo "<td align='center'>".$p_inventory."</td>";
    			echo "<td align='center'>".$p_descr."</td>";
    			echo "<td align='center'>".$p_color."</td>";
    
    			//$image = 'https://cdn2.gsmarena.com/vv/pics/apple/apple-iphone-x-new-1.jpg';
    			$imageData = base64_encode(file_get_contents($p_image_url));
    			//var_dump($imageData);
    			echo '<td align="center">[外链图片转存失败(img-ePhuvnsp-1562059529496)(data:image/jpeg;base64,'.$imageData.')]</td>';
    ?>
    
    			<td><a  align='center' href='process_shopCart.php?goods_id=<?php echo $p_id; ?>&goods_name=<?php echo $p_name; ?>'>addCart</a></td>
    <?php
    
    			echo "</tr>";
    			$i++;
    		}
    		mysqli_close($conn);
    ?>
    	</table>
    	<br><br>
    	<a  align='right' href='view_shopCart.php'>Enough adding, click here to shopcart.</a>
    	<br><br><br>
    </body>
    </html>
    
    

    ###5.购物车
    1)process_shopCart.php//处理添加请求

    <!DOCTYPE html>
    <html>
    <head>
    	<title>All fees of shipment.</title>
    </head>
    <body>
    	<?php
    	function executeSql($sql){
    		$flag = false;
    		$feedback = array();
    		if($sql == ""){
    			echo "Error! Sql content is empty!";
    		}else{
    			$servername = "localhost";
    			$username = "root";
    			$password = "";
    			$dbname = "hw";
    
    			$conn = mysqli_connect($servername, $username, $password, $dbname);
    
    			if (mysqli_connect_errno()){
    				echo "Failed to connect to MySQL: " . mysqli_connect_error();
    			}
    
    			$query_result=mysqli_query($conn,$sql);//query_result is a PHP array
    			if($query_result){
    				$flag = true;
    				$feedback = $query_result;
    				//$num_rows=mysqli_num_rows($query_result);
    			}
    			return array($flag,$feedback);
    		}
    	}
    
    
    	$unitPrice  = 0.0;
    	if(isset($_POST["submit"])){
    		$orignLocation = $_POST["orgn_location"];
    		$targetLocation = $_POST["trgt_location"];
    		$company = $_POST["company"];
    
    		if($company == "shun_feng"){$unitPrice = 80.0;setcookie("shipment_way",$company);}
    		if($company == "zhong_tong"){$unitPrice = 40.0;setcookie("shipment_way",$company);}
    		if($company == "yuan_tong"){$unitPrice = 50.0;setcookie("shipment_way",$company);}
    		if($company == "yun_da"){$unitPrice = 39.8;setcookie("shipment_way",$company);}
    		if($company == "shen_tong"){$unitPrice = 57.6;setcookie("shipment_way",$company);}
    
    		$totalItem = $_COOKIE['total_item'];
    		$shipmentPrice = $unitPrice * $totalItem;
    
    		$numbers = range (1,1000000); 
    		//shuffle 将数组顺序随即打乱 
    		shuffle ($numbers); 
    		//array_slice 取该数组中的某一段 
    		$num=1; 
    		$result = array_slice($numbers,0,$num); 
    		$d_random = $result[0];
    
    		$sql = "INSERT INTO delivery_info (d_company, d_init_add, d_trgt_add, d_price, d_random)
    		VALUES ('".$company."', '".$orignLocation."', '".$targetLocation."',".$shipmentPrice.",".$d_random.");";
    
    		$result = executeSql($sql);
    
    		if($result[0]){
    			setcookie('shipment_price',$shipmentPrice);
    			$select_sql = "SELECT d_id FROM delivery_info WHERE d_random = ".$d_random.";";
    			$select_result = executeSql($select_sql);
    			if($select_result[0]){
    				while ($row = mysqli_fetch_assoc($select_result[1])){
    					//var_dump($row);
    					$d_id=$row["d_id"];
    					setcookie('d_id',$d_id);
    					setcookie('shipment_status',true);
    				}
    			}
    		}
    	}
    	header("location:payInfo.php");
    	?>
    </body>
    </html>
    

    2)view_shopCart.php//查看购物车

    <?php
    session_start();
    ?>
    <html>
    <head>
    	<meta charset="utf-8">
    	<title>Shop cart</title>
    </head>
    <h1>View your shop cart here.</h1>
    <body>
    	<table border="1">
    		<tr>
    			<th>Product Name</th>
    			<th>Product Brand</th>
    			<th>Product Price</th>
    			<th>Product Description</th>
    			<th>Product Color</th>
    			<th>Counts</th>
    			<th>Delete from Cart</th>
    		</tr>
    		<?php
    		$totalPrice = 0;
    		$totalItem = 0;
    		$p_info = 0;
    		if(isset($_SESSION['shop-cart'])){
    			foreach ($_SESSION['shop-cart'] as $item){
    				$p_id = $item[0];
    				$p_name = $item[1];
    				$goods_num = $item[2];
    
    				$p_info = $p_info.$p_id.",".$goods_num."/";
    				
    				$servername = "localhost";
    				$username = "root";
    				$password = "";
    				$dbname = "hw";
    
    				$conn = mysqli_connect($servername, $username, $password, $dbname);
    
    				if (mysqli_connect_errno()){
    					echo "Failed to connect to MySQL: " . mysqli_connect_error();
    				}
    
    				$sql = "SELECT * FROM product_info WHERE p_id =".$p_id.";";
    				$result=mysqli_query($conn,$sql);//result is a PHP array
    
    				$num_rows=mysqli_num_rows($result);
    				//echo $num_rows;
    
    				mysqli_close($conn);
    
    
    				while ($row = mysqli_fetch_assoc($result)){
    					$p_brand=$row["p_brand"];
    					$p_type=$row["p_type"];
    					$p_price=$row["p_price"];
    					//$p_inventory=$row["p_inventory"];
    					$p_descr=$row["p_descr"];
    					$p_color=$row["p_color"];
    
    
    					echo "<tr>";
    					echo "<td>".$p_name."</td>";
    					echo "<td>".$p_brand."</td>";
    					echo "<td>".$p_price."HKD</td>";
    					echo "<td>".$p_descr."</td>";
    					echo "<td>".$p_color."</td>";
    					echo "<td>".$goods_num."</td>";
    			?>
    
    					<td><a href='delCart.php?goods_id=<?php echo $p_id; ?>'>Delete</a></td>
    			<?php
    					echo "</tr>";
    					$singlePrice = $p_price * $goods_num;
    					$totalPrice = $totalPrice + $singlePrice;
    					$totalItem = $totalItem + $goods_num;
    					setcookie("total_item",$totalItem);
    					setcookie("phones_price",$totalPrice);
    				}
    			}
    			//echo $p_info;
    			setcookie('p_info',$p_info);
    		?>
    		<tr>
    			<td></td>
    			<td></td>
    			<td></td>
    			<td></td>
    			<td></td>
    			<td><a href='clearCart.php?goods_id=<?php echo $p_id; ?>'>Clear cart</a></td>
    			<td>
    				<?php
    				echo "".$totalItem."   Items. ";
    				echo "Totol prize: ".$totalPrice." HKD";
    				?>
    			</td>
    		</tr>
    	</table>
    	<br>
    	<a href='shipment.php'>Shipment</a>
    	<br>
    	<?php
    }else{
    	echo "The shop cart is empty!";
    	?>
    	<br><br>
    	<a href='showPhones.php'>Back to add goods</a>
    	<?php
    }
    ?>
    
    
    </body>
    </html>
    
    

    购物车如下图:
    购物车界面

    购物车中会展示所有产品的信息,并计算他们的总价格。

    3)delCart.php
    //如果用户在查看购物车时点击删除某项产品,将该产品从购物车中全部删除

    <?php
    session_start();
    
    //$p_name = $_GET["goods_name"];
    $p_id = $_GET["goods_id"];
    $goods_num = 1;
    
    
    function id_inarray($findID, $cart_array)
    {
        $flag = false;
        $counter = 0;
        foreach ($cart_array as $itemList) {
            if (strcmp($itemList[0], $findID) == 0) {
                $flag = true;
                break;
            }
            $counter++;
        }
        return array($flag, $counter);
    }
    
    
    
    $result = id_inarray($p_id,$_SESSION['shop-cart']);
    
    if($result[0]){
    	//如果存在该项,从session中删除
    	if(isset($result[1])){
    		unset($_SESSION['shop-cart'][$result[1]]);
    		$_SESSION['shop-cart'] = array_values($_SESSION['shop-cart']);
    	}
    }else{
    	echo "Cannot delete non-existent items!";
    }
    
    header("location:view_shopCart.php");
    ?>
    

    4)clearCart.php
    //如果用户在查看购物车时,点击了清空购物车,将当前购物车中内容全部清空

    <?php
    session_start();
    $p_id = $_GET["goods_id"];
    echo $p_id;
    
    if(isset($_SESSION['shop-cart'])){
    	echo "destroy session";
    	echo "<br>";
    	echo "<br>";
    	$result = session_destroy();
    }else{
    	echo "There is no goods in shop cart!";
    }
    
    echo "<br>";
    echo $result;
    echo "<br>";
    echo "<br>";
    var_dump($_SESSION);
    header("location:view_shopCart.php");
    ?>
    

    ###6.物流
    点击购物车中的’shipment’,选择装运物流信息。
    shipment.php

    <html>
    <head>
    	<meta charset="utf-8">
    	<title>Shipment</title>
    </head>
    <?php
    if(isset($_COOKIE['shipment_status'])){
    ?>
    <h1>You have already fill the shipment information</h1>
    <body><a href='payInfo.php'>Click here to pay</a></body>
    <?php
    }
    else{
    ?>
    <h1>Choose your shipment way</h1>
    <body>
    	<form action="process_shipment.php" method="post">
    		<table>
    			<th>Delivery Company</th>
    			<th>Orign Location</th>
    			<th>Target Location</th>
    			<tr>
    				<td>
    					<select name="company">
    						<option value="">Choose Company</option>
    						<option value="shun_feng">Shun Feng</option>
    						<option value="zhong_tong">Zhong Tong</option>
    						<option value="yuan_tong">Yuan Tong</option>
    						<option value="yun_da">Yun Da</option>
    						<option value="shen_tong">Shen Tong</option>
    					</select><br>
    				</td>
    				<td><input type="text" name="orgn_location"></td>
    				<td><input type="text" name="trgt_location"></td>
    			</tr>
    		</table>
    		<input type="submit" name="submit" value="Submit">
    	</form>
    </body>
    <?php
    }
    ?>
    </html>
    

    process_shipment.php
    //处理物流信息请求

    <!DOCTYPE html>
    <html>
    <head>
    	<title>All fees of shipment.</title>
    </head>
    <body>
    	<?php
    	function executeSql($sql){
    		$flag = false;
    		$feedback = array();
    		if($sql == ""){
    			echo "Error! Sql content is empty!";
    		}else{
    			$servername = "localhost";
    			$username = "root";
    			$password = "";
    			$dbname = "hw";
    
    			$conn = mysqli_connect($servername, $username, $password, $dbname);
    
    			if (mysqli_connect_errno()){
    				echo "Failed to connect to MySQL: " . mysqli_connect_error();
    			}
    
    			$query_result=mysqli_query($conn,$sql);//query_result is a PHP array
    			if($query_result){
    				$flag = true;
    				$feedback = $query_result;
    				//$num_rows=mysqli_num_rows($query_result);
    			}
    			return array($flag,$feedback);
    		}
    	}
    
    
    	$unitPrice  = 0.0;
    	if(isset($_POST["submit"])){
    		$orignLocation = $_POST["orgn_location"];
    		$targetLocation = $_POST["trgt_location"];
    		$company = $_POST["company"];
    
    		if($company == "shun_feng"){$unitPrice = 80.0;setcookie("shipment_way",$company);}
    		if($company == "zhong_tong"){$unitPrice = 40.0;setcookie("shipment_way",$company);}
    		if($company == "yuan_tong"){$unitPrice = 50.0;setcookie("shipment_way",$company);}
    		if($company == "yun_da"){$unitPrice = 39.8;setcookie("shipment_way",$company);}
    		if($company == "shen_tong"){$unitPrice = 57.6;setcookie("shipment_way",$company);}
    
    		$totalItem = $_COOKIE['total_item'];
    		$shipmentPrice = $unitPrice * $totalItem;
    
    		$numbers = range (1,1000000); 
    		//shuffle 将数组顺序随即打乱 
    		shuffle ($numbers); 
    		//array_slice 取该数组中的某一段 
    		$num=1; 
    		$result = array_slice($numbers,0,$num); 
    		$d_random = $result[0];
    
    		$sql = "INSERT INTO delivery_info (d_company, d_init_add, d_trgt_add, d_price, d_random)
    		VALUES ('".$company."', '".$orignLocation."', '".$targetLocation."',".$shipmentPrice.",".$d_random.");";
    
    		$result = executeSql($sql);
    
    		if($result[0]){
    			setcookie('shipment_price',$shipmentPrice);
    			$select_sql = "SELECT d_id FROM delivery_info WHERE d_random = ".$d_random.";";
    			$select_result = executeSql($select_sql);
    			if($select_result[0]){
    				while ($row = mysqli_fetch_assoc($select_result[1])){
    					//var_dump($row);
    					$d_id=$row["d_id"];
    					setcookie('d_id',$d_id);
    					setcookie('shipment_status',true);
    				}
    			}
    		}
    	}
    	header("location:payInfo.php");
    	?>
    </body>
    </html>
    

    物流选择界面如图:
    这里写图片描述

    ###7.支付
    1)payInfo.php
    //计算商品和物流的总价格并展示,让用户选择支付方式。如果已经选择了支付方式(检查cookie中的值),提升已经选择,并且给出跳转动支付页面的链接。否则让用户选择支付方式,提供了四种,微信,支付宝,信用卡和中国银联,默认选项为支付宝

    <html>
    <head>
    	<meta charset="utf-8">
    	<title>Shop cart</title>
    </head>
    <h1>Total money here, please fill your payment information.</h1>
    <body>
    	
    	<?php
    	if(isset($_COOKIE['pay_way'])){
    		echo "You have fill the payment information.";
    	?>
    	<br>
    		<a href='pay_money.php'>Click here to continue</a>
    	<?php
    	}
    	else{
    	?>
    	<table border="1">
    		<tr>
    			<th>Total Item</th>
    			<th>Phones Price</th>
    			<th>Shipment Way</th>
    			<th>Shipment Price</th>
    			<th>Total Price</th>
    		</tr>
    		<?php
    		$total_item = $_COOKIE['total_item'];
    		$shipment_price = $_COOKIE['shipment_price'];
    		$shipment_way = $_COOKIE['shipment_way'];
    		$phonesPrice = $_COOKIE['phones_price'];
    		$totalPrice = $shipment_price + $phonesPrice;
    		echo "<tr>";
    		echo "<td>".$total_item."</td>";
    		echo "<td>".$phonesPrice."</td>";
    		echo "<td>".$shipment_way."</td>";
    		echo "<td>".$shipment_price."</td>";
    		echo "<td>".$totalPrice."</td>";
    		echo "</tr>";
    		?>
    	</table>
    	<br>
    	<form action="payway.php" method="post">
    		<input type="radio" name="payway" value="Alipay" checked="">Alipay
    		<input type="radio" name="payway" value="WeChatPay">WeChatPay
    		<input type="radio" name="payway" value="Credit">Credit card
    		<input type="radio" name="payway" value="UnionPay">UnionPay<br>
    		<table border = '1'>
    			<tr>
    				<th>Pay user</th>
    				<th>Pay account</th>
    				<th>Receive user</th>
    				<th>Receive account</th>
    			</tr>
    			<tr>
    				<th><input type="text" name="payuser"></th>
    				<th><input type="text" name="payaccount"></th>
    				<th><input type="text" name="receiveuser"></th>
    				<th><input type="text" name="receiveaccount"></th>
    			</tr>
    		</table>		
    		<input type="submit" value="Submit">
    	</form>
    <?php
    }
    ?>
    
    </body>
    </html>
    
    

    界面如图:
    这里写图片描述

    2)pay_way.php
    //将用户支付信息填入数据库表中,并跳转到pay_money.php

    <?php
    
    function executeSql($sql){
    	$flag = false;
    	$feedback = array();
    	if($sql == ""){
    		echo "Error! Sql content is empty!";
    	}else{
    		$servername = "localhost";
    		$username = "root";
    		$password = "";
    		$dbname = "hw";
    
    		$conn = mysqli_connect($servername, $username, $password, $dbname);
    
    		if (mysqli_connect_errno()){
    			echo "Failed to connect to MySQL: " . mysqli_connect_error();
    		}
    
    			$query_result=mysqli_query($conn,$sql);//query_result is a PHP array
    			if($query_result){
    				$flag = true;
    				$feedback = $query_result;
    				//$num_rows=mysqli_num_rows($query_result);
    			}
    			return array($flag,$feedback);
    		}
    	}
    
    	$payWay = $_POST['payway'];
    	$payUser = $_POST['payuser'];
    	$payAccount = $_POST['payaccount'];
    	$receiveUser = $_POST['receiveuser'];
    	$receiveAccount = $_POST['receiveaccount'];
    	$payStatus = false;
    
    	$numbers = range (1,1000000); 
    	shuffle ($numbers); 
    	$num=1; 
    	$result = array_slice($numbers,0,$num); 
    	$pay_random = $result[0];
    
    	if($payUser == "" ||$payAccount == "" || $receiveUser == "" || $receiveAccount == ""){
    		echo "You must fill the blanks.";
    	}else{
    		$sql = "INSERT INTO payment_info (pay_user, receive_user, pay_account, receive_account,pay_way,pay_status,pay_random)
    		VALUES ('".$payUser."', '".$receiveUser."', ".$payAccount.",".$receiveAccount.",'".$payWay."','".$payStatus."',".$pay_random.");";
    
    		$result = executeSql($sql);
    
    		if($result[0]){
    			$select_sql = "SELECT pay_id FROM payment_info WHERE pay_random = ".$pay_random.";";
    			$select_result = executeSql($select_sql);
    			if($select_result[0]){
    				while ($row = mysqli_fetch_assoc($select_result[1])){
    					$pay_id=$row["pay_id"];
    					setcookie('pay_id',$pay_id);
    				}
    			}
    			setcookie('pay_way',$payWay);
    		}
    		header("location:pay_money.php");
    	}
    ?>
    

    3)pay_money.php
    //根据payInfo.php中选择的支付方式,打开相应的界面,让用户登录并付钱。
    然后将订单信息全部丢给process_order.php处理
    //这里有一点需要特别说明的是,因为这是一个练习,数据都是虚拟的,所以无法从支付宝或者微信,银联等获知用户支付已经支付成功,所以这里将是否已经支付的判定设置为,只要用户填写了付款信息,并点击付款,打开了支付页面,这里就在cookie中设置为已支付状态

    <?php
    function executeSql($sql){
    		$flag = false;
    		$feedback = array();
    		if($sql == ""){
    			echo "Error! Sql content is empty!";
    		}else{
    			$servername = "localhost";
    			$username = "root";
    			$password = "";
    			$dbname = "hw";
    
    			$conn = mysqli_connect($servername, $username, $password, $dbname);
    
    			if (mysqli_connect_errno()){
    				echo "Failed to connect to MySQL: " . mysqli_connect_error();
    			}
    
    			$query_result=mysqli_query($conn,$sql);//query_result is a PHP array
    			if($query_result){
    				$flag = true;
    				$feedback = $query_result;
    				//$num_rows=mysqli_num_rows($query_result);
    			}
    		return array($flag,$feedback);
    		}
    	}
    
    if(isset($_COOKIE['pay_way'])){
    	$payWay = $_COOKIE['pay_way'];
    }else{
    	echo "Error!";
    }
    
    if($payWay == "Alipay"){
    	echo "<script>window.open('https://auth.alipay.com/login/index.htm?goto=https%3A%2F%2Fmy.alipay.com%2Fportal%2Fi.htm')</script>";
    	//$image_url = "https://www.hkelectric.com/zh/CustomerServices/PublishingImages/Alipay_Download_QR.jpg";
    	//$imageData = base64_encode(file_get_contents($image_url));
    	//echo '[外链图片转存失败(img-0UVbanjU-1562059529497)(data:image/jpeg;base64,'.$imageData.')]';
    }else if($payWay == "WeChatPay"){
    	//$image_url = "https://3.bp.blogspot.com/-ymZs4Aij_f8/WnXUq9v5Z9I/AAAAAAAAFeA/Zrnru65sDLEgGbVbJ_KevD9_izoL3YO5wCLcBGAs/s1600/wechat.jpg";
    	//$imageData = base64_encode(file_get_contents($image_url));
    	//var_dump($imageData);
    	//echo '[外链图片转存失败(img-Ji9HZKJS-1562059529497)(data:image/jpeg;base64,'.$imageData.')]';
    	echo "<script>window.open('https://pay.weixin.qq.com/index.php/public/wechatpay')</script>";
    }else if($payWay == "Credit"){
    	echo "<script>window.open('https://bank.hangseng.com/1/2/chi/e-services/personal-ebanking/hk-personal-ebanking')</script>";
    }else if($payWay == "UnionPay"){
    	echo "<script>window.open('https://cn.unionpay.com/front.do')</script>";
    }
    
    setcookie('pay_status',true);
    
    $sql = "UPDATE payment_info SET pay_status=1 WHERE pay_id = ".$_COOKIE['pay_id'].";";
    $result = executeSql($sql);
    if($result[0]){
    	echo "<br>";
    	echo "<br>";
    	echo "<a href='process_order.php'>Click here to see order information.</a>";
    }else{
    	echo "You have to pay first!";
    }
    
    
    ?>
    

    ###8.查看交易信息并导出报告
    1)process_order.php
    //将订单的信息填入到数据库表中

    <!DOCTYPE html>
    <html>
    <head>
    	<title>Order information</title>
    </head>
    <body>
    	<?php
    	function executeSql($sql){
    		$flag = false;
    		$feedback = array();
    		if($sql == ""){
    			echo "Error! Sql content is empty!";
    		}else{
    			$servername = "localhost";
    			$username = "root";
    			$password = "";
    			$dbname = "hw";
    
    			$conn = mysqli_connect($servername, $username, $password, $dbname);
    
    			if (mysqli_connect_errno()){
    				echo "Failed to connect to MySQL: " . mysqli_connect_error();
    			}
    
    			$query_result=mysqli_query($conn,$sql);//query_result is a PHP array
    			if($query_result){
    				$flag = true;
    				$feedback = $query_result;
    				//$num_rows=mysqli_num_rows($query_result);
    			}
    			return array($flag,$feedback);
    		}
    	}
    
    	function infoSplit($p_info){
    		$result = array();
    		$single_info = explode("/", $p_info);
    		foreach($single_info as $val){
    			$single_result = array();
    			$details = explode(",",$val);
    			foreach ($details as $value){
    				array_push($single_result, $value);	
    			}
    			array_push($result, $single_result);
    		}
    		array_pop($result);
    		return $result;
    	}
    
    	$u_id = $_COOKIE['u_id'];
    	$d_id = $_COOKIE['d_id'];
    	$pay_id = $_COOKIE['pay_id'];
    	$p_info = $_COOKIE['p_info'];
    	echo $p_info;
    	$o_date = date("Y-m-d H:i:s");
    	$o_id = 0;
    	//echo gettype($o_date);
    
    	$sql = "INSERT INTO order_info (u_id,d_id,o_date,pay_id) VALUES(".$u_id.",".$d_id.",'".$o_date."',".$pay_id.");";
    	$insert_result = executeSql($sql);
    
    	if($insert_result[0]){
    		$select_sql = "SELECT o_id FROM order_info WHERE pay_id = ".$pay_id.";";
    		$select_result = executeSql($select_sql);
    		if($select_result[0]){
    			while($row = mysqli_fetch_assoc($select_result[1])){
    				$o_id=$row["o_id"];
    				setcookie('o_id',$o_id);
    			}
    		}
    	}
    
    	$split_result = infoSplit($p_info);
    	//var_dump($split_result);
    	for($i = 0; $i < count($split_result);$i++){
    		$p_id = $split_result[$i][0];
    		$p_num = $split_result[$i][1];
    		$p_inventory = 0;
    
    		$insert_order_sql = "INSERT INTO orderDetailRecord_info (o_id,p_id,p_num) VALUES(".$o_id.",".$p_id.",".$p_num.");";
    		$insert_order_result = executeSql($insert_order_sql);
    		if($insert_order_result[0]){
        		//select product num from stock_info and update
    			$select_stock_num_sql = "SELECT p_inventory FROM stock_info WHERE p_id = ".$p_id.";";
    			$select_stock_num_result = executeSql($select_stock_num_sql);
    			if($select_stock_num_result[0]){
    				while($row = mysqli_fetch_assoc($select_stock_num_result[1])){
    					$p_inventory = $row['p_inventory'];
    				}
    			}
    			//update p_inventory
    			$p_inventory = $p_inventory - $p_num;
    			$update_sql = "UPDATE stock_info SET p_inventory = '".$p_inventory."' WHERE p_id = '".$p_id."';";
    			$update_result = executeSql($update_sql);
    			if($update_result[0]){
    				header('location:view_order.php');
    			}
    		}
    	}
    		?>
    	</body>
    	</html>
    

    2)view_order.php
    //查看订单信息,并给出生成报告的链接

    <!DOCTYPE html>
    <html>
    <head>
    	<title>Order Information</title>
    </head>
    <body>
    	<?php
    	if($_COOKIE['pay_status']){
    		$o_id = $_COOKIE['o_id'];
    		$u_id = $_COOKIE['u_id'];
    		$tracking_num = $_COOKIE['d_id'];
    		$pay_id = $_COOKIE['pay_id'];
    		$total_item = $_COOKIE['total_item'];
    		$phones_price = $_COOKIE['phones_price'];
    		$shipment_price = $_COOKIE['shipment_price'];
    		$total_price = $phones_price + $shipment_price;
    		$pay_status = $_COOKIE['pay_status'];
    		?>
    		<table border="1">
    			<caption><h2>Order information</h2></caption>
    			<tr>
    				<th>Order id</th>
    				<th>User</th>
    				<th>Tracking Number</th>
    				<th>Product Price</th>
    				<th>Delivery Price</th>
    				<th>Total Items</th>
    				<th>Total Price</th>
    				<th>Payment ID</th>
    				<th>Pay Status</th>
    			</tr>
    	<?php
    			echo "<tr>";
    			echo "<td>".$o_id."</td>";
    			echo "<td>".$u_id."</td>";
    			echo "<td>".$tracking_num."</td>";
    			echo "<td>".$phones_price."HKD</td>";
    			echo "<td>".$shipment_price."HKD</td>";
    			echo "<td>".$total_item."</td>";
    			echo "<td>".$total_price."HKD</td>";
    			echo "<td>".$pay_id."</td>";
    			if($pay_status){
    				echo "<td>Paid</td>";
    			}else{
    				echo "<td>Not Paid</td>";
    			}
    			echo "</tr>";
    			echo "</table>";
    			echo "<br>";
    			echo "<a href='eStockReport.php'>Export Product Report</a>";
    			echo "<br>";
    			echo "<br>";
    			echo "<a href='eOrderReport.php'>Export Order Report</a>";
    			echo "<br>";
    			echo "<br>";
    			echo "<a href='eDeliveryReport.php'>Export Delivery Report</a>";
    
    		}else{
    			header('location:payInfo.php');
    		}
    	?>
    	</body>
    	</html>
    

    9.导出报告

    1)eOrderReport.php
    //导出订单报告

    <!DOCTYPE html>
    <html>
    <head>
    	<title>Export Report</title>
    </head>
    <body>
    	<?php
    	function executeSql($sql){
    		$flag = false;
    		$feedback = array();
    		if($sql == ""){
    			echo "Error! Sql content is empty!";
    		}else{
    			$servername = "localhost";
    			$username = "root";
    			$password = "";
    			$dbname = "hw";
    
    			$conn = mysqli_connect($servername, $username, $password, $dbname);
    
    			if (mysqli_connect_errno()){
    				echo "Failed to connect to MySQL: " . mysqli_connect_error();
    			}
    
    			$query_result=mysqli_query($conn,$sql);//query_result is a PHP array
    			if($query_result){
    				$flag = true;
    				$feedback = $query_result;
    				//$num_rows=mysqli_num_rows($query_result);
    			}
    			return array($flag,$feedback);
    			mysqli_close($conn);
    		}
    	}
    
    	$myfile = fopen("OrderReport.txt", "w")
    	or die("Unable to open file!");
    
    	$file_stream = null;
    
    	$sql = "SELECT * FROM order_info;";
    	$result = executeSql($sql);
    	if($result[0]){
    		$i=0;
    		while ($row = mysqli_fetch_assoc($result[1])){
    			$o_id=$row["o_id"];
    			$u_id=$row["u_id"];
    			$d_id=$row["d_id"];
    			$o_date=$row["o_date"];
    			$pay_id=$row["pay_id"];
    
    			$file_stream = $file_stream."Order ID: ".$o_id."\n";
    			$file_stream = $file_stream."User ID: ".$u_id."\n";
    			$file_stream = $file_stream."Delivery ID: ".$d_id."\n";
    			$file_stream = $file_stream."Order Date: ".$o_date."\n";
    			$file_stream = $file_stream."Payment ID: ".$pay_id."\n";
    
    			$select_sql = "SELECT * FROM orderDetailRecord_info WHERE o_id = ".$o_id.";";
    
    			$select_result=executeSql($select_sql);
    			if($select_result[0]){
    				$j = 0;
    				while($select_rows = mysqli_fetch_assoc($select_result[1])){
    					$r_id=$select_rows["r_id"];
    					$p_id=$select_rows["p_id"];
    					$p_num=$select_rows["p_num"];
    
    					$file_stream = $file_stream."Product ID: ".$p_id."   \t";
    					$file_stream = $file_stream."Product Number: ".$p_num."\n";
    					$j++;
    				}
    			}else{
    				echo "not fetch";
    			}
    			$i++;
    			$file_stream = $file_stream."\n\n\n";
    		}
    	}
    
    	//向文件中写入字符串
    	fwrite($myfile, $file_stream);
    
    	//关闭文件句柄
    	fclose($myfile);
    
    	header('location:view_order.php');
    	?>
    </body>
    </html>
    

    2)eStockReport.php
    //导出库存报告

    <!DOCTYPE html>
    <html>
    <head>
    	<title>Export Report</title>
    </head>
    <body>
    	<?php
    	$file_stream = null;
    	function executeSql($sql){
    		$flag = false;
    		$feedback = array();
    		if($sql == ""){
    			echo "Error! Sql content is empty!";
    		}else{
    			$servername = "localhost";
    			$username = "root";
    			$password = "";
    			$dbname = "hw";
    
    			$conn = mysqli_connect($servername, $username, $password, $dbname);
    
    			if (mysqli_connect_errno()){
    				echo "Failed to connect to MySQL: " . mysqli_connect_error();
    			}
    
    			$query_result=mysqli_query($conn,$sql);//query_result is a PHP array
    			if($query_result){
    				$flag = true;
    				$feedback = $query_result;
    				//$num_rows=mysqli_num_rows($query_result);
    			}
    			return array($flag,$feedback);
    			mysqli_close($conn);
    		}
    	}
    
    	$myfile = fopen("StockReport.txt", "w")
    	or die("Unable to open file!");
    
    	
    
    	$sql = "SELECT * FROM product_info;";
    	$result = executeSql($sql);
    	if($result[0]){
    		$i=0;
    		while ($row = mysqli_fetch_assoc($result[1])){
    			$p_id=$row["p_id"];
    			$p_name=$row["p_name"];
    			$p_brand=$row["p_brand"];
    			$p_type=$row["p_type"];
    			$p_price=$row["p_price"];
    
    			$p_inventory=0;
    			$select_sql = "SELECT p_inventory FROM stock_info WHERE p_id = ".$p_id.";";
    
    			$select_result=executeSql($select_sql);
    			if($select_result[0]){
    				while($select_rows = mysqli_fetch_assoc($select_result[1])){
    					$p_inventory=$select_rows["p_inventory"];
    				}
    			}else{
    				echo "not fetch";
    			}
    
    			$p_descr=$row["p_descr"];
    			$p_color=$row["p_color"];
    			$p_image_url = $row["p_image_url"];
    			//$imageData = base64_encode(file_get_contents($p_image_url));
    
    			$file_stream = $file_stream."Product ID: ".$p_id."\n";
    			$file_stream = $file_stream."Product Name: ".$p_name."\n";
    			$file_stream = $file_stream."Product Brand: ".$p_brand."\n";
    			$file_stream = $file_stream."Product Type: ".$p_type."\n";
    			$file_stream = $file_stream."Product Price: ".$p_price."\n";
    			$file_stream = $file_stream."Product Inventory: ".$p_inventory."\n";
    			$file_stream = $file_stream."Product Description: ".$p_descr."\n";
    			$file_stream = $file_stream."Product Color: ".$p_color."\n";
    			$file_stream = $file_stream."Product Image URL: ".$p_image_url."\n\n\n";
    			$i++;
    		}
    	}
    
    	//向文件中写入字符串
    	fwrite($myfile, $file_stream);
    
    	//关闭文件句柄
    	fclose($myfile);
    
    	function php_sendmail($stream){
    		require('class.phpmailer.php');  
    
    //$mail->Host = "ssl://smtp.gmail.com"; 
    $mail = new PHPMailer(); //实例化  
    
    $mail->IsSMTP(); // 启用SMTP  
    
    //$mail->Host = "smtp.163.com"; //SMTP服务器 163邮箱例子  
    $mail->Host = "smtp.126.com"; //SMTP服务器 126邮箱例子  
    //$mail->Host = "smtp.qq.com"; //SMTP服务器 qq邮箱例子  
    
    $mail->Port = 25;  //邮件发送端口  
    $mail->SMTPAuth   = true;  //启用SMTP认证  
    
    $mail->CharSet  = "UTF-8"; //字符集  
    $mail->Encoding = "base64"; //编码方式  
    
    $mail->Username = "";  //你的邮箱  
    $mail->Password = "";  //你的密码  
    $mail->Subject = "Product information updating"; //邮件标题  
    
    $mail->From = "";  //发件人地址(也就是你的邮箱)  
    $mail->FromName = "";   //发件人姓名  
    
    $address = "";//收件人email  
    $mail->AddAddress($address, "");    //添加收件人1(地址,昵称)    
    
    //$mail->AddAttachment('xx.xls','我的附件.xls'); // 添加附件,并指定名称  
    
    $mail->IsHTML(true); //支持html格式内容  
    //$mail->AddEmbeddedImage("logo.jpg", "my-attach", "logo.jpg"); //设置邮件中的图片  
    $mail->Body = $file_stream; //邮件主体内容  
    
    //发送
    if(!$mail->Send()){ 
    	echo "Fialed to send " . $mail->ErrorInfo;  
    } else {  
    	echo "Successfully send the email!";  
    }  
    }
    
    php_sendmail($file_stream);
    header('location:view_order.php');
    ?>
    </body>
    </html>
    

    3)eDeliveryReport.php
    //导出物流报告

    <!DOCTYPE html>
    <html>
    <head>
    	<title>Export Report</title>
    </head>
    <body>
    	<?php
    	function executeSql($sql){
    		$flag = false;
    		$feedback = array();
    		if($sql == ""){
    			echo "Error! Sql content is empty!";
    		}else{
    			$servername = "localhost";
    			$username = "root";
    			$password = "";
    			$dbname = "hw";
    
    			$conn = mysqli_connect($servername, $username, $password, $dbname);
    
    			if (mysqli_connect_errno()){
    				echo "Failed to connect to MySQL: " . mysqli_connect_error();
    			}
    
    			$query_result=mysqli_query($conn,$sql);//query_result is a PHP array
    			if($query_result){
    				$flag = true;
    				$feedback = $query_result;
    				//$num_rows=mysqli_num_rows($query_result);
    			}
    			return array($flag,$feedback);
    			mysqli_close($conn);
    		}
    	}
    
    	$myfile = fopen("DeliveryReport.txt", "w")
    	or die("Unable to open file!");
    
    	$file_stream = null;
    
    	$sql = "SELECT * FROM delivery_info;";
    	$result = executeSql($sql);
    	if($result[0]){
    		$i=0;
    		while ($row = mysqli_fetch_assoc($result[1])){
    			$d_id=$row["d_id"];
    			$d_company=$row["d_company"];
    			$d_init_add=$row["d_init_add"];
    			$d_trgt_add=$row["d_trgt_add"];
    			$d_price=$row["d_price"];
    
    			$file_stream = $file_stream."Delivery ID: ".$d_id."\n";
    			$file_stream = $file_stream."Delivery Company: ".$d_company."\n";
    			$file_stream = $file_stream."Delivery Initial Address: ".$d_init_add."\n";
    			$file_stream = $file_stream."Delivery Target Address: ".$d_trgt_add."\n";
    			$file_stream = $file_stream."Delivery Price: ".$d_price."\n\n\n";
    			$i++;
    		}
    	}
    
    	//向文件中写入字符串
    	fwrite($myfile, $file_stream);
    
    	//关闭文件句柄
    	fclose($myfile);
    
    	header('location:view_order.php');
    	?>
    </body>
    </html>
    

    ###10.搜索功能
    做了一个分类搜索的功能,用的就是数据库的模糊查询,很简单
    1)search.html
    //页面

    <html>
    <head>
    <meta charset="utf-8">
    <title>Search phones</title>
    </head>	
    <h1>Search what you want</h1>
    	<form action="search.php" method="post">
    
    			<select name="select_condition">
    				<option value="">Choose a condition</option>
    				<option value="brand">Brand</option>
    				<option value="name">Product Name</option>
    				<option value="type">Type</option>
    				<option value="color">Color</option>
    				<option value="price">Price</option>
    			</select><br><br>
    
     			Enter your condition here:<br>
     			<input type="text" name="value"><br><br>
    			If you choose price, please enter the price range here:<br>
    			Low range:<input type="text" name="low_range"><br>
    			High range:<input type="text" name="high_range"><br>
    			<input type="submit" name="submit" value="Submit">
    
    		</form>
    </html>
    

    2)search.php
    //处理查询请求

    <!DOCTYPE html>
    <html>
    <body>
    <?php
    	if(isset($_POST["submit"])){
    		$selected_Condition = $_POST["select_condition"];
    	}else{
    		echo "No condition selected!";
    		echo "<br>";
    	}
    
    	if($selected_Condition == "brand"){
    		$value = $_POST["value"];
    		if($value ==""){
    			echo "The value can't be empty!";
    			echo "<br>";
    		}else{
    			$sql = "SELECT * FROM product_info WHERE p_brand LIKE '%".$value."%';";
    			showResult($sql);
    			
    		}
    	}else if($selected_Condition == "name"){
    		$value = $_POST["value"];
    		if($value ==""){
    			echo "The value can't be empty!";
    			echo "<br>";
    		}else{
    			$sql = "SELECT * FROM product_info WHERE p_name LIKE '%".$value."%';";
    			showResult($sql);
    		}
    			
    	}else if($selected_Condition == "type"){
    		$value = $_POST["value"];
    		if($value ==""){
    			echo "The value can't be empty!";
    			echo "<br>";
    		}else{
    			$sql = "SELECT * FROM product_info WHERE p_type LIKE '%".$value."%';";
    			showResult($sql);
    		}
    
    	}else if($selected_Condition == "color"){
    		$value = $_POST["value"];
    		if($value ==""){
    			echo "The value can't be empty!";
    			echo "<br>";
    		}else{
    			$sql = "SELECT * FROM product_info WHERE p_color LIKE '%".$value."%';";
    			showResult($sql);
    		}
    
    	}else if($selected_Condition == "price"){
    		$low_range = $_POST["low_range"];
    		$high_range = $_POST["high_range"];
    		if($low_range ==""||$high_range == ""){
    			echo "The range can't be empty!";
    			echo "<br>";
    		}else{
    			$sql = "SELECT * FROM product_info WHERE p_price BETWEEN ".$low_range." AND ".$high_range.";";
    			showResult($sql);
    		}
    
    	}
    	
    	function showResult($sql){
    		$servername = "localhost";
    		$username = "root";
    		$password = "";
    		$dbname = "hw";
    
    		$conn = mysqli_connect($servername, $username, $password, $dbname);
    
    		// Check connection
    		if (mysqli_connect_errno()){
      			echo "Failed to connect to MySQL: " . mysqli_connect_error();
      		}
    
    		$result=mysqli_query($conn,$sql);//result is a PHP array
    
    		$num_rows=mysqli_num_rows($result);
    
    		mysqli_close($conn);
    
    		if($num_rows == 0){
    			echo "There is no meeted results.";
    		}else{
    			echo '<table border="1">';
        		echo "<tr>";
        		echo "<th>Product Name</th>";
            	echo "<th>Product Brand</th>";
            	echo "<th>Product Type</th>";
            	echo "<th>Product Price</th>";
            	echo "<th>Product Description</th>";
            	echo "<th>Product Color</th>";
            	echo "<th>Product Image</th>";
        		echo "</tr>";
    
    			$i=0;
    			while ($row = mysqli_fetch_assoc($result)){
    				$p_name=$row["p_name"];
    				$p_brand=$row["p_brand"];
    				$p_type=$row["p_type"];
    				$p_price=$row["p_price"];
    				$p_descr=$row["p_descr"];
    				$p_color=$row["p_color"];
    				$p_image_url = $row["p_image_url"];
    			
    				echo "<tr>";
    				echo "<td>".$p_name."</td>";
    				echo "<td>".$p_brand."</td>";
    				echo "<td>".$p_type."</td>";
    				echo "<td>".$p_price."</td>";
    				echo "<td>".$p_descr."</td>";
    				echo "<td>".$p_color."</td>";
    				$imageData = base64_encode(file_get_contents($p_image_url));
    				echo '<td>[外链图片转存失败(img-CAzDYQv5-1562059529498)(data:image/jpeg;base64,'.$imageData.')]</td>';
    				echo "</tr>";
    				$i++;
    			}
    			echo "</table>";
    		}
    	}
    		
    ?>
    
    
    </body>
    </html>
    
    
    

    ####特别说明:
    1)购物车用session实现
    2)其他各种用户登录状态,产品id等信息,均存储在cookie数组中
    3)当某种产品卖出后,会从数据库中将该产品的库存减去订单中相应的数量。

    展开全文
  • 小型的电商网站,购物车的商品购买主页的渲染等一系列流程,可以作为毕业设计,相当于一个小型的项目,里面有些专业东西,建议有着node基础的人参观
  • 小型网站架构分析及优化

    千次阅读 2018-08-08 14:47:07
     以上网站架构广泛运用中大型网站中,本文从架构每层分析所用主流技术和解决手段,有助于初入网站运维朋友们,进一步对网站架构认识,从而自己形成一套架构概念。 第层:CDN 国内网络分布主要南电信北联通,...

    先看网站架构图:

     以上网站架构广泛运用中大型网站中,本文从架构每一层分析所用主流技术和解决手段,有助于初入网站运维朋友们,进一步对网站架构认识,从而自己形成一套架构概念。

    第一层:CDN

    国内网络分布主要南电信北联通,造成跨地区访问延迟大问题,对于有一定访问量网站来说,增加CDN(内容分发网络)层可有效改善此现象,也是网站加速的最好选择。CDN把网站页面缓存到全国分布的节点上,用户访问时从最近的机房获取数据,这样大大减少网络访问的路径。如果想自己搭建CDN,不建议这么做,因为什么呢?其实说白了,就是什么事别往运维上拦。CDN架构部署不复杂,影响效果的因素却很多,后期管理维护也比较复杂,想达到预期的效果确非易事,这是一个费力不讨好的活,最后老板还是感觉是你能力不足。建议找专做CDN的公司,费用也不贵,有抗流量攻击能力,效果也很好,运维也少很多事,何乐而不为呢!

    第二层:反向代理(网页缓存)

    如果CDN没有缓存要请求的数据则向这层发起请求,在代理服务器配置缓存功能(本地),代理服务器就查找本地缓存是否有CDN请求的数据,如果有就直接返回给CDN,如果没有则请求后端负载均衡器然后转发给WEB服务器返回数据给代理服务器,代理服务器再将结果给CDN。代理服务器一般缓存不经常变动的静态页面,如image、js、css、html等,主流的缓存软件有Squid、Varnish、Nginx。

    第三层:负载均衡

    访问量较大的网站都会用到负载均衡,因为这是解决单台服务器性能瓶颈的最好办法。反向代理将请求转发给负载均衡器,负载均衡器根据算法(轮训、负载情况选择后端等)交给后端WEB服务处理,WEB服务处理完成后直接返回数据给反向代理服务器。负载均衡合理分配请求给后端多台WEB服务器,减轻单台服务器并发负载,并保证服务可用性。主流的负载均衡软件有LVS、HAProxy、Nginx。

    第四层:WEB服务

    WEB服务是处理用户请求的,WEB服务处理效率,直接影响到访问速度,为避免这层因素造成访问慢,应对其进行调优,让WEB服务发挥到最佳状态。常见的WEB服务有Apache和Nginx。

    Apache优化:

    1).mod_deflate压缩模块

    查看是否加载:

    # apachectl M |grep deflate

    如果没有安装使用apxs编译进去:

    # /usr/local/apache/bin/apxs c I A apache源码目录/modules/mod_deflate.c

    deflate配置参数:

    DeflateCompressionLevel6      #压缩等级(1-9),数值越大效率越高,消耗CPU也就越高
    SetOutputFilterDEFLATE      #启用压缩
    AddOutputFilterByTypeDEFLATE text/html text/plain text/xml #压缩类型
    AddOutputFilterByTypeDEFLATE css js html htm xml php

    2).mod_expires缓存模块

    查看是否加载:

    # apachectl M |grep expires

    如果没有安装使用apxs编译进去:

    # /usr/local/apache/bin/apxs c I A apache源码目录/modules/mod_expires.c

    再在httpd.conf启用模块:LoadModule expires_module modules/mod_expires.so

    缓存机制有三种用法:全局、目录和虚拟主机

    全局配置,在配置文件末尾添加:

    ExpiresActiveon       #启用有效期控制,会自动清除已过期的缓存,然后从服务器获取新的
    ExpiresDefault "accessplus 1 days"       #默认任意格式的文档都是1天后过期
    ExpiresByTypetext/html "access plus 12 months"  
    ExpiresByTypeimage/jpg "access plus 12 months"   #jpg格式图片缓存12月

    3).工作模式选择及优化

    apache有两种常见工作模式,worker和prefork,默认是worker,是混合型的MPM(多路处理模块),支持多进程和多线程,由线程来处理请求,所以可以处理更多请求,提高并发能力,系统资源开销也小于基于进程的MPM,由于线程使用进程内存空间,进程崩溃会导致其下线程崩溃。而prefork是非线程型MPM,进程占用系统资源也比worker多,由于进程处理连接,在工作效率上也比worker更稳定。可通过apache2 l查看当前工作模式,在编译时使用—with-mpm参数指定工作模式。根据自己业务需求选择不同工作模式,再适当增加工作模式相关参数,可提高处理能力。

    配置参数说明: 

    StartServers      8   #默认启动8个httpd进程
    MinSpareServers    5    #最小的空闲进程数
    MaxSpareServers    20   #最大的空闲进程数,如果大于这个值,apache会自动kill一些进程
    ServerLimit      256   #服务器允许进程数的上限
    MaxClients       256  #同时最多发起多少个访问,超过则进入队列等待
    MaxRequestsPerChild  4000  #每个进程启动的最大线程

    Nginx优化:

    1).gzip压缩模块

    http {
        ……
        gzip on;
        gzip_min_length 1k;   #允许压缩的页面最小字节数,默认是0,多大都压缩,小于1k的可能适得其反
        gzip_buffers 4 16k;   #gzip申请内存的大小,按数据大小的4倍去申请内存
        gzip_http_version 1.0;  #识别http协议版本
        gzip_comp_level 2;    #压缩级别,1压缩比最小,处理速度最快,9压缩比最大,处理速度最慢
        gzip_types text/plainapplication/x-javascripttext/css application/xml image/jpg;  #压缩数据类型
        gzip_vary on;      #根据客户端的http头来判断,是否需要压缩
    }

    2).expires缓存模块

    server {
        location ~ .*.(gif|jpg|png|bmp|swf)$   #缓存数据后缀类型
        {
          expires 30d;   #使用expires缓存模块,缓存到客户端30天
        }
        location ~ .*.( jsp|js|css)?$
        {
          expires 1d;
        }
    }

    3).fastcgi优化

    nginx不支持直接调用或者解析动态程序(php),必须通过fastcgi(通用网关接口)来启动php-fpm进程来解析php脚本。也就是说用户请求先到nginx,nginx再将动态解析交给fastcgi,fastcgi启动php-fpm解析php脚本。所以我们有必要对fastcgi和php-fpm进行适当的参数优化。

    http {
        ……
        fastcgi_cache_path/usr/local/nginx/fastcgi_cache levels=1:2 keys_zone=TEST:10m inactive=5m;  
        # FastCGI缓存指定一个文件路径、目录结构等级、关键字区域存储时间和非活动删除时间
        fastcgi_connect_timeout 300;    #指定连接到后端FastCGI的超时时间
        fastcgi_send_timeout 300;     #指定向FastCGI传送请求的超时时间
        fastcgi_read_timeout 300;     #指定接收FastCGI应答的超时时间
        fastcgi_buffer_size 64k;      #指定读取FastCGI应答第一部分需要多大的缓冲区
        fastcgi_buffers 4 64k;      #指定本地需要用多少盒多大的缓冲区来缓冲FastCGI的应答请求
        fastcgi_busy_buffers_size 128k;   
        fastcgi_temp_file_write_size 128k;  #表示在写入缓存文件时使用多大的数据块,默认值是fastcgi_buffers的两倍
        fastcgi_cache TEST;          #开启fastcgi_cache缓存并指定一个TEST名称
        fastcgi_cache_valid 200 302 1h;   #指定200、302应答代码的缓存1小时
        fastcgi_cache_valid 301 1d;     #将301应答代码缓存1天
        fastcgi_cache_valid any 1m;     #将其他应答均缓存1分钟
    }

    php-fpm.conf配置参数:

    pm =dynamic        #两种控制子进程方式(static和dynamic)
    pm.max_children= 5     #同一时间存活的最大子进程数
    pm.start_servers= 2    #启动时创建的进程数
    pm.min_spare_servers= 1  #最小php-fpm进程数
    pm.max_spare_servers= 3  #最大php-fpm进程数
    

    4).proxy_cache本地缓存模块

    http {
            ……
       proxy_temp_path  /usr/local/nginx/proxy_cache/temp;    #缓存临时目录
       proxy_cache_path /usr/local/nginx/proxy_cache/cache levels=1:2 keys_zone=one:10m inactive=1d max_size=1g;
       #缓存文件实际目录,levels定义层级目录,1:2说明1是一级目录,2是二级目录,keys_zone存储元数据,并分配10M内存空间。inctive表示1天没有被访问的缓存就删除,默认10分钟。max_size是最大分配磁盘空间
       server {
          listen 80;
          server_name 192.168.1.10;
          location / {
            proxy_cache one;   #调用缓存区
            #proxy_cache_valid 200 304 12h; #可根据HTTP状态码设置不同的缓存时间
            proxy_cache_valid any  10m;    #缓存有效期为10分钟
          }
          #清除URL缓存,允许来自哪个网段的IP可以清除缓存(需要安装第三方模块"ngx_cache_purge"),清除URL缓存方法:访问http://192.168.1.10/purge/文件名
          location ~ /purge(/.*){
            allow 127.0.0.1;
            allow 192.168.1.0/24;
            deny all;
            proxy_cache_purge cache_one$host$1$is_args$args;
          }
     }

    小结:

    启用压缩模块可以节省一部分带宽,会增加WEB端CPU处理,但在上图网站架构中,WEB端启用压缩模块并没有起到作用,因为传输到上层走的是局域网。对于直接面向用户的架构还是要启用的。WEB也不用启用expires模块,因为有了反向代理服务器和CDN,所以到不了用户浏览器,开启起不到作用。

    如果反向代理使用nginx做代理,可开启expires模块,将静态文件缓存到用户浏览器,浏览器发起请求时,先判断本地缓存是否有请求的数据,如果有再判断是否过期,如果不过期就直接浏览缓存数据,哪怕服务器资源已经改变,所以要根据业务情况合理设置过期时间。

    5. 利用PHP缓存器提高代码执行效率

    php程序在没有使用缓存器情况下,每次请求php页面,php都会对此页面进行代码编译,这就意味着重复的编译工作会增加服务器负载。有了缓存器就会把每次编译后的数据缓存到共享内存中,下次访问直接使用缓冲区已编译好的代码,从而避免重复的编译过程,以加快其执行效率。因此PHP网站使用缓存器是完全有必要的!主流的PHP缓存器有:eAccelerator、XCache

    第五层:动静分离

    动静分离,顾名思义,是将动态页面和静态页面分离到不同服务器上处理,比如使用web是nginx,可以让fastcgi部署到单独一台服务器,专门解析php动态页面,静态页面默认由nginx处理,并做好缓存策略。再比如一个商城网站,会有大量的图片,可以考虑增加文件服务器组,将请求图片和上传图片的都交给文件服务器处理。文件服务器主流使用NFS,存在单点故障,可以DRBD+HeartBeat+NFS部署高可用,如果单台压力过大,考虑使用分布式文件系统,如GlusterFS、MooseFS等。

    第六层:数据库缓存

    利用缓存技术,把热数据缓存到内存中,如果请求的数据在缓存中,就直接返回,否则去数据库中取,并更新把拿的数据更新到缓存系统,提高读性能,降低数据库压力。缓存实现有本地缓存和分布式缓存,本地缓存是将数据缓存到本地服务器内存中或者文件中。分布式缓存是将数据缓存到内存中,是分布式的,可以缓存海量数据,扩展性好。主流的分布式缓存系统有Memcached和Redis,Memcached性能稳定,速度很快,QPS可达8w左右。如果想数据持久化就选择用Redis,性能不低于Memcached。

    第七层:数据库

    这层在整个网站架构中起着主导型作用,直接决定用户体验,相对架构优化也比较复杂,具体请参考博文:http://lizhenliang.blog.51cto.com/7876557/1657465

    核心思路:减少请求层,尽可能让前端层返回用户请求的数据,减少后端服务器访问频率,最重要是数据库层。

    转载来源:http://blog.51cto.com/lizhenliang/1664428

     

    小编积累多年的干货文档免费赠送,包含前端后端和测试,系统架构,高并发处理,优化等

     

     

     

     

    展开全文
  • 其实学生搞小型网站,有一个不错的选择,方便快捷安全性也高,而且性价比非常不错。可谓非常超值,非常适合个人、初创公司、小微企业的高性价比建站选择。阿里云·速成美站具有以下几个功能亮点:提供千套精美网站...
  • 写在前面由于最近公司业务不是很忙,空闲时间比较多,于是就在纠结Vue.js(之前就学习过)和Node.js先专研哪个比较好,最终...大概过来一个多月,我决定两路开工。使用Node.js给前端写接口,配备后台管理功能,先把后台
  • 你是否担心依赖第三方在线服务提供商来存储你的业务数据?...问题又来了,大多数小型企业只能通过投资专用的内部IT设备来成功实现这目标,因为建立这种内部IT基础设施所需要的预算通常超过了大...
  • 使用Java SSH框架,设计的一个小型企业网站功能很有限,只供学习使用。 数据库设计使用:PowerDesigner 15 部分使用Ajax 提供源代码 有兴趣的朋友可以再二次
  • Zoomeye是网络空间的搜索引擎,它不同于传统意义上的搜索引擎,而是种可以搜索网络组件和网络设备的搜索引擎。 这种以各大组件指纹作为识别基础的数据平台,更多的是为了使得安全研究人员更好地评估漏洞的...
  • 小型电子商务网站数据管理系统

    千次阅读 2016-05-27 20:06:12
    6、小型电子商务网站数据管理系统 假设该网站主要经营各类图书,通过前台程序实现简单的管理功能。 图书(编号、名称、类别、页数、单价、数量、出版社、版次、第作者、出版年月、内容简介) 类别(类别、名称) ...
  • 这是一个小型超市管理的实现和设计,希望大家可以多多下载,班级第一的还是有水平的, 这是一个小型超市管理的实现和设计,希望大家可以多多下载,班级第一的还是有水平的 这是一个小型超市管理的实现和设计,...
  • 这是一个关于小型校园二手拍卖网站毕业论文,毕设的可以参考下
  • 排名不分安装顺序先后,但是最好按照所示步骤安装,每个中间件安装好后立即进行测试,成功后进行下一个中间间的安装。期间遇到的服务端口都保持缺省即可。 JDK1.8 (运行平台) RabbitMq 采用最新版本即可(要先...
  • 分钟搞懂中小型企业网络架构

    千次阅读 多人点赞 2020-03-14 11:33:02
    2. 只有一个外网IP; 3. 公司有4个部门(10个也行,多几个VLAN的事儿); 4. 需要电脑自动能获取到IP地址,不需要手动配置; 网络拓扑: 拓扑说明: 1. 拓扑里我用Cisco 2811充当防火墙,实属无奈,这个版本PT...
  • 软件测试面试题(面试前准备篇)

    万次阅读 多人点赞 2019-09-27 10:42:37
    、问题预测 让简单介绍下自己(每次面试开场) 让说下自己会的内容 看了哪些书籍(有问到) 了解过哪些技术博客/论坛(有问到) 是否了解软件测试需要掌握哪些知识(问到类似问题) 之前面试过,觉得...
  • 个小型数据库的比较

    千次阅读 2014-05-08 00:36:55
    :大家可以看我的SQLite系列随笔,C编写的,可以跨操作平台,支持大部分ANSI SQL 92,它是嵌入式的轻量级关系形数据库引擎,只需要一个DLL,体积为250k,数据库也只是一个文件,零配置,便可工作。既然开源,你甚至...
  • 测试开发笔记

    万次阅读 多人点赞 2019-11-14 17:11:58
    章 测试基础 7 什么是软件测试: 7 ★软件测试的目的、意义:(怎么好软件测试) 7 3.软件生命周期: 7 第二章 测试过程 8 1.测试模型 8 H模型: 8 V模型 9 2.内部测试 10 3外部测试: 10 验收测试:(在系统...
  • 2020前端学习路线收集整理

    万次阅读 多人点赞 2019-12-08 15:05:24
    刚毕业自学Java,第份工作因部门解散,时效半年,其实那时我一直在想往前端发展,恰巧拿到下家offer,第二份工作确实是前端,不过是客户是银行,样式全部统一,与我想象的色彩缤纷的前端完全不符,时效3半月。...
  • 基于华为ensp的小型政府网站的设计

    千次阅读 2020-06-02 15:21:53
    其中包括政府办公室,公交财贸办公室,访问服务器,地址服务器,农村办公室,民政司法办公室,文教卫生办公室,城镇规划建设与管理办公室这几部门我在进行其它的方案设计的时候,可能设计的不是太完美,所以在进行...
  • 压力测试工具

    万次阅读 多人点赞 2018-12-20 16:06:28
    目录 1 性能测试... 2 2 压力测试(Stress Test)... 2 2.1 网站测试... 2 2.2 系统测试要求... 3 3 测试工具... 3 3.1 Webbench. 4 3.1.1 Ubuntu 下载安装... 5 3.1.2 ...
  • 这是我的第076篇原创文章,记录网络工程师行业的点点滴滴,结交IT行业有缘之人 ...根据自己从事网络工程师行业,也从事过网络工程师培训行业,一共十五年从业的时间,曾经在外企,在世界五百强,在中小型企业都
  • JAVA上百实例源码以及开源项目

    千次下载 热门讨论 2016-01-03 17:37:40
     用JAVA开发的一个小型的目录监视系统,系统会每5秒自动扫描一次需要监视的目录,可以用来监视目录中文件大小及文件增减数目的变化。 Java日期选择控件完整源代码 14个目标文件 内容索引:JAVA源码,系统相关,日历,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 77,632
精华内容 31,052
关键字:

做一个小型网站