您的位置:首页 > 编程语言 > PHP开发

thinkphp 解决页面刷新表单重复提交的问题

2017-01-18 14:05 931 查看
控制器中

session_start();
$code =mt_rand(0,1000000);
$_SESSION['code'] = $code;
$this->assign('code',$code);


注:该段代码应在表单提交判断的后面

往html中传一个session随机数,并把该随机数用隐藏input框的形式传值

html页面中

<input type="hidden" name="hiddenCode" value="<{$code}>">


在表单提交后的做判断,若input值与session中的值相等,则可继续提交,否则不执行提交表单

session_start();
if(isset($data['hiddenCode'])){
if($data['hiddenCode'] == $_SESSION['code']){
unset($data['hiddenCode']);
//提交操作
}
}


完整代码:

public function test(){
$data = I('post.');
if($data != null){
$this->addSubmitform($data);
}
session_start();
$code = mt_rand(0,1000000);
$_SESSION['code'] = $code;
$this->assign('code',$code);
$this->display('.html');
}
public function addSubmitform($data){
session_start();
if(isset($data['hiddenCode'])){
if($data['hiddenCode'] == $_SESSION['code']){
unset($data['hiddenCode']);
$res1 = M('tableName')->add($data);
if ($res1 == '') {
//上传失败
return false;
}
}
}
}


<form class="ticket-form" action="" method="post">
Landing Page<input class="form-input page" type="text" name="page"/>
<input type="hidden" name="hiddenCode" value="<{$code}>">
<input  type="submit" value="Submit"  >
</form>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  表单 html session thinkphp