我想做个活动页面,页面有个倒计时展示,开始时间和结束时间从后台服务器获取。然后情况可能是这样的:
1:如果当前时间距离活动开始时间(活动还没有开始)的情况下。显示活动还没有开始距离活动开始还有多少时间。
2:如果设置的开始时间就是当前时间,那么倒计时开始展示,一直到结束时间,然后显示活动已经结束。
情况是这样,想请教下具体怎么实现的,还有就是当前时间应该是服务器时间,客户端的时间有可能本地修改了之后就不对了
Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
这种事还是交给后端吧,既然都说了用服务器时间当然就直接在后端算好还剩多久时间&是否开始活动之类信息然后返回输出到前端页面,如果要实时每秒倒计时的话可以前端拿到时间再每秒减。
谢邀。
这种是一个比较常见的需求了吧,常见于电商,下面以秒杀为例子。
基本思路是,加载一个页面,ajax请求或者填页面模版,获取到开始和结束时间,后面以ajax请求为例子。
然后用js读取当前系统的时间,再读取响应头(ajax请求)中的系统时间,两相对比,设定一个差值,一般情况两者应该相差不大,差别顶多是毫秒级的,所以,对时到分钟数,如果两端不一致就重刷,或者提醒系统时间异常(注意浏览器时间的时区和服务器是否一样,服务器大都是格林威治时间)。
然后,对比开始和结束时间,出不同的按钮。
关键点来了,可能也是题主担心的地方,就是系统时间不准确或者被别有心机的用户篡改,这个时候该怎么处理或者容错。
这个时候应该按照正常的js逻辑显示相应的按钮,比如秒杀按钮,用户点击后,依然发送ajax请求,因为前端永远都保证不了数据的准确性。后端收到请求,先检查是否在活动时间内,再进下一个判断支,不然直接返回报错,刷新页面或者提醒时间。
描述的比较冗杂,很大一坨逻辑,就不想写demo了,思路清晰就好。
谢邀。看到题主的描述以及其它答案基本都解决问题了,本着邀请还是说一下自己的观点。
整理一下思路,无论是服务端获取时间还是客户端获取时间,在活动前后防止暴露请求数据或者链接。
前台js执行倒计时操作,到时后请求指定接口返回数据或者重定向页面,看实际方案。但有一点,这次请求服务端验证当前请求的服务端时间与活动时间是否一致再执行其它逻辑。