在做数据校验时,不能只做前台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>