表单验证就是验证用户提交的表单是不是有问题。
基于菜鸟教程的示例,但是那边讲的不是很好,理解起来很困难,我尝试重新阐述一遍,以帮助可能存在的人。
先放出整个代码部分,如果你能直接看懂请离开这里,因为这将不适合您,适合我一样的萌新php开发者。如果看完后有些许困惑,您将会在后面看见我的解释。
<!DOCTYPE html>
<html><head><meta charset="utf-8"><title></title><style>
div {color: #FF0000;}
</style></head><?php?><body><?php$MyName = $MyNamezhu = "";if($_SERVER["REQUEST_METHOD"] == "POST"){if(empty($_POST['MyName'])){$MyNamezhu='姓名不能为空';}else{$MyName =$_POST['MyName'];// 检测名字是否只包含字母跟空格if (!preg_match("/^[a-zA-Z ]*$/", $MyName)) {$MyNamezhu= "姓名只能包含字母和空格";}}}?><h4>*内容为必须写</h4><form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">姓名*:<input type="text" name='MyName' value="<?php echo $MyName;?>"><div class='xx'> <?php echo $MyNamezhu;?></div>狗的名字:<input type="text" name='myDog' value="<?php echo $myDog;?>"><input type="submit"></form><?phpecho "<h2>你写的内容是</h2>";echo $_POST['MyName']."</br>";echo $_POST['myDog']."</br>";?></body>
</html>
我将整段代码拆解为数段,以帮助理解。
第一段
<!DOCTYPE html>
<html><head><meta charset="utf-8"><title></title><style>div {color: #FF0000;}</style></head>
这部分就是单纯的html代码,中间的style是css基础,如果这一部分看不明白应该去学习html和css
第二段
<?php$MyName = $MyNamezhu = "";if($_SERVER["REQUEST_METHOD"] == "POST"){if(empty($_POST['MyName'])){$MyNamezhu='姓名不能为空';}else{$MyName =$_POST['MyName'];// 检测名字是否只包含字母跟空格if (!preg_match("/^[a-zA-Z ]*$/", $MyName)) {$MyNamezhu= "姓名只能包含字母和空格";}}}?>
$MyName = $MyNamezhu = "";的意思是重置变量的值,让这两个变量都等于 “ ”如果不这样写,你提交后的表单将会乱糟糟,因为还保存上次填写的值。
$_SERVER["REQUEST_METHOD"]的意思是获取上传的方式,也就是说,发过来的文件是什么,常见的值为GET,POST等。
if($_SERVER["REQUEST_METHOD"] == "POST"){}的意思是,如果你给我的值是POST方式的,那我就执行{}的内容,否则什么也不做。
这样可以防止用户通过恶意的方式发送值给服务器。
if(empty($_POST['MyName'])){
$MyNamezhu='姓名不能为空';
其中empty用于判断一个变量是不是空的,空的为真,也就是会把$MyNamezhu的值进行改变,可以防止用户输入空的值。
$_POST['MyName']是获取以POST方式发送的数据之中的MyName,也就是下面h5表单之中的我名字的值。
那么当值不为空的时候我们在进行对数据的筛选,preg_match()是正则表达式的内容,来判断后面的变量是不是符合要求的正则表达式。
preg_match()之中符合会为真,所以要取反,用!号来取反。
当变量是假的时候,也就是说虽然不为空,但是输入的并非只包含字母和空格,那将会把$MyNamezhu改变,也就是会出现提示。
第三段
<h4>*内容为必须写</h4><form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">姓名*:<input type="text" name='MyName' value="<?php echo $MyName;?>"><div class='xx'> <?php echo $MyNamezhu;?></div>狗的名字:<input type="text" name='myDog' value="<?php echo $myDog;?>"><input type="submit"></form>
一个很轻松的html表单,method="post"说明将会以post形式发送
action="<?php echo $_SERVER['PHP_SELF'];?>的意思是发送到哪里。也就是当前页面。
$_SERVER['PHP_SELF']将会输出当前的文件路径,也就是地址为本身。
value="<?php echo $MyName;?>说明用户写入表单的值将会存给名称为$MyName的php变量。
这一部分<div class='xx'> <?php echo $MyNamezhu;?></div>
当用户输入错误的时候,也就是前面的第二段时候,里面的$MyNamezhu值会改变,也就实现了错误提醒了。
第四段
<?phpecho "<h2>你写的内容是</h2>";echo $_POST['MyName']."</br>";echo $_POST['myDog']."</br>";?>
用于向着用户展示刚才他输出了什么。
恭喜你看完了我写的教程,若有疑问请在评论区留言,我一般半夜上csdn,可能回复晚一些。
最后祝您生活愉快。