`

php防止重复提交表单

    博客分类:
  • PHP
 
阅读更多

解决方案一:引入cookie机制来解决

提交页面代码如下a.php代码如下:

<form id="form1" name="form1" method="post" action="t2.php">

    <p>说明

        <input type="text" name="titile" />

</p>

    <p>

        <input type="submit" name="Submit" value="提交" />

</p>

</form>

<?php

setcookie("onlypost", 't');         //设置cookie,可以带上时间值。像有些论坛防止灌水就可以将你的一些基本信息存放到里面。

?>
 
处理页面b.php代码如下:

<?php

if($_COOKIE['onlypost'] == 't'){

    print_r($_COOKIE);

    //处理提交的内容           如果验证成功则处理

    print "ok";

    setcookie("onlypost", 'f'); //改变cooike值删除也可以了

}

?>

 如上处理的缺点:如果客户端禁止了Cookie,该方法将不起任何作用,这点请注意。

解决方案二:使用session(这个与JSP处理方法是一样的)

利用PHP的Session功能,也能避免重复提交表单。Session保存在服务器端,在PHP运行过程中可以改变Session变量,下次访问这个变量时,得到的是新赋的值,所以,可以用一个Session变量记录表单提交的值,如果不匹配,则认为是用户在重复提交。

A页面的代码:

<?php

session_start();                //根据当前SESSION生成随机数

$code = mt_rand(0,1000000);

$_SESSION['code'] = $code;      //将此随机数暂存入到session

?>

<form id="form1" name="form1" method="post" action="t2.php">

    <p>说明

        <input type="text" name="titile" />

        <input type="hidden" name="originator" value="<?php echo $code;?>">

</p>

    <p>

        <input type="submit" name="Submit" value="提交" />

</p>

</form>

B页面:

<?php

session_start();

if(isset($_POST['originator'])) {

    if($_POST['originator'] == $_SESSION['code']){

        echo "ok";

        unset($_SESSION["code"]);               //将其清除掉此时再按F5则无效

    }else{

    echo "请不要刷新本页面或重复提交表单";

    }

}?>
 

解决方案三:在服务器端做重定向处理

if (isset($_POST['action']) && $_POST['action'] == 'submitted') {
// 处理数据,如插入数据后,立即转向到其他页面
header('location:submits_success.php');     //效果与JSP里面的sendRedirect类似
}

 

分享到:
评论

相关推荐

    ThinkPHP防止重复提交表单的方法实例分析

    此方法可以有效防止用户在页面跳转前重复点击提交按钮,但用户仍有可能通过浏览器的刷新功能来重复提交表单。 3. Token令牌法:这是一种服务器端解决方案,通过在表单中添加一个隐藏的Token字段,在提交数据时验证...

    PHP实现防止表单重复提交功能【基于token验证】

    &lt;meta name="description" content="PHP防止重复提交表单" /&gt; &lt;!-- 隐藏的token字段 --&gt; &lt;input type="hidden" name="token" value="&lt;?php echo $_SESSION['token'];?&gt;"&gt; 我们"&gt; 提交" /&gt; &lt;?php ...

    修改禁止多次重复提交

    在IT行业中,尤其是在Web开发领域,防止用户多次重复提交数据是一项重要的任务,这可以避免数据库出现冗余数据,保持系统稳定。"修改禁止多次重复提交"这个话题涉及到前端交互、后端处理以及数据库操作等多个层面。...

    自定义标签防止表单重复提交

    本文将深入探讨如何通过自定义标签来防止表单的重复提交,以确保数据的一致性和系统的稳定性。 首先,理解表单重复提交的问题。当用户点击提交按钮时,如果网络连接不稳定或者用户快速多次点击,可能会导致同一份...

    防止表单重复提交的方法(简单的token方式)

    防止表单重复提交的方法(简单的token方式),内附实现代码及实现思路。

    thinkphp3.2 防止表单重复提交

    在Web开发中,防止表单重复提交是一个重要的问题,它能确保用户操作的唯一性和数据的一致性。ThinkPHP 3.2 是一个基于MVC模式的PHP开发框架,提供了丰富的功能来帮助开发者构建安全、高效的应用。在这个场景中,我们...

    解析php防止form重复提交的方法

    这种方法的优点是简单易行且能够有效防止重复提交;但缺点是它依赖于客户端的时间设置,如果客户端的系统时间被恶意用户修改,则可能绕过这种防护措施。因此,更为安全的做法是仅在服务器端生成时间戳,并在表单中...

    PHP防止表单重复提交的几种常用方法汇总

    最后,使用数据库的唯一索引约束来防止重复提交是一种更加严格的措施。通过在数据库表中的关键字段上建立唯一索引,系统能够自动阻止重复数据的插入。虽然这种方法在数据库层面保证了数据的唯一性,但并不能完全代替...

    php+Ajax远程加载防止重复提交

    当我们结合PHP和Ajax技术来实现远程加载并防止重复提交时,我们可以创建一个高效且用户体验良好的系统。下面将详细介绍这个主题。 首先,PHP是服务器端的一种脚本语言,常用于构建动态网页。Ajax(Asynchronous ...

    php防止用户重复提交表单

    在用户操作中,重复提交表单可能是因为用户无意中多次点击了提交按钮,或是攻击者故意尝试多次提交表单以达到某种恶意目的,比如耗尽服务端资源。 对于防止用户重复提交表单,可以采取多种方法: 1. 前端限制。...

    php中如何防止表单的重复提交

    每种方法都有其适用场景和局限性,实际应用中通常结合使用多种方法,以提高防止重复提交的可靠性。选择哪种方法取决于具体项目的需求,如安全性、用户体验等因素。在设计系统时,应充分考虑这些因素,以确保系统的...

    php防止form重复提交的方法

    注意,这种方法依赖于客户端的Cookie支持,如果用户禁用了Cookie,这种方法将无法有效防止重复提交。 3. **利用Session**: Session存储在服务器端,可以用来记录表单的提交状态。创建一个随机数作为Session变量...

    php防止form重复提交

    总结来说,防止 PHP 表单重复提交可以从多个角度实现,包括客户端的 JavaScript 验证、Cookie 和 Session 管理、数据库唯一约束、Token 检验、HTTP 重定向、数据库事务以及前端的防抖和节流技术。选择哪种方法取决于...

    解决php表单重复提交实现方法

    在Web开发中,表单重复提交...同时,需要注意的是,防止重复提交的机制不能完全替代前端的防护措施,例如使用JavaScript禁用提交按钮,以提供额外的安全性。结合前后端的双重保护,可以更好地避免表单重复提交的问题。

    PHP使用token防止表单重复提交的方法

    1. 为了安全起见,除了使用 token 防止重复提交,还可以结合其他验证机制,如 CSRF(跨站请求伪造)防护。 2. 生成的 token 应该是一次性的,即每次提交后都需要更新 session 中的 token 值,防止用户回退页面后再次...

    php通过记录IP来防止表单重复提交方法分析

    echo '请不要重复提交表单或刷新页面'; } ``` 这种方法的优势在于实现简单,只需记录和比较IP地址即可。然而,它也存在明显的局限性。首先,IP地址可能不是唯一的,尤其是在使用代理服务器或者动态IP分配的情况下...

    php 防止表单重复提交两种实现方法

    在某些情况下,前端解决方案可能不足以防止重复提交,特别是当使用了某些插件或库,如jQuery Validate Engine,使得无法在前端设置状态。这时,可以依赖服务器端(PHP)进行控制。 PHP可以通过检查session变量来...

Global site tag (gtag.js) - Google Analytics