我正在研究一个投票系统,该系统通过GET请求来了解必须更新哪个帖子ID。但是当投票完成后,我的网址中仍然存在获取请求(/?vote_up = 123),因此如果用户刷新其页面,则将再次设置投票。这不应该发生。
投票结束后,我现在已经这样做了,但这不起作用。
$_SERVER['REQUEST_URI'] = strtok( $_SERVER['REQUEST_URI'], '?' );
任何人都可以帮我吗?
答案 0 :(得分:2)
首先,投票行动不应该依赖于GET请求,根据定义,该请求应该检索信息而不是设置信息。
也就是说,您应该使用PUT请求(或POST请求来简化操作),并且您的投票不应直接访问后端URL,因为即使它是POST请求,它也会重新触发,如果用户重新加载。
我建议您在前端使用ajax投票系统,使用不影响当前用户位置网址的异步请求将数据POST或PUT到您的PHP后端。
与此同时,一个紧急解决方案是使用POST请求投票,然后登陆一个URL,将用户重定向到他们来自的任何地方(假设您可以从多个页面投票)。在该过程的最后,用户的位置不是监听POST的位置,而是他被重定向到的位置,因此刷新或重新加载对他来说无害。
答案 1 :(得分:0)
$new_url = preg_replace('/&?return=[^&]*/', '', $old_url);
答案 2 :(得分:0)
我认为,为此,您必须在设置投票后将用户重定向到同一页面。重定向网址将由解析网址功能设置。