服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - PHP教程 - cookie的优化与购物车实例

cookie的优化与购物车实例

2021-06-20 16:30zhenghongxin PHP教程

下面小编就为大家带来一篇cookie的优化与购物车实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

cookie优化

1.1 一般而言,我们设置cookie是在php中设置

例如:

?
1
2
<?php
setcookie('testkey1','hello world',0,'/'); //# 当 expires = 0 时,此cookie随浏览器关闭而失效,?>

而在验证的时候,我们通常是:

?
1
2
3
4
5
6
<?php
if(isset($_cookie['testkey2']))
  echo "the new cookie is : testkey2 = ".$_cookie['testkey2'];
else
  echo "the new cookie is setting failed";
?>

都是在服务端进行。优化:

1.2 在前端页面进行验证cookie

cookie保存在客户端,那么可以在客户端那边进行验证,根据上面的代码,前端获取代码为:

?
1
2
3
4
5
6
7
8
<script language="javascript" type="text/javascript">
var key1 = document.cookie.match(new regexp("(^| )testkey1=([^;]*)(;|$)")); //正则找出testkey的cookie值
try{
  if(key1[2] != '')
    document.write("testkey1 = "+key1[2]);
}catch(e){
  document.write("testkey1 = null");
};

那么我们能否在前端设置cookie 呢 ?

1.3 在前端页面设置cookie【购物车原理】

?
1
2
3
4
5
6
7
function setcookie(){
  var expire = new date();
  expire.settime(expire.gettime() + 86400000);
  document.cookie = "testkey2=this the second cookie;expires=" + expire.togmtstring() + ";path=/";
  alert('完成设置');
  location.href='test2.php'
}

这样子能够减轻服务器的压力

我们要注意,这样子是有限制的,浏览器本身能够存储的数据有限:

cookie的优化与购物车实例

上述是从网上找来,仅供参考,如果我们要存储更多的数据。可以使用:

1.4 local storage

在谷歌浏览器下,f12可以看到:

cookie的优化与购物车实例

这个可以看成是浏览器的小型数据库,可以存储更多的数据。

示例【购物车小试】:

设置页面:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
<!doctype html public "-//w3c//dtd xhtml 1.0 transitional//en" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>demo2</title>
 
<script language="javascript" type="text/javascript">
var cartlsname = 'abc';
 
//gdsinfo=[id,name,avatar,price,number]
function addtols(gdsinfo){
  if(!window.localstorage){
    alert('您的浏览器不支持local storage!'); //如果不支持,可以采用第1.3中的方法
    return false;
  }
    
  try{
    if(gdsinfo.length != 5){
      alert('参数错误!');
      return false;
    }
  }catch(e){alert('参数错误!');return false}
  
  var gname=gdsinfo[1];
  gdsinfo[1]=encodeuri(gdsinfo[1]);
  gdsinfo[4]=parseint(gdsinfo[4]);
  if(isnan(gdsinfo[4])) gdsinfo[4] = 1;
  
  //由json字符串转换为json对象
  var cartls = json.parse(localstorage.getitem(cartlsname));
  
  if(cartls == null){
    cartls=[gdsinfo];
  }else{
    var existincart=false;
    for(var i=0;i<cartls.length;i++){
      if(cartls[i][0] == gdsinfo[0]){
        cartls[i][4] += gdsinfo[4];
        existincart = true;
        break;
      }
    }
    
    if(!existincart)
      cartls.splice(0,0,gdsinfo);
      
  }
  
  //将json对象转化为json字符,并存入localstorage
  localstorage.setitem(cartlsname,json.stringify(cartls));
  return true;
}
 
</script>
 
</head>
 
<body>
<a href="javascript:addtols([3,'华为mate8','ico.jpg',3888.00,2]);" rel="external nofollow" >存储一</a><br />
</body>
</html>

效果:

cookie的优化与购物车实例

有设置,就有查看:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
<!doctype html public "-//w3c//dtd xhtml 1.0 transitional//en" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>show localstorage info</title>
 
<script language="javascript" type="text/javascript">
 
if(!window.localstorage){
  alert('您的浏览器不支持local storage!');
}
  
var cartlsname = 'abc';
var cartstr = localstorage.getitem(cartlsname)
//gdsinfo=[id,name,avatar,price,number]
 
function showstr(){
  str = decodeuricomponent(cartstr);
  alert(str);
  document.getelementbyid('show').innerhtml=str;
}
 
function showinfo(){
 
  var cartls = json.parse(cartstr);
  
  if(cartls == null){
    alert(null);
  }else{
    var str = '';
    for(var i=0;i<cartls.length;i++){
      str += "id:"+cartls[i][0] + "\n";
      str += "name:"+cartls[i][1] + "\n";
      str += "logo:"+cartls[i][2] + "\n";
      str += "price:"+cartls[i][3] + "\n";
      str += "num:"+cartls[i][4] + "\n";
    }
    str = decodeuricomponent(str);
    alert(str);
    document.getelementbyid('show').innerhtml=str.replace(/\n/g,"<br />");
  }
  
}
 
function clearls(){
  localstorage.clear();
}
 
</script>
 
</head>
 
<body>
<a href="javascript:showstr();" rel="external nofollow" >以字符串形式显示</a><br />
<a href="javascript:showinfo();" rel="external nofollow" >显示详细</a><br />
<a href="javascript:clearls();" rel="external nofollow" >清空</a><br />
<a href="./" rel="external nofollow" >返回设置页面</a><br />
 
<div id="show"></div>
</body>
</html>

效果:

以字符串形式显示

cookie的优化与购物车实例

显示详细

cookie的优化与购物车实例

以上这篇cookie的优化与购物车实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持服务器之家。

原文链接:http://www.cnblogs.com/zhenghongxin/archive/2017/08/20/7401545.html

延伸 · 阅读

精彩推荐