PHP 学习笔记(二):表单:表单处理,表单验证,表单实例总结由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“第5章php表单处理”。
PHP 学习笔记
(二):表单:表单处理,表单验证,表单实例
PHP 表单
PHP 超全局变量 $_GET 和 $_POST 用于收集表单数据(form-data)。1 GET vs.POST
GET 和 POST 都创建数组(例如,array(key => value, key2 => value2, key3 => value3, …))。此数组包含键/值对,其中的键是表单控件的名称,而值是来自用户的输入数据。
GET 和 POST 被视作 GET和_POST。它们是超全局变量,这意味着对它们的访问无需考虑作用域并且应该对其进行验证。如果未提交,则跳过验证并显示一个空白表单。
PHP 表单验证输入字段
从上一节中的验证规则中,我们看到 “Name”, “E-mail” 以及 “Gender” 字段是必需的。这些字段不能为空且必须在 HTML 表单中填写。
在上一节中,所有输入字段都是可选的。在下面的代码中我们增加了一些新变量:$nameErr、$emailErr、$genderErr 以及 $websiteErr。这些错误变量会保存被请求字段的错误消息。我们还为每个 $_POST 变量添加了一个 if else 语句。这条语句检查 $_POST 变量是否为空(通过 PHP empty()函数)。如果为空,则错误消息会存储于不同的错误变量中。如果不为空,则通过 test_input()函数发送用户输入数据:
$nameErr = $emailErr = $genderErr = $websiteErr = “”;$name = $email = $gender = $comment = $website = “”;
if($_SERVER[“REQUEST_METHOD”] == “POST”){
if(empty($_POST[“name”])){
$nameErr = “Name is reqwww.daodoc.comment”])){
$comment = “”;
} else {
$comment = test_input($_POST[“comment”]);
}
if(empty($_POST[“gender”])){
$genderErr = “Gender is required”;
} else {
$gender = test_input($_POST[“gender”]);
} } ?> PHP验证 E-mail 和 URL
本节展示如何验证名字、电邮和 URL。
PHP验证 E-mail
以下代码展示的简单方法检查 e-mail 地址语法是否有效。如果无效则存储一条错误消息:
$email = test_input($_POST[“email”]);if(!preg_match(“/([w-]+@[w-]+.[w-]+)/”,$email)){
$emailErr = “无效的 email 格式!”;}
PHP验证 Name、E-mail、以及 URL
现在,脚本是这样的:
$nameErr = $emailErr = $genderErr = $websiteErr = “”;$name = $email = $gender = $comment = $website = “”;
if($_SERVER[“REQUEST_METHOD”] == “POST”){
if(empty($_POST[“name”])){
$nameErr = “Name is required”;
} else {
$name = test_input($_POST[“name”]);
// 检查名字是否包含字母和空格
if(!preg_match(“/^[a-zA-Z ]*$/”,$name)){
$nameErr = “Only letters and white space allowed”;
}
}
if(empty($_POST[“email”])){
$emailErr = “Email is required”;
} else {
$email = test_input($_POST[“email”]);
// 检查电邮地址语法是否有效
if(!preg_match(“/([w-]+@[w-]+.[w-]+)/”,$email)){
$emailErr = “Invalid email format”;
}
}
if(empty($_POST[“website”])){
$website = “”;
} else {
$website = test_input($_POST[“website”]);
// 检查 URL 地址语言是否有效(此正则表达式同样允许 URL 中的下划线)
if(!preg_match(“/b(?:(?:https?|ftp)://|www.daodoc.comment”])){
$comment = “”;
} else {
$comment = test_input($_POST[“comment”]);
}
if(empty($_POST[“gender”])){
$genderErr = “Gender is required”;
} else {
$gender = test_input($_POST[“gender”]);
} } ?>
接下来向您讲解如何防止表单在用户提交表单后保留输入字段中的值。
PHP-保留表单中的值
如需在用户点击提交按钮后在输入字段中显示值,我们在以下输入字段的 value 属性中增加了一小段 PHP 脚本:name、email 以及 website。在 comment 文本框字段中,我们把脚本放到了 与 之间。这些脚本输出 $name、$email、$website 和 $comment 变量的值。
然后,我们还需要显示选中了哪个单选按钮。对此,我们必须操作 checked 属性(而非单选按钮的 value 属性):
Name: “>
E-mail: ”>
Website: “>
Comment:
Gender:
value=”female“>Female value=”male">Male
echo