表单传值 就是利用表单标签来获取用户的数据然后通过http协议将数据提供给服务器
http协议提供了六种传输规则 分别是 HEAD GET PUT POST DELETE OPTIONS 在web开发中最常用的就是 get 与 post规则
表单传值的意义: 帮助网站收集数据 实现用户与网站后台的数据交互 利用HTML的一组特点标签,通过浏览器解析后,提供给用户数据录入的入口
利用GET传输规则 实现传值
1 <a标签 >
<!DOCTYPE html>
<html>
<head>
</head>
<body>
a标签实现get传值
<!--href后面跟着是一个超链接 可以是服务器本身的文件路径 也可以是一个URL ?的作用是将数据隔开 -->
<!--无论是get 还是 post 采用的都是键值对的方式传值的 就像数组中的索引与值 下面的例子中keywords是键 hello world 就是值-->
<a href="index.php?keywords='hello world'">get传值</a>
<a href="https://www.baidu.com/s?wd=hello">搜索hello</a>
<br/>
<!--上面的例子中 是百度的url 百度网址网站主页面的默认文件夹是s 会把接收到的键名为'wd'的数据进行引擎检索 -->
<!--a标签实现get方式的传值 主要是利用超链接 每当点击超链接时 ?隔离的数据也会一并传值过去 -->
<!--a标签提供的数据不是由用户操作提交的 而是开发人员提前准备好的-->
</body>
</html>
2 form 便签
<form action='请求脚本文件的地址' method='所采用的传输规则 get/post'>
<input type='表单类型' name='键名' value='值'>
表单类型 type主要有
1普通输入项
<input type="text">
2密码输入项 type='password'
3单选输入项 type ='radio'\
4复选框 type='checkbox'
5文件输入项 type='file'
6普通按钮 type='button'
7提交按钮 type='submit' 一键提交
8图片提交 <input type='img' src='地址'>
9重置按钮 reset type='reset' 回到初始状态
10 下拉输入项 不用input
<select>
<option value='值'>显示名称</option>
</select>
每个select标签是一组
11 文本域 <textarea cols=''rows='' ><textarea> 有较多的行和列 可以设置属性
<html>
<body>
<!--给index.php通过get方法传递账号 密码等信息-->
<form action="index.php" method='POST'>
<!--name 是键名 valuel里面的值是默认值-->
账号: <input type='text'name='account' value=''>
密码: <input type='password' name='password' value=''>
性别: 男: <input type='radio' name='gender' value='man' checked='checked'>
女: <input type="radio" name="gender"value='woman' >
<!--checked='checked默认选中单选框'-->
<br/>
爱好: 篮球:<input type="checkbox"name='hobby[]' value='篮球'>
足球:<input type="checkbox"name='hobby[]' value='足球'>
羽毛球:<input type="checkbox"name='hobby[]' value='羽毛球'>
其他:<input type="checkbox"name='hobby[]' value='其他' checked='checked'>
<!--无论是单选框 还是复选框 他们的name必须要相同 可以让计算机知道这是一组-->
<!--复选框由于名字相同 在选择多个时 后面的会把前面的数据覆盖 所以我们把复选框的名字加上[]-->
<!--PHP一旦遇到 [] 符号便认为是数组 会自动把后面的值放在数组中-->
<br/>
<!--下拉输入项op-->
出生日期:
<select name="year">
<option value ='1990'>1990<option>
<option value ='1991'>1991<option>
<option value ='1992' selected='selected'>1992<option>
</select> 年
<select name="month">
<option value ='1'>1<option>
<option value ='2'>2<option>
<option value ='3'>3<option>
<option value ='4'>4<option>
<option value ='5'>5<option>
<option value ='6'>6<option>
<option value ='7'>7<option>
<option value ='8'>8<option>
<option value ='9'>9<option>
<option value ='10'>10<option>
<option value ='11'>11<option>
<option value ='12'>12<option>
</select> 月
<br/>
<!--下拉输入项不同于单选以及复选通过checked选中 而是通过select选中 -->
<!--每个select为一组 name属性为键名-->
<!--通过option((选项)标签来包裹 默认选中 selected='selected' -->
<br/>
<!--文本域-->
其他说明:
<textarea name="textarea" cols="30" rows="4"></textarea>
<!--cols后面跟列数 rows跟行数 由于不同浏览器的兼容性很差 所以更推荐利用css 中的height 以及 width属性来控制 -->
<br/>
点此提交数据:<input type="submit" name='get'>
<!--submit 会先是一个名为提交的按钮 一点击会把所有form容器内的表单数据都提交上去-->
</form>
</body>
</html>
点击提交后 数据就会提交到index.php 会存放在index.php 的预定义变量$_ge数组中
3 利用javaScript代码实现传值 js三大组成部分之window对象有一个location属性用来包含当前窗口的URL信息 同时location 还有一个href属性 可以动态的改变当前窗口的URL 利用这个特性 可以实现传值
<html>
<body>
<form action="index.php" method="GET">
<!--value 会显示在按钮上面 -->
<!--button 的onclick属性通常配合js代码使用 点击按钮 执行后面的代码 -->
<!--下面的按钮点击会跳出当前窗口的url-->
<input type="button" value="get URL" onclick="alert(window.location)">
<input type="button"value='change url' onclick="window.location.href='index.php?test1=666'" >
<!--与a标签工作原理类似 都是通过URL跳转 然后通过分隔符 ? 将数据分割 后面的数据会自动进入%_get 数组-->
<input type="button"value='change url 2.0' onclick="window.location.assign('index.php?test2=555')" >
<!--下面这种传值方式与上面基本相同 只不过是通过assign(指定分配)方法来改变URL -->
</form>
</body>
</html>
利用POST传值的方式只有<form>标签这一种方式 与上面的例子基本相同 只需要把method属性改为POST即可 <form action='' method='POST'>
GET 与 POST 的区别主要体现在
1 get采用明文传输 数据会附在URL之后 以?分割URL和传输数据,参数之间以&相连
post把数据放在HTTP包的包体中 不暴露在外面 更加安全
2 因为GET是通过URL提交数据,那么GET可提交的数据量就跟URL的长度有直接关系 。虽然HTTP协议规范没有对URL长度进行限制。但是某些特定的浏览器以及服务器会对其有限制。IE对URL长度的限制是2083字节(2K+35)。对于其他浏览器,如Netscape、FireFox等,理论上没有长度限制,其限制取决于操作系统的支持。
HTTP协议同样没有对POST的大小进行规范 主要受到服务器的处理程序的能力的限制
3 get多用于获取数据,根据get变量的不同调用不同的数据,post多用于提交数据,提交用户输入的数据
PHP接受数据
利用PHP预定义变量 $_GET 所有通过GET方式传过来的值都放在$_GET数组中 所有通过POST方式传过来的值都放在$_POST数组中 $_REQUEST数组即存放get方式传来的值与也存放post方式传来的值 在上面的例子中 所以的数据都提交到index.php这个文件中 我们可以遍历出这两个预定义的数组
<?php
//遍历出提交过来的数据
echo 'GET方式传递过来的值','<br/>'
foreach ($_GET as $key => $value) {
echo 'my '.$key.' is '.$value;
echo '<br/>';
}
echo 'POST方式传递过来的值','<br/>'
foreach ($_POST as $key => $value) {
echo 'my '.$key.' is '.$value;
echo '<br/>';
}
//在传值的时候需要注意到数组的下标也就是表单的name属性不能重复的问题
?>