在php使用隐藏字段和uniqid来实现表单的重复提交
来源:自学PHP网
时间:2014-12-04 22:12 作者:
阅读:次
[导读] 在php中,最简单,也是做常用的放发来放置表单重复提交的方法就是设置隐藏域的来实现,在php有一个uniqid();函数,他可以生成唯一的标示符,这样我们就可以通过判断这个标示符来判...
在php中,最简单,也是做常用的放发来放置表单重复提交的方法就是设置隐藏域的来实现,在php有一个uniqid();函数,他可以生成唯一的标示符,这样我们就可以通过判断这个标示符来判断表单是不是处于重复提交的状态。
在php 使用隐藏字段和uniqid来实现表单的重复提交
基本的实现是,这样的:
1.建立一个数据提交的文件
在这个文件里面就是一个表单元素,只是里面多了一个隐藏域,查看代码
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<center>
<form action="post.php" method="post">
<input type="hidden" name="uuid" value="<?php echo uniqid();?>"/>
<input type="text" name="test"/>
<input type="submit""/>
</form>
</center>
</body>
</html>
2.建立form表单的接受文件post.php
建立一个表单的接受文件,并且在里面进行验证,用户的数据是不是重复提交的,验证的方法就是通过session来实现,就是把数据文件传来的唯一标示符存入到session里面,这样在存入数据之前,先判断该session是不是有内容,如果没有内容或者有的内容和传来的id不是相同的话,就可以讲数据存到数据库,否则就提示数据重复提交了!~
实现代码:
<?php
session_start();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<center>
<?php
$uuid=$_POST['uuid'];
$olduuid=$_SESSION['uuid'];
$name=$_POST['test'];
if($olduuid==""||$olduuid!=$uuid){
echo "<font color='green'>提交成功,提交多的内容是:--></font>".$name;
$_SESSION['uuid']=$uuid;
}else{
echo "<font color='red' size='50'>已经提交数据了,<br/>不可重复提交</font>";
}
?>
</center>
</body>
</html> |
|