如何通过 PHP 删除在微信内置浏览器中用 Javascript 创建的 cookie?

2017-04-13 21:40:51 +08:00
 haiyang416
一个微信商城类的项目,用户浏览页面的时候可以通过点击加号和减号按钮添加和删除商品。
购物车的数据都是使用 document.cookie 写入 cookies 里面的。
现在需要通过 PHP 在后端清空购物车的数据,完成的代码在 Chrome 和 Firefox 等浏览器都可以正常工作,唯独微信内置浏览器(安卓版)不管怎么设置 cookie 过期时间都没有任何作用, Google 了一下相关的关键词,也没有找到什么有价值的内容。
目前已陷入僵局,请问各位有没有遇到类似的问题,最后是怎么解决的?
5150 次点击
所在节点    PHP
33 条回复
greatonce
2017-04-14 04:00:24 +08:00
@Mitt 我没有说 “有冲突” 啊,只是后一个操作会覆盖之前的操作。

服务端之前设置的 cookie ,在客户端页面上可以被重新设置一个值覆盖掉。
greatonce
2017-04-14 04:04:18 +08:00
@slixurd 保存在客户端肯定不是一个好的方案,就算你的应用只支持一个客户端,也不是好的方法,

就像你说的客户端有很多种,你只在安卓手机的客户端里添加了商品,打开 ios 发现没有这个商品了,

就算支持一个客户端,那天你的商品下架了,而你客户端里还显示这个商品可以购买,而不提示已经下架,

当用户支付的时候发现根本买不了,这种用户体验很不好,这种肯定是放到服务端的,所以不清楚是什么需求,为什么这么做。
Mitt
2017-04-14 06:16:07 +08:00
@greatonce 然而服务器保存只有多端需求才会有 单端本地 cookie 就足够了 至于商品下架 参考淘宝 你存的只是 id 购物车显示的时候服务器返回商品状态就是了
iot
2017-04-14 06:21:41 +08:00
我以前本地存储数据时候是有 localStorage 用 localStorage, 没有才用 cookie

x5 应该支持 localStorage 吧,并且和 cookie 的接口一样 get put remove clear
Mitt
2017-04-14 06:27:33 +08:00
@greatonce 我觉得你自己的观点或者表述有点问题 你刚开始说 "php 怎么也不会处理的了客户端设置的 cookie 。" 我回复了可以通过同名 cookie 达到覆盖和删除的效果 而你后面反驳我的观点 我又补充了"客户端添加 cookie 是有条件的: 添加购物车操作才会添加 cookie" 再到后面又说 "服务端之前设置的 cookie ,在客户端页面上可以被重新设置一个值覆盖掉。" 你的观点有点矛盾 或者说你还是没理解我说的 只是纯属在反驳我的观点 希望能看一下刚开始的问题和回答 不要继续歪下去

------

现在就是在客户端不会立即重新覆盖 cookie 的情况下 服务端返回的 cookie 无法完成覆盖和删除的操作 只发生在微信内置浏览器里 所以微信内置浏览器有 BUG 就成了可能性之一 LZ 说这个是以前同事写的 所以现在就是想以“最简单”的方式去解决这个问题 所以提那么多后端解决方案明显不符合简单的概念啊
Mitt
2017-04-14 07:01:53 +08:00
@haiyang416 可以尝试不要将值设为空 而是设为一个其他值 看看本地有没有改变 cookie 值
greatonce
2017-04-14 07:49:30 +08:00
@Mitt

我之前说的

“你顺序弄错了, php 怎么也不会处理的了客户端设置的 cookie 。”

我说这句的时候是有前置条件,就是 “顺序弄错了”

header 返回的 cookie 客户端能不能改掉?

而你只看后面那句 “ php 怎么也不会处理客户端设置的 cookie ”
shew2356
2017-04-14 10:26:44 +08:00
域没用对吧!
Mitt
2017-04-14 10:42:14 +08:00
@greatonce 在我这边看来 我认为你第一句 “你顺序弄错了” 已经否定了 “添加购物车才会添加 cookie ” 这个前置条件 所以 话题终止 吃了文化的亏 (逃
pubby
2017-04-14 10:45:45 +08:00
是不是微信的问题,你在页面上同样用 js 删 cookie ,在微信里试试就知道啊
reus
2017-04-14 13:35:56 +08:00
不放服务器端,怎么做统计?怎么根据浏览记录、加购物车记录做推荐?
iot
2017-04-16 01:57:25 +08:00
haiyang416
2017-04-16 06:08:26 +08:00
@Mitt @iot 问题暂时解决了,最后还是把 cookie 的操作放到前端去了。先把页面应该有的商品的编号放到一个 js 数组里,在页面加载完毕之后直接删除所有未在编号数组里的商品。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/354709

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX