PHP验证和检查
今天,我们要检讨的web应用程序的开发过程中的一个非常重要的一部分。用户输入的验证。这是一个任何应用程序中最棘手的部分。这是为什么?由于开发商无法控制它。你可以写在世界上最好的算法,但仍然如果它包含用户输入的是有失误的地方。即使我们把一些coplicated的逻辑,以防止错误的符号的输入,检查数据的一致性,并尽一切可能以确保它是一切OK,仍然是有可能,用户输入了错误号码。虽然都表示,我们必须尽量避免人为错误的和做到这一点的最好办法是使用正则表达式。 Basicly正则表达式用于字符串匹配。它们都是基于搜索和模式匹配的文本字符串。了大量的书籍,他们写的,甚至还有一些编程语言设计,尤其是正则表达式。但今天我们只是要在正则表达式可以帮助我们与用户输入的简单介绍一下。首先,我建议你熟悉的语言的一些基本概念。完全解释它的语法在PHP手册- >模式语法 现在,让我们的工作。我将介绍一些最常见的问题与用户输入的。我敢肯定,你见过他们大多数如果不是全部。我们要创建所需的输入域的登记表格。他们是如下: -姓名 -地址 -护照 -电子邮件 -电话 -邮编 -日期 -用户名 -密码 这里是测试表(下载), 我们必须定义一些变量,我们将使用PHP验证的例子,将持有我们错误消息。他们的价值观,我们刷新页面每次被清除。
$errName = "";
$errAddress = "";
$errEmail = "";
$errPassport = "";
$errPhone = "";
$errZip = "";
$errDate = "";
$errUser = "";
$errPass = "";
在PHP中使用正则表达式的方法有两种。一个是真正的PHP风格,在这种情况下,我们必须使用ereg()函数,另一种是使用Perl风格的语法,我们验证。在这种情况下,我们必须使用preg_match()函数。在本教程中,我们将使用preg_match(),因为它是在大多数情况下,更快,同时还支持最常见的正则表达式语法。它还为我们提供了更多的功能,我们可以使用。 我们将开始与用户名的验证。我们将只允许字母,空格和破折号。因此,我们创建我们的regexp(正则表达式)。我们将尽一类为我们的可能值。类的创建时我们括在parences中的一些符号。这是我们的类: [A-ZA-Z的-我们的类包含所有字母AZ(全部小写字母),字母(大写字母),空间和破折号之间, 现在我们要设置这个类申请每一个字符,我们进入。因此,我们添加了一个(+),再加上签署后,我们的类定义。我们仍然缺少的东西。我们还没有定义我们的验证测试的范围。我们要设置文本的一部分,我们正在验证。如果我们不这样做,如果发现在我们进入,这是我们没有使用的字符,甚至一场比赛,将满足我们的正则表达式。我们如何做到这一点?我们把我们之间/ ^ $ /开始和结束字符的字符串。“^”是指该行的开始和“$”是指它的结束。我们准备建立我们的regexp。 / ^ [A-ZA-Z的- ] + $ /斜线preg_match用来定义我们的正则表达式的开始和结束, 现在我们已完成,我们呢?有刚做的一件事。我们定义我们班的方式,允许用户输入名称begining破折号。这是我们要防止的东西。因此,我们必须添加一些我们的regexp,所以将不允许 排序,我们定义为一类新的用户名的首字母。它可以只包含大写字母。 现在我们结合我们所做的工作,到目前为止,得到最终结果。如果没有匹配的preg_match()返回0。在这种情况下,我们要设置我们的错误变量,这样我们就可以显示一些有意义的信息给用户 / ^ [AZ] [A-ZA-Z的- ] + $ /
// Full Name must contain letters, dashes and spaces only and must start with upper case letter.
if(preg_match("/^[A-Z][a-zA-Z -]+$/", $_POST["name"]) === 0)
$errName = '
Name must be from letters, dashes, spaces and must not start with dash
';Address must be only letters, numbers or one of the following _ - . , : " '
';Email must comply with this mask: chars(.chars)@chars(.chars).chars(2-4)
';