防止页面刷新

php中文网
发布: 2016-06-23 13:45:43
原创
904人浏览过

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

牛面
牛面

牛面AI面试,大厂级面试特训平台

牛面 147
查看详情 牛面

回复讨论(解决方案)

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

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


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

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

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

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

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

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

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




当点击之后就变为了灰色,用户不能再次点击进行提交
最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号