前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >解决 php提交表单到当前页面,刷新会重复提交 的问题

解决 php提交表单到当前页面,刷新会重复提交 的问题

作者头像
吃猫的鱼Code
发布2023-02-02 10:14:03
2.1K0
发布2023-02-02 10:14:03
举报
文章被收录于专栏:吃猫的鱼个人博客编程笔记

解决 php提交表单到当前页面,刷新会重复提交

今天在写php程序的时候,发现一个问题,就是post提交到本页的表单数据,刷新后会反复提交。因此向群友请教。最终,得到了解决。如下:

只需要在表单里生成一个token(随机字符串),然后用个input装起来,设置hidden。第一次post处理完数据后把token存入session,接下来每次post判断一下token跟session中的一不一样,一样则说明数据处理过了。

然后给出一段代码 示例

代码语言:javascript
复制
<?php
session_start();
 
//读取服务器端的session_id,如果没有的话赋值为-1
$session_id = empty($_SESSION['session_id']) ? -1 : $_SESSION['session_id'];
 
//读取客户端的post_id,如果没有的话赋值为-2
$post_id = empty($_POST['post_id']) ? -2 : $_POST['post_id'];
 
//判断两个id是否相同,相同则说明已经处理过一次,不同则进行处理
if($session_id == $post_id){
    
    echo "<h1>已经处理过了,不管了</h1>";
    
}else{
    
    //如果页面还没有提交过表单,则显示表单,否则处理post过来的数据
    if($post_id == -2){        
?>
<html>
    <body>
        <form action="index.php" method="post">
            <input type="text" hidden="hidden" name="post_id" id="" value="<?php echo rand(1, 999999); ?>" />
            <input type="text" name="test" id="test" value="" />
            <input type="submit" value=""/>
        </form>
    </body>
</html>    
<?php        
    }else{
        
        echo "<h1>正在处理</h1>";
        
        //处理过后吧post_id存入session,方便下次比较
        $_SESSION['session_id'] = $post_id;
        
    }
 
}
?>

最后,如果你有更好的解决方法,欢迎留言!学习学习~

本文共 274 个字数,平均阅读时长 ≈ 1分钟

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 解决 php提交表单到当前页面,刷新会重复提交
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档