PHP/MySQL三日通(8)

2016-02-19 16:18 1 1 收藏

只要你有一台电脑或者手机,都能关注图老师为大家精心推荐的PHP/MySQL三日通(8),手机电脑控们准备好了吗?一起看过来吧!

【 tulaoshi.com - Web开发 】

  二、 数据校验

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

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/webkaifa/)

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

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

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

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

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

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

  我们先从一个简单的例子开始吧。下面这个程序要检查一个变量是否存在。

  

htmlbody?phpif ($submit) {if (!$first || !$last) {$error = "对不起,您必须填写所有的栏目!";} else {// 处理表格输入内容echo "谢谢!";}}if (!$submit || $error) {echo $error;?Pform method="post" action="?php echo $PHP_SELF ?"第一栏: input type="text" name="名" value="?php echo $first ?"br第二栏: input type="text" name="姓" value="?php echo $last ?"brinput type="Submit" name="submit" value="输入信息"/form?php} // if结束?/body/html

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

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

  我们已经讲到strlen()这个函数了。它只是简单地返回一个数字,该数字等于被测变量中所包含的字符个数。这里,我修改一下上面的程序,检查一下$first与$last的长度。

  

htmlbody?phpif ($submit) {if (strlen($first)  6 || strlen($last)  6) {$error = "对不起,您必须填写所有栏目!";} else {// 处理表格输入内容echo "谢谢!";}}if (!$submit || $error) {echo $error;?Pform method="post" action="?php echo $PHP_SELF ?"第一栏: input type="text" name="名" value="?php echo $first ?"br第二栏: input type="text" name="姓" value="?php echo $last ?"brinput type="Submit" name="submit" value="输入信息"/form?php} // if结束?/body/html

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

  三、 处理常规表达式

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/webkaifa/)

  我们稍微讲讲用ereg()和eregi()两个函数处理常规表达式。前面我已经提过,这些函数有的很简单,有的很复杂,看您的实际需要而定。

  使用常规表达式,您可以对一个字符串进行检查,搜索其中的一些结构模式,判定这些模式是否满足您的规定。最普遍的用法包括检查电子邮件地址是否有效(当然,即使这种办法判定有效,也不能保证邮件地址真的存在)。

  我们在这里不细究常规表达式的复杂细节了,仅仅给出几个实例。您可以使用上一页中用过的表格 - 把相应的程序代码复制过来,添加到下面的代码段中,就可以看到它是怎样工作的。

  首先,我们要确保表格中各栏只能输入字母。下面的常规表达式在用户输入一个或多个小写字母时判定为真,而输入数字是不允许的:

  if (!ereg("[a-Z]", $first) || !ereg("[a-Z]", $last)) {

  现在我们更进一步,检查字符串的长度是否是四到六位字符长。用[[:alpha:]]是检查字符是不是字母的简单方式。大括号内的数字检查字符个数。还要说明的是,^ 和 $ 分别代表字符串的开始和结束。

  if (!ereg("^[[:alpha:]]{4,6}$", $first) || !ereg("^[[:alpha:]]{4,6}$", $last)) {

  最后,我们来构造一个常规表达式,来检验电子邮件地址的有效性。这种检验方式的效果已经引发了相当多的讨论。没有什么东西是十全十美的,不过我下面给出的这段程序还是十分奏效的。

  我这段宝贝程序是从PHP邮件讨论组上得来的。那可是个好去处 - 常去看看吧。不错,这段程序看起来是有点乱糟糟的。

  

if (!ereg('^[-!#$%&'*+./0-9=?A-Z^_`a-z{|}~]+'.'@'.'[-!#$%&'*+/0-9=?A-Z^_`a-z{|}~]+.'.'[-!#$%&'*+./0-9=?A-Z^_`a-z{|}~]+$', $last)) {

别花太多时间来细究这段代码了,还是先到下一页内容吧。

  四、 简便方法

  前面的常规表达式怎么样?很有意思,是吧?要是在每个需要检查电子邮件地址的程序里都写上这么一段程序,那才真叫有意思呢?!想想看吧,得写那么乱七八糟的一段程序,还得写上那么多遍!...不过,当然了,还有更简便的方法。

  还记得前面我们学过的头文件吗?它能让我们写一段程序,象是这个电子邮件地址的检查程序,然后把这段程序包含进多个程序里面去。这样,我们要改写这段程序时,只须改动一处就行了,不用修改多个文件。

  但是,要做到这一点,我们必须用到函数。

  我们已经用过很多次函数了。每次我们查询数据库或检查字符串长度时,我们都是用函数来做的。这些函数是PHP自带的。如果您是位热心的程序员,您可以用自己编写的函数来扩充PHP本身的功能。但对本教程而言,这部分内容是太过高深了一点。我们要创建的函数不是那一种,而是写在PHP脚本程序内部的函数。

  函数就是一段程序代码,我们可以把一个或多个值传给这段代码,然后这段代码会处理我们传给它的数据并返回一个值。根据实际需要,函数可以很简单,也可以十分复杂。但是只要我们传进去一个数,然后能得到一个数,您管它里面有是复杂还是简单呢!这就是函数的可爱之处。

  PHP里的函数与C语言里的函数表现差不多。当我们定义函数时,必须指明函数需要接收什么样的数据。一开始好象不太好理解为什么它要接收数据进去,不过这样可以防止发生一些怪异的问题。函数之所以能做到这一点,是因为函数里面的变量都是私有变量,也就是说,它只在该函数内部存在。例如,您在程序中有一个变量叫$myname,如果您创建了一个函数,想让这个函数也使用那个$myname变量(值也相同),那是不行的。您可以在函数内部创建一个变量,名字也叫$myname,这两个变量可以各平相处,而各自取不同的值。不过我可不建议您这么做!您如果真的这么做了,等半年后您再来修改这样的程序时,您可能就会被弄糊涂了。

  那我们现在就来创建一个函数,先来个简单的。我们要给它取个名字,指定它要接收什么的变量。在调用这个函数之前,我们还得定义这个函数。  

  

htmlbody?phpfunction addnum($first, $second) {$newnum = $first + $second;return $newnum;}echo addnum(4,5);?/body/html

来源:https://www.tulaoshi.com/n/20160219/1611632.html

延伸阅读
标签: Web开发
  一、 while循环   在这一课里,我们将会继续深入下去,使用PHP和MySQL来写出一些简单而有用的页面。我们从昨天创建的数据库开始,显示库中的数据,但是会再稍微加以润色。 首先,我们用下面的代码来查询数据库内容。 $#@60;html$#@62; $#@60;body$#@62; $#@60;?php $db = mysql_connect("localhost", "root")...
标签: Web开发
四、 向服务器发送数据   现在我们从数据库读取数据已经没有太多困难了。但是怎么反过来向数据库发送数据呢?其实这不是PHP的问题。 首选,我们创建一个带有简单表格的网页。 $#@60;html$#@62; $#@60;body$#@62; $#@60;form method="post" action="$#@60;?php echo $PATH_INFO?$#@62;"$#@62; 名:$#@60;input type...
标签: Web开发
  四、第一个脚本   如果我告诉您真正难过的一关已经过了,您一定会很高兴。软件的安装过程总是无法预料,因为系统跟系统之间可以说是千差万别。不过您运气不错,数据库运行起来,PHP也编译安装完毕,Web服务器也可以正确处理扩展名为.php3的文件了。 我们下面就开始正式上路,要写第一个脚本程序了。创建一个文本文件,...
生藕性寒,可消瘀止血、清热止渴、开胃,妇女产后生冷皆忌,只有生藕不忌。民间用鲜藕洗净切片,加白糖拌食,有清热解暑的功效。如将鲜藕压榨取汁,清热生津的功效更强,对流鼻血、吐血、痰中带血以及产后出血,均有凉血止血的功效。熟藕性温,虽无清热之功,却有养胃、滋阴之效,脾胃虚弱者宜多食熟藕。 女子三日不断藕 男子三日不...
【荣总三日减肥餐】 最近台湾上班族群及网络族群流传着许多大医院减肥食谱,其中荣总减肥食谱是很受减肥者欢迎的一种能快速减肥的饮食减肥食谱。荣总指的是台北荣民总医院,是一家位于台湾台北市的公立医院。这款荣总减肥食谱真的吃了能快速减肥吗?下面让我们一起来了解一下这份据说能一月减16公斤的快速减肥食谱,了解一下它的真正...

经验教程

262

收藏

70
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部