欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

防止页面刷新

程序员文章站 2024-02-01 14:43:10
...
我现在遇到了一个问题
开发一个电商平台与第三方支付相联接,付款完以后跳转到:付款成功的页面。。然后数据库里面的值就会增加。现在问题是我要是不停的刷新这个付款成功的页面。。我的数据库里面的值一直会不停的增加。有没有简单想法可以实现下,有人说你可以在设计一张表,一个已经付款一个未付款,付款后在更新这个表,后面的数据库就不执行了。这样肯定不行。。工作量太大了。
我想到一个可以通过$_SERVER['HTTP_REFERER']判断他的来源,如果是本网站则不执行数据库语句,如果不是则执行。
可这样效果不是很好。
有人也说用COOKIE可以实现,请问这是怎么实现的?因为他是从第三方网站跳转过来的参数值我只能在付款成功的页面存储。然后再拿出来判断?岂不是前后值都一样?数据库照样会执行?


回复讨论(解决方案)

就是提交的?候加????,提交后重置???。那?就不能重?提交了。

就是提交的?候加????,提交后重置???。那?就不能重?提交了。


验证码根本就实现不了啊。。因为你提交后他是转到第三方支付平台收,他不认你验证码的参数。就好比你到京东买东西,你交完钱后还让顾客输入验证码才能显示支付成功?这不开玩笑嘛。

最好把记录写入表里面,重复提交,做一个判断,或者通过session记录标示,当标示更改,说明已经提交完成。

付款成功页面你嵌入逻辑操作干啥?你可以将逻辑操作写到支付接口数据返回同步文件做操作就好了。

每个订单不是有订单号么,且是唯一的
一个字段存放付款状态(如status),未付款时为0,付款成功置为1,若是再次刷新,且查询该订单状态为1,就提示他已付款成功,不做之后的数据插入

不知道你的框架是如何的。

如果有业务逻辑层的话,先执行付款的业务逻辑,执行完之后不要直接显示结果画面,而是执行一个显示用的业务逻辑。在那个逻辑里显示结果画面。这样刷新的时候就只会刷新显示用的业务逻辑。不会重复提交。

还有种比较保险的办法。在提交的页面中,生成一个唯一码,放在session中,同时也放在画面的隐藏控件中,在提交时,判断session中和隐藏控件中的唯一码是否一致,是的情况下执行提交操作,操作完成后删除session中的唯一码。这样刷新的时候因为session中已经被删除,比对不一致,就可以提示不要重复刷新页面了。




当点击之后就变为了灰色,用户不能再次点击进行提交
相关标签: 防止页面刷新