常用表单数据验证

来源:互联网 发布:数据挖掘工具软件 编辑:程序博客网 时间:2024/05/01 07:10

4.3 常用表单数据验证
在用户提交表单数据的时候,首先要对提交的数据的合法性进行判断,如电话号码、用
户名长度、电子邮件地址、身份证号码等。在进行判断的时候,通常采取的方法有两种,一
种是客户端验证,另外一种是服务器端验证。
服务器端验证一般来说更安全,更具有隐蔽性,尤其需要同数据库打交道的时候只能通
过服务器端验证。而客户端验证主要依靠客户端脚本,如JavaScript 或者VBScript 进行。
本节主要介绍如何在服务器端进行常用数据的验证。关于客户端脚本验证,将会在后面
的“注册模块”进行讲解。
4.3.1 姓名验证
姓名验证是注册表单验证中最长用的。因为注册表单中的姓名会被保存进数据库中,而
数据库表的设计一般都会对长度有要求。
实例 4-10 验证姓名
假如要限定姓名的长度在5~50 之间,则可以用代码4-18 来实现,文件名为name.php。
【代码 4-18】 name.php
<?php
$name="123";
if(empty($name)) //判断是否为空
{
第4 章 PHP 与HTML 表单 153
die("姓名不能为空");
}
//判断长度
elseif ( (strlen($name) < 5) || (strlen($name) > 50))
{
die("姓名长度必须在5 和15 之间");
}
Else //如果合法,则输出姓名
{
echo $name;
}
?>
以上的验证方式也适合一般的文本验证,如地址等信息。
name.php 的执行结果如图4-15 所示。
图 4-15 name.php 的执行结果
由于事先定义了“$name="123"”,$name 的长度只有3,因此提示长度不够。
提示 die 的作用类似与exit 函数,即输出内容后结束当前的php 代码执行。
4.3.2 电子邮件验证
相比较上面的姓名验证,电子邮件验证稍微复杂一些。电子邮件最主要的特征是其中必
须包含“@”符号,同时也可以进行长度限制。一般来说“@”符号后面,是一个邮件服务
器地址,如果要求比较高的验证,可以进行DNS 检测,判断是否真的有该邮件地址,实际中,
一般不需要这么严格。
实例 4-11 电子邮件验证
电子邮件代码验证如代码4-19 所示,文件名为email.php。
【代码 4-19】 email.php
<?php
$email="hello 163.com";
if(empty($email))
{
die("邮件地址不可以为空!");
}
elseif ( (strlen($email) < 5) || (strlen($email) > 50))
{
die("邮件地址长度必须在5 和50 之间");
}
elseif(!ereg("@",$email)) //必须包含@字符
{
die("电子邮件不合法,请重输!");
}
154 PHP 网络编程技术与实例
else //输出电子邮件
{
echo $email;
}
?>
email.php 的执行结果如图4-16 所示。
图 4-16 email.php 的执行结果
由于事先定义了“$email="hello 163.com"”,但$email 中不包含@字符,所以提示电子邮
件地址不合法。
4.3.3 密码字段验证
密码验证的特点就是要限制密码的长度,然后需要确认两次输入的密码是否一致。为了
保证两次密码的完全相同,需要验证两次密码的值以及数值类型是否一样。
实例 4-12 密码验证
密码验证如代码4-20 所示,文件名为password.php。
【代码 4-20】 password.php
<?php
$password="forway";
$cpassword="fprway" ;
if(empty($password) || empty($cpassword))
{
die("密码不可空!");
}
elseif ( ((strlen($password) < 5) || (strlen($password) > 15)))
{
die("密码长度在5 和15 之间");
}
//--- 值比较
elseif ( !(strlen($password) == strlen($cpassword)) )
{
die("两次输入密码不匹配! ");
}
elseif( !($password === $cpassword)) //值和数据类型比较
{
die("两次密码不匹配! ");
}
else //循环输出密码,因为是密码所以输出*号
{
for ($i=0;$i<strlen($password);$i++)
{
echo "*";
}
第4 章 PHP 与HTML 表单 155
}
?>
4.3.4 生日字段验证
生日字段也是常用的必须经过验证的字段。一般情况下,客户端的表单并不是做成文本
框的形式让用户输入,而是使用下拉列表框的形式让用户进行选择。因此很多时候不需要进
行复杂的验证。本实例将生日分成年、月、日3 个部分来进行验证。即保证出生年在1900~
2005 之间,出生月在1~12 之间,日在1~31 之间。当然还可以进行更复杂的验证,即判断
某个月份是否包含31 号或者30 号,不过很多时候没有这个必要。
实例 4-13 生日验证
生日字段验证如代码4-21 所示,文件名为birth.php。
【代码 4-21】 birth.php
<?php
$birth_month=1;
$birth_day=29;
$birth_year=1995;
if (empty($birth_month) || empty($birth_day) || empty($birth_year) )
{
die("生日不完整!");
}
switch($birth_month)
{
case 1: print "January "; break;
case 2: print "February "; break;
case 3: print "March ";break;
case 4: print "April ";break;
case 5: print "May "; break;
case 6: print "June "; break;
case 7: print "July "; break;
case 8: print "August "; break;
case 9: print "September "; break;
case 10: print "October "; break;
case 11: print "November "; break;
case 12: print "December "; break;
default: die("月份不合法!");
}
if (($birth_day < 1) || ($birth_day > 31))
{
die("日期不对!!");
}
else
{
echo $birth_day, "&nbsp;";
}
if (($birth_year < 1900) || ($birth_year >2005))
156 PHP 网络编程技术与实例
{
die("年份不对!");
}
else
{
echo $birth_year;
}
?>
birth.php 的输出结果如图4-17 所示。
图 4-17 birth.php 执行结果
由于定义了月份为 1、日期为29、年份为1995,都符合设定的条件,结果输出完整的生
日。如果将日期改成32,则会输出“日期不对”的提示。
有关常用的字段服务器端验证就介绍到这里。在后面章节将会介绍客户端 JavaScript 的
各种常用字段验证。


0 0
原创粉丝点击