举两个网上订购实例:
1.www.joyo.com (卓越ASP开发) 
2.http://www.dearbook.com.cn/ (第二书店asp.net开发)我的测试结果是这样的:
在用户未登陆时,第二书店是通过cookies记录,当cookies禁止以后,即使本来已经放入购物车的资料也不会读取出来;而卓越在cookies被禁止后,还能进行选购且放入购物车,并能对购买物品的数量进行修改。
我想问的是,卓越是如何在未登陆而cookies被禁止以后,还能与数据库打交道,既然能放入数据库,那么肯定有一个唯一标识符(即临时订单号)。
是不是有可能是 REQUEST的 某些属性的排列组合形成一个唯一的标识符?
具体是如何构成的,大家集思广益。

解决方案 »

  1.   

    卓越网的每个url后面都有个uid参数,这个参数值就是用来标识Session的,所以它的购物车即使不用Cookie也可以工作,因为购物车是保存在服务器端的Session或数据库中,其实用asp.net来实现这个功能更简单,只需要把web.config中的sessionState配置节中cookieless的值改为true就行了,这样SessionID就被添加到url中了,和卓越网的效果几乎是一样的。
      

  2.   

    同意webdiyer(陕北吴旗娃) 的说法
    cookie在服务器端就是sessionid,只要标记了这个sessionid就能知道cookie了
      

  3.   

    同意webdiyer(陕北吴旗娃) 的说法
      

  4.   

    web.config的sessionState配置节中cookieless
    版主正解
      

  5.   

    uid后面的参数是如何取得的,同一台机器(都是用户未登陆,cookies被禁止的情况,下同),uid的参数除了最后2-3位有出入外,其他都是相同的。重启IE后,这个uid也改变,购物车的记录也不存在。纵观卓越的流程,把购物车放入数据库的几率比较大,那么后台如何去判断它是否过期而删除,是使用uid后的参数去匹配?
      

  6.   

    不要使用COOKIE,这样不是很安全的,
    建议使用临时表进行管理,再不行时,用SESSION也可以啊,还一定非要用COOKIE。
      

  7.   

    同意webdiyer(陕北吴旗娃) 
    UP
      

  8.   

    session太毫资源,cookies只放商品某些信息,这样显示比较快。
    临时表是需要的,主要还要考虑,未登陆也能选购商品,并能修改数量。
      

  9.   

    保存在服务器端的Session或数据库中 即使页面关闭也存在值
      

  10.   

    卓越网的每个url后面都有个uid参数,这个参数值就是用来标识Session的,所以它的购物车即使不用Cookie也可以工作,因为购物车是保存在服务器端的Session或数据库中,其实用asp.net来实现这个功能更简单,只需要把web.config中的sessionState配置节中cookieless的值改为true就行了,这样SessionID就被添加到url中了,和卓越网的效果几乎是一样的。
      

  11.   

    不登录也有Session啊,用数据库保存购物车的话,把SessionID作为表的主键,无论用户登录不登录,SessionID都是一样的,除非用户长时间没有反应或者单独打开另一个浏览器窗口进入相同的网页。