一、把一页面分开为两个,数据提交给另一个页面处理,之后再跳到输入页面。
优点:避免了刷新的影响,并可连续提交数据。
缺点:当用户在还没有完整的填写表单时,点了提交。若不执行数据入库操作又要保留用户之前输入的内容,用php来实现有些困难或说不方便。(当然,用js实现可能比较容易。在此约定本文只是从php的角度评价,研究php的运用)
*总的说来,这是一种不错的解决方案。
二、在session中保存变量
1 |
SESSION['submit']=false |
提交后改为true检测变量
1 2 3 |
if(_SESSION['submit']=true){ echo "text";exit(); } |
优点:避免了刷新的影响,并且只有一个页面,没有第一种方法的缺点
缺点:只能提交一次,不能连续提交数据。
*有可取之处,但适用面太窄。
三、在数据入库之前执行一次验证查询,看数据库里是否已经存在了相同的记录,由此来决定是否写入数据。
优点:没有了前两种方法的缺点。
缺点:代码不精简,操作繁琐。再说有时并不排斥保存完全相同的信息。
*实现代价太高,副作用过大。
有没有没整合三种方法优点不要其缺点的方法呢?有!下面就是一种不错的解决方案
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
<?php session_start(); if(!isset(_SESSION['h'])){ _SESSION['h']=1; } _SESSION['h']++; if(isset(_POST['h']) and _SESSION['h']==_POST['h']){ echo '<font color=green >您点提交按钮了</font>'; }else{ echo '<font color=red>您没有点提交</font>'; } ?> <form action="im.php" method=post> b:<input type="text" name=b > <input type="hidden" name=h value=<?php echo _SESSION['h']+1;?>> c:<input type="text" name=c > d:<input type="text" name=d > <input type="submit" value=提交> |