【前言】
? ? ? ?今天开始总结PHP表单相关的知识点,在这里记录总结下
?
【概论】
?
【列表】
?(1)表单元素总结回顾(前端);
?(2) 数据处理(后端);
?
【主体】
(1)表单元素总结回顾
? ? ? ? ①表单的作用?
? ? ? ? ? ? 用于搜集不同类型的用户输入
? ? ? ? ②表单元素有哪些?
? ? ? ? ? ?不同类型的 input 元素、复选框、单选按钮、提交按钮等等。例如:
class="html"><input type="text"> 定义文本输入 <input type="radio"> 定义单选按钮 <input type="checkbox"> 定义多选按钮 <input type="submit"> 向表单处理程序(form-handler)提交表单的按钮
? ? ? ? ③属性有哪些?具体作用?
? ? 1.action 属性
? ? ? ?定义在提交表单时执行的动作,通常,表单会被提交到 web 服务器上的网页,例如:
<form action="action_page.php">
? ? ? ?在上面的例子中,指定了某个服务器脚本来处理被提交表单。如果省略 action 属性,则 action 会被设置为当前页面
? ? ? 2.Method 方法属性
? ? ? ? ?规定在提交表单时所用的 HTTP 方法(GET 或 POST):
<form action="action_page.php" method="GET"> 或: <form action="action_page.php" method="POST">
? ? ? 3. GET方法(默认方法):
? ? ? ? ?表单提交是被动的(比如搜索引擎查询),并且没有敏感信息。
? ? ? ? ?当使用 GET 时,表单数据在页面地址栏中是可见的:
demo.php?firstname=秦&lastname=始皇
? ? ? ? ?注意:GET 最适合少量数据的提交,浏览器会设定容量限制
? ? ? ?4. POST方法
? ? ? ? ? ?如果表单正在更新数据,或者包含敏感信息(例如密码)时,POST的安全性更佳,因为在页面地址栏中被提交的数据是不可见的
? ? ? ?5. Name属性
? ? ? ? ? ?规定识别表单的名称(对于 DOM 使用:document.forms.name)。如果要正确地被提交,每个输入字段必须设置一个 name 属性
? ? ? ? ??下例只会提交 "Last name" 输入字段:
<form action="demo2.php" method="get"> First name:<br> <input type="text" value="海贼王"> <br> Last name:<br> <input type="text" name="lastname" value="漫画"> <br><br> <input type="submit" value="Submit"> </form>
? ? action动作属性指定了demo2.php这个脚本来处理被提交表单,下面来看下demo2.php
<?php echo "我搜索的是" . $_GET['firstname'] . "的" . $_GET['lastname']; ?>
? ? 输出结果:我搜索的是漫画。---->因为未设置name属性,所以并未审查到first name输入的“海贼王”
? ? ? ?6.<fieldset> 标签
? ? ? ? ? 组合表单中的相关数据,将表单内的相关元素分组,当一组表单元素放到 <fieldset> 标签内时,浏览器会以特殊方式来显示它们,它们可能有特殊的边界、3D 效果,或者甚至可创建一个子表单来处理这些元素。
? ? ? ?7.<legend> 标签为 fieldset 元素定义标题??
?
(2)数据处理
? ? ? PHP超全局变量 $_GET 和 $_POST 用于收集表单数据(form-data)
? ? ??GET vs POST 列表:
? ? ? ①GET 和 POST 都创建数组(例如,array( key => value, key2 => value2, key3 => value3, ...))。此数组包含键/值对,其中的键是表单控件的名称,而值是来自用户的输入数据;
? ? ? ②GET 和 POST 被视作 $_GET 和 $_POST。它们是超全局变量,这意味着对它们的访问无需考虑作用域 - 无需任何特殊代码,您能够从任何函数、类或文件访问它们;
? ? ? ③$_GET 是通过 URL 参数传递到当前脚本的变量数组;
? ? ? ④$_POST 是通过 HTTP POST (http请求主体)传递到当前脚本的变量数组;?
?
(3)GET与POST对比
? ? ? ①GET 方法
? ? ? ? ?缺点:
? ? ? ? ? ? ? ? ? 1. 发送的信息对任何人都是可见的(所有变量名和值都显示在 URL 中);
? ? ? ? ? ? ? ? ? 2. 对所发送信息的数量也有限制。限制在大于 2000 个字符;
? ? ? ? ?优点:
? ? ? ? ? ? ? ? ?由于变量显示在 URL 中,把页面添加到书签中也更为方便
? ? ? ? ?注意:GET 可用于发送非敏感的数据,绝不能使用 GET 来发送密码或其他敏感信息!
GET实例:
?
<form action="demo2.php" method="GET"> First name:<br> <input type="text" name="firstname" value="海贼王"> <br> Last name:<br> <input type="text" name="lastname" value="漫画"> <br><br> <input type="submit" value="Submit"> </form>
<?php echo "我搜索的是" . $_GET['firstname'] . "的" . $_GET['lastname']; ?>
运行代码,点击搜索后查看效果即可看到URL变为
http://localhost/demo2.php?firstname=%E6%B5%B7%E8%B4%BC%E7%8E%8B& lastname=%E6%BC%AB%E7%94%BB
?
这里经过URL编码,我稍后介绍
点击收藏按钮,即可收藏该网页,可以再次打开
?
? ? ? ?②POST方法
? ? ? ? ? ?缺点:
? ? ? ? ? ? ? ? ? ?由于变量未显示在 URL 中,也就无法将页面添加到书签
? ? ? ? ? ?优点:
? ? ? ? ? ? ? ? ? ?1.?发送的信息对其他人是不可见的(所有名称/值会被嵌入 HTTP 请求的主体中);
? ? ? ? ? ? ? ? ? ?2.?对所发送信息的数量也无限制;
? ? ? ? ? ? ? ? ? ?3.?此外POST 支持高阶功能,比如在向服务器上传文件时进行 multi-part 二进制输入
POST实例:
?
<form action="demo2.php" method="POST"> First name:<br> <input type="text" name="firstname" value="海贼王"> <br> Last name:<br> <input type="text" name="lastname" value="漫画"> <br><br> <input type="submit" value="Submit"> </form>
<?php echo "我搜索的是" . $_POST['firstname'] . "的" . $_POST['lastname']; ?>
运行代码,点击搜索后查看效果即可看到URL变为
http://localhost/demo2.php
点击收藏后到收藏夹,但是再次打开会发现数据消失了
?
?
?
?
?
?
【总结】
(1)HTML <form> 元素,已设置所有可能的属性
? ? 案例:
<form action="action_page.php" method="GET" target="_blank" accept-charset="UTF-8" ectype="application/x-www-form-urlencoded" autocomplete="off" novalidate> . form elements . </form>
? ??下面是 <form> 属性的列表:
accept-charset 规定在被提交表单中使用的字符集(默认:页面字符集)。 action 规定向何处提交表单的地址(URL)(提交页面)。 autocomplete 规定浏览器应该自动完成表单(默认:开启)。 enctype 规定被提交数据的编码(默认:url-encoded)。 method 规定在提交表单时所用的 HTTP 方法(默认:GET)。 name 规定识别表单的名称(对于 DOM 使用:document.forms.name)。 novalidate 规定浏览器不验证表单。 target 规定 action 属性中地址的目标(默认:_self)。(2)提示:开发者偏爱 POST 来发送表单数据
(3)
?
?
?
?
?
?
.