zoukankan      html  css  js  c++  java
  • PHP基础示例:商品信息管理系统v1.1

    实现目标:使用php和mysql写一个商品信息管理系统,并带有购物车功能

    一、创建数据库和表

      1.创建数据库和表:demodb

      2.创建表格:goods

      字段:商品编号,商品名称,商品类型,商品图片,单价,商品描述,库存量,添加时间

    二、创建php文件编写代码(以下为要创建的php文件及其用途)

      add.php  商品添加页面

      edit.php      商品信息编辑表单页

      index.php  商品信息浏览页

      action.php  执行商品信息添加和修改及删除等操作处理

      dbconfig.php  公共配置文件,数据库连接配置信息

      menu.php  网站公共导航栏

      uploads/   上传图片的存放目录

      function.php 公共函数库文件:图片信息的上传,等比缩放等处理函数

      addCart.php 添加购物车信息的操作(向SESSION放入要购买的信息)

      myCart.php  实现了购物车信息的浏览操作,并且实现商品信息的统计(小计和总价)

      clearCart.php 实现了购物车信息的单个商品删除或清空购物车操作

      updateCart.php  修改购物车中商品的数量,防止过小约束

    各php文件关系图示:

    好,那下面是代码部分:

    首先是建表语句:

     1 create database newsdb;//创建库语句
     2 
     3 create table goods (
     4     id int(10) unsigned NOT NULL AUTO_INCREMENT,
     5     name varchar(64) NOT NULL,
     6     typeid int(10) unsigned NOT NULL,
     7     price double(6,2) unsigned NOT NULL,
     8     total int(10) unsigned NOT NULL,
     9     pic varchar(32) NOT NULL,
    10     note text,
    11     addtime int(10) unsigned NOT NULL,
    12     PRIMARY KEY (`id`)
    13 ) //创建表语句
    建表语句

    以下为各php文件代码,需要的朋友可直接将各代码复制并放到同一目录下即可,还要在同目录下创建uplaods文件夹存放上传图片

     1 <html>
     2     <head>
     3         <title>商品信息管理</title>
     4     </head>
     5     <body>
     6         <center>
     7             <?php include("menu.php");//导入导航栏  ?>
     8             <h3>发布商品信息</h3>
     9             <form action="action.php?action=add" enctype="multipart/form-data" method="post">
    10             <table border="0" width="300">
    11                 <tr>
    12                     <td align="right">名称:</td>
    13                     <td><input type="text" name="name"/></td>
    14                 </tr>
    15                 <tr>
    16                     <td align="right">类型:</td>
    17                     <td>
    18                         <select name="typeid">
    19                         <?php 
    20                             include("dbconfig.php");
    21                             foreach($typelist as $k=>$v)
    22                             {
    23                                 echo "<option value='{$k}'>{$v}</option>";
    24                             }
    25                         ?>
    26                         </select>
    27                     </td>
    28                 </tr>
    29                 <tr>
    30                     <td align="right">单价:</td>
    31                     <td><input type="text" name="price"/></td>
    32                 </tr>
    33                 <tr>
    34                     <td align="right">库存:</td>
    35                     <td><input type="text" name="total"/></td>
    36                 </tr>
    37                 <tr>
    38                     <td align="right">图片:</td>
    39                     <td><input type="file" name="pic"/></td>
    40                 </tr>
    41                 <tr>
    42                     <td align="right" valign="top">描述:</td>
    43                     <td><textarea rows="5" cols="20" name="note"></textarea></td>
    44                 </tr>
    45                 <tr>
    46                     <td colspan="2" align="center">
    47                         <input type="submit" value="添加"/>&nbsp;&nbsp;
    48                         <input type="reset" value="重置"/>
    49                     </td>
    50                 </tr>
    51             </table>
    52             </form>
    53         </center>
    54     </body>
    55 </html>
    add.php
      1 <?php
      2 //执行商品信息的增、删、改的操作
      3 
      4 //一、导入配置文件和函数库文件
      5     require("dbconfig.php");
      6     require("function.php");
      7 //二、连接MySQL,选择数据库
      8     $link = mysql_connect(HOST,USER,PASS) or die("数据库连接失败");
      9     mysql_select_db(DBNAME,$link);
     10     
     11     
     12 //三、获取action参数的值,并做对应的操作
     13     switch($_GET["action"])
     14     {
     15         case "add": //添加
     16             //1.获取添加信息
     17             $name = $_POST["name"];
     18             $typeid = $_POST["typeid"];
     19             $price = $_POST["price"];
     20             $total = $_POST["total"];
     21             $note = $_POST["note"];
     22             $addtime = time();
     23             //2.验证()省略
     24             if(empty($name))
     25             {
     26                 die("商品名称必须有值");
     27             }
     28             //3.执行图片上传
     29             $upinfo = uploadFile("pic","./uploads/");
     30             if($upinfo["error"]===false)
     31             {
     32                 die("图片信息上传失败:".$upinfo["info"]);
     33             }else
     34             {
     35                 //上传成功
     36                 $pic = $upinfo["info"];//获取上传成功的图片名
     37                 
     38             }
     39             //4.执行图片缩放
     40             imageUpdateSize('./uploads/'.$pic,50,50);
     41             //5.拼装sql语句,并执行添加
     42             $sql = "insert into goods values(null,'{$name}','{$typeid}',{$price},{$total},'{$pic}','{$note}',{$addtime})";
     43             mysql_query($sql,$link);
     44             //6.判断并输出结果
     45             if(mysql_insert_id($link)>0)
     46             {
     47                 echo "商品发布成功";
     48             }else
     49             {
     50                 echo "商品发布失败";
     51             }
     52             echo "<br> <a href='index.php'>查看商品信息<a>";
     53             
     54             break;
     55         case "del": //删除
     56             //获取要删除的id号并拼装删除sql,执行
     57             $sql = "delete from goods where id={$_GET['id']}";
     58             
     59             mysql_query($sql,$link);
     60             //执行图片删除
     61             if(mysql_affected_rows($link)>0)
     62             {
     63                 @unlink("./uploads/".$_GET['picname']);
     64                 @unlink("./uploads/s_".$_GET['picname']);
     65             }
     66             //跳转到浏览界面
     67             header("Location:index.php");
     68             break;
     69             
     70         case "update":  //修改
     71             //1.获取要修改的信息
     72             $name = $_POST["name"];
     73             $typeid = $_POST["typeid"];
     74             $price = $_POST["price"];
     75             $total = $_POST["total"];
     76             $note = $_POST["note"];
     77             $id = $_POST['id'];
     78             $pic = $_POST['oldpic'];
     79             //2.数据验证
     80             if(empty($name))
     81             {
     82                 die("商品名称必须有值");
     83             }
     84             //3.判断有无图片上传
     85             if($_FILES['pic']['error']!=4)
     86             {
     87                 //执行上传
     88                 $upinfo = uploadFile("pic","./uploads/");
     89                 if($upinfo["error"]===false)
     90                 {
     91                     die("图片信息上传失败:".$upinfo["info"]);
     92                 }else
     93                 {
     94                     //上传成功
     95                     $pic = $upinfo["info"];//获取上传成功的图片名
     96                     //4.有图片上传执行缩放
     97                     imageUpdateSize('./uploads/'.$pic,50,50);
     98                 }
     99             }
    100             
    101             
    102             //5.执行修改
    103             $sql = "update goods set name='{$name}',typeid={$typeid},price={$price},total={$total},note='{$note}',pic='{$pic}' where id={$id}";
    104             mysql_query($sql,$link);
    105             //6.判断是否修改成功
    106             if(mysql_affected_rows($link)>0)
    107             {
    108                 if($_FILES['pic']['error']!=4)
    109                 {
    110                     //若有图片上传,就删除老图片
    111                     @unlink("./uploads/".$_POST['oldpic']);
    112                     @unlink("./uploads/s_".$_POST['oldpic']);
    113                 }
    114                 echo "修改成功";
    115             }else
    116             {
    117                 echo "修改失败".mysql_error();
    118             }
    119             echo "<br> <a href='index.php'>查看商品信息<a>";
    120             break;
    121             default:
    122                 echo "错误";break;
    123              
    124     }
    125 //四、关闭数据库
    126     mysql_close($link);
    action.php
     1 <?php
     2 //公共信息配置文件
     3 
     4 //数据库信息配置
     5 define("HOST","localhost");//主机名
     6 define("USER","root");     //用户名
     7 define("PASS","root");     //密码
     8 define("DBNAME","demodb"); //数据库名
     9 
    10 //商品类型列表信息
    11 $typelist=array(1=>"服装",2=>"数码",3=>"食品");
    12 
    13 
    14 ?>
    dbconfig.php
     1 <html>
     2     <head>
     3         <title>商品信息管理</title>
     4     </head>
     5     <body>
     6         <center>
     7             <?php include("menu.php");//导入导航栏  ?>
     8             <h3>浏览商品信息<h3>
     9             
    10             <table border="1" width="700">
    11                 <tr>
    12                     <th>商品编号</th>
    13                     <th>商品名称</th>
    14                     <th>商品图片</th>
    15                     <th>单价</th>
    16                     <th>库存量</th>
    17                     <th>添加时间</th>
    18                     <th>操作</th>
    19                 </tr>
    20                 <?php 
    21                 //从数据库中读取信息并输出到浏览器表格中
    22                 //1.导入配置文件
    23                     require("dbconfig.php");
    24                 //2.连接数据库,并选择数据库
    25                     $link = @mysql_connect(HOST,USER,PASS) or die("数据库连接失败");
    26                     mysql_select_db(DBNAME,$link);
    27                 //3.执行商品信息查询
    28                     $sql="select * from goods";
    29                     $result = mysql_query($sql,$link);
    30                     
    31                 //4.解析商品信息(解析结果集)
    32                     while($row = mysql_fetch_assoc($result))
    33                     {
    34                         echo "<tr>";
    35                         echo "<td>{$row["id"]}</td>";
    36                         echo "<td>{$row["name"]}</td>";
    37                         echo "<td><img src='./uploads/s_{$row['pic']}'/></td>";
    38                         echo "<td>{$row["price"]}</td>";
    39                         echo "<td>{$row["total"]}</td>";
    40                         echo "<td>".date("Y-m-d H:i:s",$row['addtime'])."</td>";
    41                         echo "<td>
    42                                 <a href='action.php?action=del&id={$row['id']}&picname={$row['pic']}'>删除</a>  
    43                                 <a href='edit.php?id={$row['id']}'>修改</a>  
    44                                 <a href='addCart.php?id={$row['id']}'>放入购物车</a>  
    45                                                                                     
    46                               </td>";
    47                         echo "</tr>";
    48                     }
    49                 //5.释放结果集,关闭数据库
    50                 ?>
    51             </table>
    52         </center>
    53     </body>
    54 </html>
    index.php
     1 <html>
     2     <head>
     3         <title>商品信息管理</title>
     4     </head>
     5     <body>
     6         <center>
     7             <?php 
     8                 include("menu.php");//导入导航栏  
     9                 //1.导入配置文件
    10                 require("dbconfig.php");
    11                 //2.连接数据库,并选择数据库
    12                 $link = @mysql_connect(HOST,USER,PASS) or die("数据库连接失败");
    13                 mysql_select_db(DBNAME,$link);
    14                 //3.获取要修改的商品信息
    15                 $sql="select *from goods where id={$_GET['id']}";
    16                 $result = mysql_query($sql,$link);
    17                 //4.判断是否获取到要编辑的商品信息
    18                 if($result&&mysql_num_rows($result)>0)
    19                 {
    20                     $shop=mysql_fetch_assoc($result);//解析出要修改的商品信息
    21                 }else
    22                 {
    23                     die("没有找到要修改的商品信息");
    24                 }
    25                 
    26             ?>
    27             <h3>编辑商品信息</h3>
    28             <form action="action.php?action=update" enctype="multipart/form-data" method="post">
    29                 <input type="hidden" name="id" value="<?php echo $shop['id']; ?>" />
    30                 <input type="hidden" name="oldpic" value="<?php echo $shop['pic']; ?>" />
    31                 
    32             <table border="0" width="300">
    33                 <tr>
    34                     <td align="right">名称:</td>
    35                     <td><input type="text" name="name" value="<?php echo $shop['name']; ?>" /></td>
    36                 </tr>
    37                 <tr>
    38                     <td align="right">类型:</td>
    39                     <td>
    40                         <select name="typeid">
    41                         <?php 
    42                             include("dbconfig.php");
    43                             foreach($typelist as $k=>$v)
    44                             {
    45                                 $sd = ($shop['typeid']==$k)?"selected":"";//判断是否当前的类型
    46                                 echo "<option value='{$k}' {$sd}>{$v}</option>";
    47                             }
    48                         ?>
    49                         </select>
    50                     </td>
    51                 </tr>
    52                 <tr>
    53                     <td align="right">单价:</td>
    54                     <td><input type="text" name="price" value="<?php echo $shop['price']; ?>" /></td>
    55                 </tr>
    56                 <tr>
    57                     <td align="right">库存:</td>
    58                     <td><input type="text" name="total" value="<?php echo $shop['total']; ?>" /></td>
    59                 </tr>
    60                 <tr>
    61                     <td align="right">图片:</td>
    62                     <td><input type="file" name="pic"/></td>
    63                 </tr>
    64                 <tr>
    65                     <td align="right" valign="top">描述:</td>
    66                     <td><textarea rows="5" cols="20" name="note"><?php echo $shop['note']; ?></textarea></td>
    67                 </tr>
    68                 
    69                 <tr>
    70                     <td colspan="2" align="center">
    71                         <input type="submit" value="修改" />&nbsp;&nbsp;
    72                         <input type="reset" value="重置" />
    73                     </td>
    74                 </tr>
    75                 <tr>
    76                     <td align="right" valign="top">&nbsp;</td>
    77                     <td><img src="./uploads/<?php echo $shop['pic'];?>" /></td>
    78                 </tr>
    79             </table>
    80             </form>
    81         </center>
    82     </body>
    83 </html>
    edit.php
      1 <?php
      2 //公共函数库
      3 
      4 /*
      5  * 文件上传处理函数
      6  * @param string filename 要上传的文件表单项名
      7  * @param string $path  上传文件的保存路径
      8  * @param array     允许的文件类型
      9  * @return array    两个单元: ["error"] false:失败,ture:成功
     10  *                          ["info"] 存放失败原因或成功的文件名
     11  */
     12 
     13 function uploadFile($filename,$path,$typelist=null)
     14 {
     15     //1.获取上传文件的名字
     16     $upfile = $_FILES[$filename];
     17     if(empty($typelist))
     18     {
     19         $typelist=array("image/gif","image/jpg","image/jpeg","image/png","image/pjpeg","image/x-png");//允许的文件类型
     20     }
     21     $res=array("error"=>false);//存放返回的结果
     22     //2.过滤上传文件的错误号
     23     if($upfile["error"]>0)
     24     {
     25         switch($upfile["error"])
     26         {
     27             case 1:
     28                 $res["info"]="上传的文件超过了 php.ini中upload_max_filesize选项大小";
     29                 break;
     30             case 2:
     31                 $res["info"]="上传文件的大小超过了HTML表单中MAX_FILE_SIZE选项";
     32                 break;
     33             case 3:
     34                 $res["info"]="文件只有部分被上传";
     35                 break;
     36             case 4:
     37                 $res["info"]="没有文件被上传";
     38                 break;
     39             case 6:
     40                 $res["info"]="找不到临时文件夹";
     41                 break;
     42             case 7:
     43                 $res["info"]="文件写入失败";
     44                 break;
     45             default:
     46                 $res["info"]="未知错误!";
     47                 break;
     48             
     49         }
     50         return $res;
     51     }
     52     //3.本次文件大小的限制
     53     if($upfile["size"]>1000000)
     54     {
     55         $res["info"]="上传文件过大!";
     56         return $res;
     57     }
     58     //4.过滤类型
     59     if(!in_array($upfile["type"],$typelist))
     60     {
     61         $res["info"]="上传类型不符!".$upfile["type"];
     62         return $res;
     63     }
     64     //5.初始化下信息(为图片产生一个随机的名字)
     65     $fileinfo = pathinfo($upfile["name"]);
     66     do
     67     {
     68         $newfile = date("YmdHis").rand(1000,9999).".".$fileinfo["extension"];//随机产生名字
     69         
     70     }while(file_exists($newfile));
     71     //6.执行上传处理
     72     if(is_uploaded_file($upfile["tmp_name"]))
     73     {
     74         if(move_uploaded_file($upfile["tmp_name"],$path."/".$newfile))
     75         {
     76             //将上传成功后的文件名赋给返回数组
     77             $res["info"]=$newfile;
     78             $res["error"]=true;
     79             return $res;
     80         }else
     81         {
     82             $res["info"]="上传文件失败!";
     83         }
     84     }else
     85     {
     86         $res["info"]="不是一个上传的文件";
     87     }
     88     return $res;
     89 }
     90 //==================================================
     91 /*
     92  * 
     93  * 等比缩放函数(以保存的方式实现)
     94  * @param string $picname 被缩放的处理图片源
     95  * @param int $maxx 缩放后的图片的最大宽度
     96  * @param int $maxy 缩放后图片的最大高度
     97  * @param string $pre 缩放后图片名的前缀名
     98  * @param string  返回后的图片名称(带路径),如a.jpg=>s_a.jpg
     99  */
    100 function imageUpdateSize($picname,$maxx=100,$maxy=100,$pre="s_"){
    101     $info=getimagesize($picname); //获取图片的基本信息
    102     $w = $info[0];//获取宽度
    103     $h = $info[1]; // 获取高度
    104     switch($info[2]){
    105         case 1: //gif
    106             $im=imagecreatefromgif($picname);
    107             break;
    108         case 2: //jpg
    109             $im=imagecreatefromjpeg($picname);
    110             break;
    111         case 3: //png
    112             $im=imagecreatefrompng($picname);
    113             break;
    114         default :
    115         die("图片类型错误");
    116     }
    117     //计算缩放比例
    118     if(($maxx/$w)>($maxy/$h)){
    119         $b=$maxy/$h;
    120     }else{
    121         $b=$maxx/$w;
    122     }
    123     //计算缩放后的尺寸
    124     $nw=floor($w*$b);
    125     $nh=floor($h*$b);
    126     //创建一个新的图像源
    127     $nim=imagecreatetruecolor($nw,$nh);
    128     //执行等比缩放
    129     imagecopyresampled($nim,$im,0,0,0,0,$nw,$nh,$w,$h);
    130     //输出图像
    131     $picinfo=pathinfo($picname);
    132     $newpicname=$picinfo["dirname"]."/".$pre.$picinfo["basename"];
    133 
    134     switch($info[2]){
    135         case 1:
    136             imagegif($nim,$newpicname);
    137             break;
    138         case 2:
    139             imagejpeg($nim,$newpicname);
    140             break;
    141         case 3:
    142             imagepng($nim,$newpicname);
    143             break;
    144         default:
    145             echo "图片压缩错误";
    146     }
    147     //释放图片资源
    148     imagedestroy($im);
    149     imagedestroy($nim);
    150     //返回结果
    151     return $newpicname;
    152 }
    function.php
    1     <h2>商品信息管理--购物车</h2>
    2     <a href="index.php">浏览商品</a>|
    3     <a href="add.php">添加商品</a>|
    4     
    5     <a href="myCart.php">我的购物车</a>|
    6     <a href="clearCart.php">清空购物车</a>
    7     
    8     
    9     <hr width=80%/>
    menu.php
     1 <?php 
     2     session_start();//启动会话
     3 
     4 ?>
     5 <html>
     6     <head>
     7         <title>商品信息管理</title>
     8     </head>
     9     <body>
    10         <center>
    11             <?php include("menu.php");//导入导航栏  ?>
    12             <h3>添加商品到购物车<h3>
    13             
    14                 <?php 
    15                 //从数据库中读取要购买的信息并添加到购物车中
    16                 //1.导入配置文件
    17                     require("dbconfig.php");
    18                 //2.连接数据库,并选择数据库
    19                     $link = @mysql_connect(HOST,USER,PASS) or die("数据库连接失败");
    20                     mysql_select_db(DBNAME,$link);
    21                 //3.执行商品信息查询(获取要购买的信息)
    22                     $sql="select * from goods where id={$_GET['id']}";
    23                     $result = mysql_query($sql,$link);
    24                     
    25                 //4.判断是否没有找到要购买的信息,若有就读取出要购买的信息
    26                     if(empty($result) || mysql_num_rows($result)==0)
    27                     {
    28                         die("没有找到要购买的信息!");
    29                     }else
    30                     {
    31                         $shop = mysql_fetch_assoc($result);
    32                     }
    33                     $shop["num"]=1;//添加一个数量的字段
    34                 //5.放入购物车中(若已存在的商品实现数量累加)
    35                     if(isset($_SESSION["shoplist"]{$shop['id']}))
    36                     {
    37                         //若存在数量增加1
    38                         $_SESSION["shoplist"][$shop['id']]["num"]++;
    39                     }else
    40                     {
    41                         //若不存在,作为新购买的商品添加到购物车中
    42                         $_SESSION["shoplist"][$shop['id']]=$shop;
    43                     }
    44                     
    45                 ?>
    46             </table>
    47         </center>
    48     </body>
    49 </html>
    addCart
     1 <?php 
     2     session_start();//启动会话
     3 
     4 ?>
     5 <html>
     6     <head>
     7         <title>商品信息管理</title>
     8     </head>
     9     <body>
    10         <center>
    11             <?php include("menu.php");//导入导航栏  ?>
    12             <h3>浏览我的购物车<h3>
    13             <table border="1" width="600">
    14                 <tr>
    15                     <th>商品id号</th>
    16                     <th>商品名称</th>
    17                     <th>商品图片</th>
    18                     <th>单价</th>
    19                     <th>数量</th>
    20                     <th>小计</th>
    21                     <th>操作</th>
    22                 </tr>
    23                 <?php 
    24                         $sum =0;//定义总金额的变量
    25                     if(isset($_SESSION["shoplist"])){
    26                         foreach($_SESSION["shoplist"] as $v)
    27                         {
    28                             echo "<tr>";
    29                             echo "<td>{$v['id']}</td>";
    30                             echo "<td>{$v['name']}</td>";
    31                             echo "<td><img src='./uploads/s_{$v['pic']}' /></td>";
    32                             echo "<td>{$v['price']}</td>";
    33                             echo "<td align='center'>
    34                                     <button onclick='window.location.href="updateCart.php?id={$v['id']}&num=-1"'>-</button>
    35                                     {$v['num']}
    36                                     <button onclick='window.location.href="updateCart.php?id={$v['id']}&num=+1"'>+</button>
    37                                     </td>";
    38                             echo "<td>".($v["price"]*$v['num'])."</td>";                        
    39                             echo "<td><a href='clearCart.php?id={$v['id']}'>删除</a></td>";
    40                             echo "</tr>";
    41                             $sum+=$v["price"]*$v['num'];//累计金额
    42                         }
    43                     }
    44                 ?>
    45                 <tr>
    46                     <th>总计金额:</th>
    47                     <th colspan ="5" align="right"><?php echo $sum; ?></th>
    48                     <td>&nbsp;</td>
    49                 </tr>
    50             </table>
    51         </center>
    52     </body>
    53 </html>
    myCart.php
     1 <?php
     2     
     3     //删除购物车session中的信息
     4     session_start();//启动会话
     5     
     6     //判断是删除一个商品还是清空购物车
     7     if($_GET['id'])
     8     {
     9         //只删除一种商品
    10         unset($_SESSION['shoplist'][$_GET['id']]);
    11     }else
    12     {
    13         //清空session中的商品
    14         unset($_SESSION["shoplist"]);
    15     }
    16    
    17     
    18     //跳转到浏览购物车界面
    19     header("Location:myCart.php");
    20 ?>
    clearCart.php
     1 <?php
     2     session_start();//启动会话
     3     //修改购物车中的信息
     4     
     5     //获取要修改的信息
     6 
     7     $id = $_GET['id'];
     8     $num = $_GET['num'];
     9     
    10     //修改商品信息
    11     $_SESSION["shoplist"][$id]["num"]+=$num;
    12     
    13     //防止商品数量过小
    14     if($_SESSION["shoplist"][$id]["num"]<1)
    15     {
    16         $_SESSION["shoplist"][$id]["num"]=1;
    17     }
    18     //跳转回我的购物车界面
    19     header("Location:myCart.php");
    20 
    21 ?>
    updateCart.php

    以下为index.php截图:

    myCart.php截图:

    最后送上一句:哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈!!!!

  • 相关阅读:
    C到C++的升级
    设计模式分类
    对模式的十大误解
    MAC帧和IP包的分析
    python之路—从入门到放弃
    选课系统
    Scrapy框架详解
    爬虫系列
    Python从入门到断气
    常用模块
  • 原文地址:https://www.cnblogs.com/guaidaodark/p/4526828.html
Copyright © 2011-2022 走看看