Heim >Backend-Entwicklung >PHP-Tutorial >手机上面上京东网站,在未登录的状态下,那么购物车信息如何存放??

手机上面上京东网站,在未登录的状态下,那么购物车信息如何存放??

WBOY
WBOYOriginal
2016-06-06 20:45:433579Durchsuche

手机上面上京东网站,在未登录的状态下,那么购物车信息如何存放??

回复内容:

手机上面上京东网站,在未登录的状态下,那么购物车信息如何存放??

这个问题,和手机无关,和京东无关。只和HTTP标准有关:就是标准如何约定标识客户。

懂的看了@公子 的自然一目了然,简单亲切。看了公子的还不懂,不妨看看我的啰嗦:)。

我猜,题主真正需要理解的是,网站如何标识客户。如果是这样,那么,京东网站就不是关键参数,问题可以更加一般化为网站如何区分两个客户,为他们建立不同的购物车内容。

用户A,在北京使用chrome访问京东,放到购物车内一个剃须刀。用户B,在拐磨子登陆,放到购物车内一把锄头。因为用户还没有登录,故而网站并不知道他们是谁,要点是,用户A访问时,购物车内是他选购的,用户B也是。不要混在一起。在此场景下,只要不弄混,虽然我不知道用户姓甚名谁,都无所谓,互联网上,有id就行。

这个问题的一句话答案就是cookie(@公子说的:),第一个浏览器netscape 1.0就考虑到这个问题,并且加入到http规范里面。

过程是这样的:

  1. 服务器设置一个cookie。浏览器会把这个cookie记录到当前访问网站的域名下,如cart.jd.com
<code class="lang-php"><?php $value = "my cookie value";
setcookie("TestCookie",$value);
?>
</code>
  1. 下一个请求过来,浏览器会就会发现这个cart.jd.com 访问过,并且在这个域名的名下,记录了有cookie,就会按照http规范,发送这个cookie过来。而服务器可以检索这个 cookie :
<code class="lang-php"><?php // 输出个别的 cookie
echo $_COOKIE["TestCookie"];
echo "<br />";
?>
</code>
  1. 这里面,TestCookie 是一个key,"my cookie value"是值,这个值,就是一个字符串,可以很长,长到甚至把整个购物车的内容做个编码,把他放进去。

Session 也是常见的web编程概念,不过不是http标准的一部分。目的吗,是为了优化,有了它,购物车名单再长,对Session而言,客户端写的cookie也只是一个id,通过这个id,可以在服务器端的Session内获得全须全尾的购物车内容。

防喷补丁:
我最近刚刚读了一遍http 权威指南,自认为搞懂了http协议。看到这个问题,虚荣心来了,我是来显摆的:)

用COOKIES啊!这都不知道?看图就明白了,不过具体COOKIS哪个对应什么东西我没有去研究过。

手机上面上京东网站,在未登录的状态下,那么购物车信息如何存放??

购物车信息与是否登录没有任何关系啊,你看很多网站不登陆还是可以购物的。
购物车信息一般不采用cookies,cookies是存放在浏览器端的数据,存在被篡改的可能性,而购物车数据牵扯到一致性问题,得存放到服务器端。
服务器端存放数据用session回话。

也就是说,客户端的目标是保持让服务器端识别出唯一的访客,服务器端存放敏感的购物车内数据。

在京东和淘宝上,我们发现我们添加到购物车的数据,换一台电脑重新登录账号,还在购物车内,也就是说这些数据肯定是服务器端持久化了,保存在数据库中。

——————
手机上的京东和PC上的京东,没有什么区别,还是HTTP的东西。

不知道我的认识对你有无帮助

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn