扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
可以采用ajax配合使用php可以防止刷新页面重复提交
十载的赤壁网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。网络营销推广的优势是能够根据用户设备显示端的尺寸不同,自动调整赤壁建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。成都创新互联公司从事“赤壁网站设计”,“赤壁网站推广”以来,每个客户项目都认真落实执行。
也可以使用框架同样可以防止
你直接访问数据处理页面的时候,$_POST['title'],$_POST['num] 应该是空值,所以你增加一个判断,必须有具体的值,再进行sql操作。
这个解决的办法是在 x.php 中加入跳转代码,使页面跳转就好了,例如,html-x.php-数据处理后跳转到成功页面-success.html
每次进入提交的页面,给一个session,为了避免重复,session的key可以是随机的。
在表单填写页面
?php
session_start(); // 启用session
$time = time();
$key = 'sess_' . $time; // 根据时间生成一个随机的session key
$_SESSION[$key] = $time; // 设置session的值
?
!--{通过隐藏表单将 session 的 key传递到服务端处理}--
input type="hidden" name="session_key" value="?php echo $time;?" /
处理页面
?php
session_start(); // 启用session
$key = $_POST['session_key'];
if(!$key || $_SESSION[$key] != substr($key, 5)){
// 如果没有传 session_key 参数
// 或者 session_key 参数值截断 sess_后的数字 与 session参数值不匹配
unset($_SESSION[$key]); // 删除 session 值
// 然后考虑是否要提示错误,或者转入另一个页面
exit(); // 终止页面代码执行
}
// 下面进行数据写操作
// 数据操作完成后,删除session
unset($_SESSION[$key]);
// 后续操作
?
$########################
一个页面也是一样的,我给你的只是一个思维,
具体如何实现,你要根据自己的实际情况去处理
很多东西都不是通用的
另外,不管多少个页面,必然包含两个部分,一部分是表单填写,一部分是数据处理,这个跟多少个页面无关~~就看你是否能够理解这段代码的意义,如果不理解的话,嵌套进去也没啥用,能够理解的话,或许你能够找出更适合自己的解决方案
给你个例子,是用随机数与session来解决的,请根据你的实际情况进行修改
?php
session_start();
//判断是否刷新*********************
if(isset($_POST['mark'])) {
if($_POST['mark'] == $_SESSION['code']) {
// 处理该表单的语句。。。
}
else {
// 处理刷新时的语句。。。
}
}
//END******************************
$code = mt_rand(0,1000000);
$_SESSION['code'] = $code;
?
form name=form1 method="post"
input type="text" name="text" /
input type="submit" value="submit" /
input type="hidden" name="mark" value="?php echo $code;?"
/form
这个问题首先是你自己设计导致的,想要避免也得改变你的设计,比如一种方式:可以将“直接在浏览器里输入success.php”设计为不能直接访问,以下是其中的两个实现方式。
1.将success.php放到一个不能直接访问的web路径下,在apache中.htacess可以控制访问。
2.控制可以自己来实现,设定一个参数,如果没有该参数则表示不能访问。
不知道是不是你想要的。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流