用spAccess();做了购物车……

#1 phpha

用spAccess();做了购物车……,所有功能做完了才想起一个问题……那就是保存的缓存文件的文件名怎么解决……
以前用的是SESSION,现在用spAccess(); ,结果所有的用户的购物车信息都同步了……
说白了就是都对同一个缓存文件操作……
有没有好的解决办法?
难道为每一个用户新建一个缓存文件?
再或者是在缓存文件中保存用户的信息,比如SESSION ID ?
不然的话只能继续用SESSION了?

该贴已经同步到 phpha的微博

2011-07-26 13:45:18

#2 jake

为每一个用户新建一个缓存文件?就是这样吧。当然,用session也行。

2011-07-26 14:44:53

#3 phpha

额……关键是,如果用户登陆了,那么就以他的用户名保存一个缓存文件吧……
如果没有登录,直接使用购物车,那么,就有点麻烦了……
要建好多文件额~
唉,我滴思路不对~

2011-07-26 15:17:10

#4 jake

可以用COOKIE,大部分购物车都是用COOKIE来做的。无论登录不登录,COOKIE都可以读取的。

2011-07-26 16:17:51

#5 phpha

回复 4 jake


    嗯,是的。呵呵,只是接触SP后,想试试缓存功能,呵呵。没想到考虑的不太周到~
还有一点就是对于spAccess();在规定的时间自动删除,我很好奇,难道还有定时器?
待看了框架源码发现,原来是待第二次读取时检查,对比,超时则删除~呵呵,思路豁然开朗了……

2011-07-26 18:46:52

#6 虞飞

可以用COOKIE,大部分购物车都是用COOKIE来做的。无论登录不登录,COOKIE都可以读取的。 ...
jake 发表于 2011-7-26 16:17
cookie是留在客户端电脑上的,如果遇上恶意用户,那不是可以通过修改cookie来进行恶意活动么?

2011-07-27 11:27:08

#7 jake

cookie是留在客户端电脑上的,如果遇上恶意用户,那不是可以通过修改cookie来进行恶意活动么? ...
虞飞 发表于 2011-7-27 11:27
这个问题,可以好好讲述一下购物车的设计:
一般的购物车需求是这样的:

1. 登录或者不登录,都可以将货物记录到购物车(参见淘宝),而且购物车会相对长期记录。
2. 登录后,在购物车里面直接可以购买;
3. 还没登录,在购物车里面按下购买时,要先登录,后购买。

为什么要用COOKIE?

1. 因为SESSION是登录后才知道是属于哪个用户的,而且SESSION在关闭浏览器的时候会消失,不合需求(客人一般希望挑了下次买,或者商家也希望如此)。而COOKIE无论登录不登录都可以使用。
2. 一般用户购买东西的电脑都是比较固定的,所以用COOKIE记录就可以了。
3. 用缓存程序做购物车,也有同样的问题——如果用户未登录,是无法给将获取缓存到特定用户的购物车的。
4. 另外还有个优点,就是可以用JS操作COOKIE,更方便入车。

安全性怎么保证?

1. COOKIE是存客户电脑,用户可以修改COOKIE值。也就是可以修改“某一台电脑上面的COOKIE”,比如说修改A电脑的购物车,换了几件货物。
2. 上面说了,在购买前,用户是需要登录的(没有登录可以看到购物车里面的东西,但是不能买)。那么,在A电脑,用户要购买的时候,他必须登录,在登录前或者登录后、在确定订单的时候,他会看一下购物车是否自己需要的东西(正常人都会看一下,除非过分有钱了),如果发现被修改,那么他会放弃购买(过分有钱除外)。
3. 另外,很少会有人把自己购物的电脑,给别人随意修改COOKIE的——当然被入侵电脑那是另外一回事,入侵的问题,那甚至连网银也避免不了问题。

综上,COOKIE的安全性在于只能修改某电脑的购物车,可修改的范围不广,不会影响到用户的购买过程。

2011-07-27 12:25:49

#8 bxhcsz

新手,受教。

2011-09-19 14:05:19

#9 kai551272

最近在做购物车的功能,看到J老大的解答真是受益匪浅~

2012-04-01 10:59:14