php中比较简单的数据验证
php中比较简单的数据验证
php中比较简单的数据验证
想象这样一个情形:我们已经创建了数据库并已正常运转了,我们所需要的就是获取用户的信息并插入到数据库中。
进一步,我们想象数据库里有一个字段要求数字输入,例如价格等数据。
最后再想象一些聪明的用户将文本插入到了该字段,是否让你哭笑不得?
MySQL可不希望看到你的SQL语句里包含一堆无聊的文本,它一定会抱怨不已。
怎么办?
验证它!
数据验证简单说就是对数据进行检查,看是否符合一定的模式,通常用于表单数据。你可以用它来确保一些元素非空,某值必须是数字,以及确保Email地址中包含@字符。
数据验证既可在服务器方执行,也可在客户方执行。
PHP用于服务器方的数据验证,而JavaScript及其他一些脚本语言可执行客户方的数据验证。
本文是关于PHP的,所以我们主要讨论服务器方。如果你需要一些关于客户方验证的代码,请检索Webmonkey的代码库。
我们先暂时抛开数据库,集中精力于PHP的数据验证。
由简到繁,PHP有好几个函数能执行这类事情,一个最简单的函数就是 strlen() ,它告诉我们字符串变量的长度。一个复杂的函数就是 ereg() ,它用正则表达式来处理数据。
关于正则表达式,一本书也写不完。本文不想深入讲它,但在下节里我会给出一些正则表达式的例子。
我们从一个简单的例子开始。首先我们检查某变量是否存在。
<html>
<body>
<?php
if ($submit) {
if (!$first ││ !$last) {
$error = "Sorry!You didn't fill in all the fields!";
}
else { // process form echo "Thank You!";
echo "Thank You!";
}
}
if (!$submit ││ $error) {
echo $error;
?>
<P>
<form method="post" action="<?php echo $PHP_SELF ?>">
FIELD 1: <input type="text" name="first" value="<?php echo $first ?>"><br>
FIELD 2: <input type="text" name="last" value="<?php echo $last ?>"><br>
<input type="Submit" name="submit" value="Enter Information">
</form>
<?php } // end if ?>
</body>
</html>
本脚本的关键就是嵌套的条件语句。第一个检查看提交按钮是否被按下。
如为真,那么继续检查变量$first和$last是否存在。
“││”符号等同于“or”而“!”符号等同于“not”。
我们也可用IF语句重写该句。
接下来,我们扩展一下,检查某字符串是否为指定长度。
它适用于检查用户密码,如果你不希望一些懒惰的用户只用一两个字母作密码的话。使用的函数是我们大家已知道的 strlen() 。该函数简单的返回一个数字,其值等于要检查的变量的字符数。
下面的代码只对上例作了一些小小的修改。
<html>
<body>
<?php
if ($submit) {
if (strlen($first) < 6 ││ strlen($last) < 6) {
$error = "Sorry!You didn't fill in all the fields!";
}
else { // process form echo "Thank You!";
echo "Thank You!";
}
}
if (!$submit ││ $error) {
echo $error;
?>
<P>
<form method="post" action="<?php echo $PHP_SELF ?>">
FIELD 1: <input type="text" name="first" value="<?php echo $first ?>"><br>
FIELD 2: <input type="text" name="last" value="<?php echo $last ?>"><br>
<input type="Submit" name="submit" value="Enter Information">
</form>
<?php } // end if ?>
</body>
</html>
运行该脚本,尝试输入6个或更少的字母,看看发生什么。
它很简单,但确实有效。