Web表单的功能就是让浏览者和网站有一个互动的平台。表单主要用来在网页中发送数据到服务器。例如,你注册信息是所使用的表单,当你填写完信息时,你要提交(submit),提交就是将你表单中的内容从客户端浏览器传送到服务器端,经过PHP程序进行处理后,再将用户所需要的信息传递回客户端浏览器上,通过获取用户的信息,使PHP与Web表单实现交互。
本文实现了一个表单验证的列子: 1:通过用户输入的名字,邮件,网址,性别等信息,并对相关信息进行合法性验证。 2:用户输入错误,提示红色错误提示信息。 3:输入信息全部合法之后,才显示用户的输入信息。
表单验证代码如下:
PHP学习.error {color: #FF0000;}
function test_input($data)
{
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}
// 定义变量并默认设置为空值
$name = $email = $gender = $comment = $website = "";
$nameErr = $emailErr = $genderErr = $commentErr = $websiteErr ="";
$flag = true;
if ($_SERVER["REQUEST_METHOD"] == "POST")
{
if (empty($_POST["name"])){
$nameErr = "姓名是必须填的";
$flag = false;
} else {
$name = test_input($_POST["name"]);
// 检查姓名是否包含字母和空白字符
if (!preg_match("/^[a-zA-Z ]*$/", $name)){
$nameErr = "只允许字母和空格";
$flag = false;
}
}
if (empty($_POST["email"])){
$emailErr = "邮件是必填的";
$flag = false;
} else {
$email = test_input($_POST["email"]);
// 检查邮件地址语法是否有效
if(!preg_match("/^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/",$email)){
$emailErr = "无效的email格式";
$flag = false;
}
}
if (empty($_POST["website"])){
$flag = false;
} else {
$website = test_input($_POST["website"]);
// 检查URL地址语法是否有效(正则表达式也允许URL中的斜杠)
if(!preg_match("/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i",$website)){
$websiteErr = "无效的URL";
$flag = false;
}
}
if (empty($_POST["gender"])){
$genderErr = "性别是必选的";
$flag = false;
} else {
$gender = test_input($_POST["gender"]);
}
if (!empty($_POST["comment"])){
$comment = test_input($_POST["comment"]);
}
}
?>
PHP 表单验证实例
">名字:
*<?php echo$nameErr;?>
E-mail:
* <?php echo$emailErr;?>
网址:
* <?php echo$websiteErr;?>
备注:
性别:
女
男
* <?php echo$genderErr;?>
if ($_SERVER["REQUEST_METHOD"] == "POST" and $flag)
{
echo "
您输入的内容是:
";echo "名字:" .$name . "
";
echo "E-mail:" . $email . "
";
echo "网址:" . $website . "
";
echo "备注:" . $_POST["comment"] . "
";
echo "性别:" . $_POST["gender"] . "
";
}
?>
初始状态:
运行结果:
用到的知识: 1:$_SERVER[“PHP_SELF”]是一个超全局变量,返回房钱执行脚本的文件名。
2:htmlspecialchars()函数把特殊字符转化为HTML实体。这意味着 < 和 > 之类的 HTML 字符会被替换为 < 和 > 。这样可防止***者通过在表单中注入 HTML 或 JavaScript 代码(跨站点脚本***)对代码进行利用。
3:可以通过$_SERVER[“REQUEST_METHOD”]来检测表单是否被提交。
4:在用户提交表单时,应进行的处理:(通过 PHP trim() 函数)去除用户输入数据中不必要的字符(多余的空格、制表符、换行);(通过 PHP stripslashes() 函数)删除用户输入数据中的反斜杠(\)。
5:使用正则表达式验证字符串是否符合条件: 正则表达式简单介绍 preg_match ( string
正则,string
正则 , string 字符串 [, array &
结果])根据
结果] )
根据正则变量,匹配
字符串变量。如果存在则返回匹配的个数,把匹配到的结果放到
字符串变量。如果存在则返回匹配的个数,把匹配到的结果放到结果变量里。如果没有匹配到结果返回0。 ^表示开始;$表示结束。 在正则表达式中字母使用\w、而数字使用\d(\D表示非数字)来表示 • + 表示一个或者多个 • * 表示0个或者多个 • ? 表示有或者没有 • {n} 表示具体几位 • {m,n} 表示大于m个,小于n个 使用或条件可以用来匹配字符串,如果仅仅是单个的字母或者字符,则可以使用范围表示 使用[]可以表示一个字符的取值范围 ‘/[a0.]/’可以匹配包含了a或者0或者.的任意字符串 另外,正则表达式还可以使用-来表示一组范围 • [a-z] 表示小写的26个字母中的任意一个 • [A-Z] 表示一个大写字母 • [0-9] 表示一位十进制数