关于php代码问题,提交一次数据后,第二次刷新一下 会将上次的数据自动插入到数据库。
<formaction="insert.php"method="post"><inputtype="text"name="name"/><br/><inputtype="...
<form action="insert.php" method="post">
<input type="text" name="name" /><br />
<input type="password" name="pwd" /><br />
<input type="text" name="sel" />
<input type="submit" value="提交" name="sub"/>
</form>
<?php
$db=new PDO("mysql:host=localhost;dbname=test0","root","123",array(PDO::ATTR_PERSISTENT =>true));
$db->query("set names gbk");
$name=$HTTP_POST_VARS["name"];
$pwd=md5(md5($HTTP_POST_VARS["pwd"]));
$email=$HTTP_POST_VARS["sel"];
$sql=$db->exec("insert into reg(name,pwd,email) values('$name','$pwd','$email')");
$ss=$db->query("select * from reg");
foreach($ss as $rs)
{
echo $rs[name]."<br />";
}
?> 展开
<input type="text" name="name" /><br />
<input type="password" name="pwd" /><br />
<input type="text" name="sel" />
<input type="submit" value="提交" name="sub"/>
</form>
<?php
$db=new PDO("mysql:host=localhost;dbname=test0","root","123",array(PDO::ATTR_PERSISTENT =>true));
$db->query("set names gbk");
$name=$HTTP_POST_VARS["name"];
$pwd=md5(md5($HTTP_POST_VARS["pwd"]));
$email=$HTTP_POST_VARS["sel"];
$sql=$db->exec("insert into reg(name,pwd,email) values('$name','$pwd','$email')");
$ss=$db->query("select * from reg");
foreach($ss as $rs)
{
echo $rs[name]."<br />";
}
?> 展开
3个回答
展开全部
在表单页面设置一个隐藏域,尽量让隐藏域的值不重复,例如在表单页面form.php中设置隐藏域hashCode,并让hashCode的值为当前的时间戳:
<form name="form1" action="form_action.php" method="post">
<input type="hidden" name="hashCode" value="<?php echo time()?>"/>
</form>
在表单处理页面form_action.php接收隐藏域hashCode的值,判断是否存在$_SESSION['ACTION']或者$_SESSION['ACTION']的值是否等于表单提交的hashCode的值,如果相等为重复提交数据。
<?php
session_start();
$hashCode =trim($_POST['hashCode']);
if(!isset($_SESSION['ACTION'])||$_SESSION['ACTION']!=$hashCode){
//新提交数据,入库操作
$_SESSION['ACTION'] =$hashCode;//标记操作完成
}else{
echo '请勿重复提交数据';
exit();
}
?>
追问
我的意思是同一个页面的
追答
思路一样的,多加一个变量用于代表要执行的行为:
<?php
session_start();
$action =$_GET['action'];
$hashCode =trim($_POST['hashCode']);
if($action=='save'){
if(!isset($_SESSION['ACTION'])||$_SESSION['ACTION']!=$hashCode){
echo 'Saved!';
$_SESSION['ACTION'] =$hashCode;
}else{
echo '请勿重复提交数据!';
exit();
}
}
?>
<form name="form1" action="?action=save" method="post">
<input type="hidden" name="hashCode" value="<?php echo time(); ?>"/>
<input name="提交" type="submit" value="submit"/>
</form>
展开全部
表单页面是一个文件,数据库插入是一个文件,分开来做,不然肯定会每刷新一次就执行一次,都不需要按提交按钮
更多追问追答
追问
那放在一个页面里怎么处理
追答
为什么非要放到一个页面呢,在以后开发的时候是不可能让你放一块的,前后台是不同人员开发的,不能放一起,不然后期维护非常麻烦,如果你非要放一起,那你就需要在开始加一个判断条件,判断是否按下了提交按钮,只有按提交的情况下,才执行后续语句。不过这样,真的是自找麻烦,建议不要这么写
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
将name字段设定为unique,这样,重复的name将不能插入数据库,但会爆出一个错误,可以将其$db->exec("insert into reg(name,pwd,email) values('$name','$pwd','$email')") or exit("用户名重复!!!");
更多追问追答
追问
exec("insert into reg(unique,pwd,email) values('$name','$pwd','$email')") or exit("用户名重“)你的意思直接这样,在数据库里name改为unique啊,那要是我调用其他的字段活多个字段值呢
追答
这样解决刷新就插入的问题 了啊。而且,用户登录名本来就该保持唯一性。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询