我有一个页面,任何用户在付款后都可以直接访问该页面,该页面中有发送确认电子邮件和某些其他任务的PHP代码。因此,我不希望用户能够刷新该页面,以便再次运行脚本,也不希望他们能够更改url中的参数,例如:www.idk.com?name=eij&年龄=39我以前有这个工作,但那是在只有2页的时候,我可以使用
if ( !isset( $_SESSION["origURL"] ) )
$_SESSION["origURL"] = $_SERVER["HTTP_REFERER"];
并使用if用户来自。。。然后运行脚本,如果他们刷新了,它就不会运行,也无法更改url。问题是,我做了一个第三个页面,url不再显示了,这个代码找到了noghttp-referer。
我真的需要这个来工作,我希望任何人都能帮助我
防止在付款后两次加载同一页面的一种方法是:
- 您的客户取消付款并被重定向到您的页面
- 在这一点上,你应该有一些付款数据,如:付款id,订单id等
- 存储在已付款的数据库中
- 如果用户试图用相同的数据再次访问同一页面(例如,在重新发送POST数据后),您必须检查该付款是否以前处理过,如果已经处理过,则将他重定向到另一个页面
为此,您需要一个唯一的标识符,并验证支付是否合法,这取决于您的支付提供商。
听起来像是一个设计问题。
快速解决方案:
使用POST
而不是GET
可以防止用户更改参数,并在更改参数后立即将其重定向到不带POST
参数的新页面或相同页面。
你可以查看校验和,这样你就可以验证来自你的网站的请求。
它和一样简单
$checksum = md5(json_encode($array));
只要确保数组中有一些秘密元素。