解决方案一:引入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类似
}
分享到:
相关推荐
此方法可以有效防止用户在页面跳转前重复点击提交按钮,但用户仍有可能通过浏览器的刷新功能来重复提交表单。 3. Token令牌法:这是一种服务器端解决方案,通过在表单中添加一个隐藏的Token字段,在提交数据时验证...
<meta name="description" content="PHP防止重复提交表单" /> <!-- 隐藏的token字段 --> <input type="hidden" name="token" value="<?php echo $_SESSION['token'];?>"> 我们"> 提交" /> <?php ...
在IT行业中,尤其是在Web开发领域,防止用户多次重复提交数据是一项重要的任务,这可以避免数据库出现冗余数据,保持系统稳定。"修改禁止多次重复提交"这个话题涉及到前端交互、后端处理以及数据库操作等多个层面。...
本文将深入探讨如何通过自定义标签来防止表单的重复提交,以确保数据的一致性和系统的稳定性。 首先,理解表单重复提交的问题。当用户点击提交按钮时,如果网络连接不稳定或者用户快速多次点击,可能会导致同一份...
防止表单重复提交的方法(简单的token方式),内附实现代码及实现思路。
在Web开发中,防止表单重复提交是一个重要的问题,它能确保用户操作的唯一性和数据的一致性。ThinkPHP 3.2 是一个基于MVC模式的PHP开发框架,提供了丰富的功能来帮助开发者构建安全、高效的应用。在这个场景中,我们...
这种方法的优点是简单易行且能够有效防止重复提交;但缺点是它依赖于客户端的时间设置,如果客户端的系统时间被恶意用户修改,则可能绕过这种防护措施。因此,更为安全的做法是仅在服务器端生成时间戳,并在表单中...
最后,使用数据库的唯一索引约束来防止重复提交是一种更加严格的措施。通过在数据库表中的关键字段上建立唯一索引,系统能够自动阻止重复数据的插入。虽然这种方法在数据库层面保证了数据的唯一性,但并不能完全代替...
当我们结合PHP和Ajax技术来实现远程加载并防止重复提交时,我们可以创建一个高效且用户体验良好的系统。下面将详细介绍这个主题。 首先,PHP是服务器端的一种脚本语言,常用于构建动态网页。Ajax(Asynchronous ...
在用户操作中,重复提交表单可能是因为用户无意中多次点击了提交按钮,或是攻击者故意尝试多次提交表单以达到某种恶意目的,比如耗尽服务端资源。 对于防止用户重复提交表单,可以采取多种方法: 1. 前端限制。...
每种方法都有其适用场景和局限性,实际应用中通常结合使用多种方法,以提高防止重复提交的可靠性。选择哪种方法取决于具体项目的需求,如安全性、用户体验等因素。在设计系统时,应充分考虑这些因素,以确保系统的...
注意,这种方法依赖于客户端的Cookie支持,如果用户禁用了Cookie,这种方法将无法有效防止重复提交。 3. **利用Session**: Session存储在服务器端,可以用来记录表单的提交状态。创建一个随机数作为Session变量...
总结来说,防止 PHP 表单重复提交可以从多个角度实现,包括客户端的 JavaScript 验证、Cookie 和 Session 管理、数据库唯一约束、Token 检验、HTTP 重定向、数据库事务以及前端的防抖和节流技术。选择哪种方法取决于...
在Web开发中,表单重复提交...同时,需要注意的是,防止重复提交的机制不能完全替代前端的防护措施,例如使用JavaScript禁用提交按钮,以提供额外的安全性。结合前后端的双重保护,可以更好地避免表单重复提交的问题。
1. 为了安全起见,除了使用 token 防止重复提交,还可以结合其他验证机制,如 CSRF(跨站请求伪造)防护。 2. 生成的 token 应该是一次性的,即每次提交后都需要更新 session 中的 token 值,防止用户回退页面后再次...
echo '请不要重复提交表单或刷新页面'; } ``` 这种方法的优势在于实现简单,只需记录和比较IP地址即可。然而,它也存在明显的局限性。首先,IP地址可能不是唯一的,尤其是在使用代理服务器或者动态IP分配的情况下...
在某些情况下,前端解决方案可能不足以防止重复提交,特别是当使用了某些插件或库,如jQuery Validate Engine,使得无法在前端设置状态。这时,可以依赖服务器端(PHP)进行控制。 PHP可以通过检查session变量来...