Linux 版 (精华区)

发信人: fgr (乱舞势力), 信区: Linux
标  题: 数据校验
发信站: 紫 丁 香 (Thu Jan 20 19:53:52 2000) WWW-POST

数据校验 
想象一下这样的情形:我们把数据库都设计妥当了,现在请用户输入信息来写到数据库中
去。假设您有一个字段是要求数字类型的信息,比如价格;而某个可爱的用户,却在这一
栏里输入了文字信息,使得您的应用程序的执行过程出现了故障。对您在SQL语句中提供
的文字类型的数据,MySQL数据库拒不接受,并向您提出了“严正抗议”。 

怎么办呢?您要用数据校验来防止以上状况发生。 

简单地讲,数据校验是指我们对数据(通常是用户经由HTML表格传过来的)进行检查,看
看它是否遵从一定的规则。规则可以是多种多样的,比如某一数据元素不能为空,或者要
求某一数据项的内容必须满足一定的要求(例如前面的例子中要求必须是数字而不是文字
,或者要求电子邮件地址中一定要包含一个“@”字等等)。 

数据校验既可以在服务器一端作,也可以在客户端来作。PHP是用来作服务器一端的数据
校验的,而JavaScript或其他客户端脚本编程语言则能够提供客户端的数据校验功能。本
文说的是PHP,所以我们在这里着重介绍服务器端的校验。如果您想找一些现成的、在客
户端运行的数据较验程序,那您可以去网猴程序库看看。 

暂时把数据库放在一边不谈,我们先来说说PHP的数据校验方法。如果您愿意(或者说,
您想记录我们要校验的那些数据的话),您可以在前面所建的员工数据库的里加入其他字
段,很简单,用MySQL的ALTER 语句就行了。 

有好几个PHP功能都可以用来作数据校验的工作,有些很简单,有些则复杂一些。其中
strlen()是比较简单的一个函数,它能够告诉我们一个变量的长度。 

更复杂一点儿的是ereg(),这个函数可以处理完整的常规表达式来进行复杂的校验。我不
想就常规表达式讲得太深,因为许多书都是专门写这个问题的。不过我会在下一页中给出
一些简单的例子。 

我们先从一个简单的例子开始吧。下面这个程序要检查一个变量是否存在。 
<html>
<body>
<?php
if ($submit) {
if (!$first || !$last) {
        $error = "对不起,您必须填写所有的栏目!";
} else {
// 处理表格输入内容
echo "谢谢!";
}

}

if (!$submit || $error) {
echo $error;
?>
<P>
<form method="post" action="<?php echo $PHP_SELF ?>">
第一栏: <input type="text" name="名" value="<?php echo $first ?>"><br>
第二栏: <input type="text" name="姓" value="<?php echo $last ?>"><br>
<input type="Submit" name="submit" value="输入信息">
</form>
<?php

} // if结束
?>
</body>
</html>

这段程序中关键的地方是嵌套的条件判定语句。第一层检查用户是否按了发送数据的按钮
。如果是,程序接着检查$first和$last两个变量是否都存在。那个 || 符号表示“或”
,而 ! 符号表示“非”。那一句程序用一般语言描述就是“如果$first不存在或者$last
不存在,那么就把 $error变量置成下面的值。” 

接下来,我们再进一步,检查一段文字的长度。这对用户口令的检查是很有必要的,因为
您不想让某些懒惰的用户输入只有一、两个字的口令,可能会要求他们输入六位长的口令
。 

我们已经讲到strlen()这个函数了。它只是简单地返回一个数字,该数字等于被测变量中
所包含的字符个数。这里,我修改一下上面的程序,检查一下$first与$last的长度。 
<html>
<body>
<?php
if ($submit) {
if (strlen($first) < 6 || strlen($last) < 6) {
        $error = "对不起,您必须填写所有栏目!";
} else {
// 处理表格输入内容
echo "谢谢!";
}

}
if (!$submit || $error) {
echo $error;
?>
<P>
<form method="post" action="<?php echo $PHP_SELF ?>">
第一栏: <input type="text" name="名" value="<?php echo $first ?>"><br>
第二栏: <input type="text" name="姓" value="<?php echo $last ?>"><br>
<input type="Submit" name="submit" value="输入信息">
</form>
<?php

} // if结束
?>
</body>
</html>

您可以执行一下这段程序,输入六个字或少于六个字的内容。这种校验很简单,但很有效
。>> 


--
看到五代说:"我喜欢的女孩...很会吃醋,任性,爱哭,易怒...但是,她的微笑...
            就是我最大的幸福..."
看到响子说:"我只要你答应我一件事;哪怕是一天,你一定要比我活得更久,我再也
            不要一个人孤孤单单的活下去了!"
总是很动情。 


※ 来源:·紫 丁 香 bbs.hit.edu.cn·[FROM: 202.118.233.21] 
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:3.200毫秒