PHP之粘性表单

在做数据校验时,不能只做前台JS校验,因为要防止恶意用户绕过JS校验。所以,服务器端校验绝对是一个WEB系统的最后防线。

然而,在做服务器端校验时,由于表单是提交到服务器再显示输出,所以为了防止出错时让用户重复填写数据,所以就有粘性表单的概念,即在出错返回的表单中保留有用户填写过的数据。

这样就需要用到几个东西:

1.action中填入:<?php echo $_SERVER['PHP_SELF']?>

2.在value中赋值,赋予$_POST["***"]值

具体代码如下:

<html>
 <head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <title></title>
 </head>
 <body>
   <?php
    $output = FALSE;
    if(isset($_POST["submit"])){
     
     if(empty($_POST["first_name"])||empty($_POST["second_name"])){
      
      echo '请将信息填全.<br/>';
      if(!empty($_POST["first_name"])){
       
       $first_name = $_POST["first_name"];
      }else{
       
       $first_name ="";
      }
      if(!empty($_POST["second_name"])){
       
       $second_name = $_POST["second_name"];
      }else{
       
       $second_name ="";
      }
      $output=TRUE;
     }else{
      
      $first_name = $_POST["first_name"];
      $second_name = $_POST["second_name"];
      
      $conn = mysqli_connect("localhost","root","root","test") or die("连接数据库失败!");
      $sql = "insert into alien_abuction values('{$first_name}','{$second_name}')";
      $result = mysqli_query($conn,$sql) or die("保存失败!");
      echo '保存成功<br/>';
      mysqli_close($conn);
     }
    }else{
     
     //如果从未提交过,那么需要显示表单
     $first_name = "";
     $second_name = "";
     $output = TRUE;
    }
   ?>
   <?php if($output){?>
   <form action="<?php echo $_SERVER['PHP_SELF']?>" method="post">
   first_name:<input type="text" name="first_name" value="<?php echo $first_name;?>"/>
   second_name:<input type="text" name="second_name" value="<?php echo $second_name;?>"/>
   <input type="submit" value="提交" name="submit"/>
   </form>
   <?php }?>
 </body>
</html>
 

你可能感兴趣的:(PHP之粘性表单)