一.表单传值
表单传值即浏览器通过表单元素将用户的选择或者输入的数据提交给后台服务器语言。
1.GET传值
①form表单(表单元素实现)
<form method="GET">表单元素</form>
<--通过get传输-->
②a标签(表单元素实现)
<a href="www.baiduhaha.cn/index.php?学科=PHP">
<--其中,"?变量=赋值"形式可以传输数据-->
③location对象的href属性(JavaScript实现)
<script>location.href="www.haha.cn/index.php?学科=PHP"</script>
④location对象的assign()方法(JavaScript实现)
<script>location.assign("www.haah.cn/index.php?data=PHP")</script>
2.POST传值
①post表单方式的基本设定
<form method>
②post方式跟get方式的区别
1)get传输的数据主要是用来获取数据,不改变服务器上的资源
2)post传输的数据主要是用来增加数据,改变服务器上的资源
3)传输方式上post必须使用form表单,而get可以使用form表单和URL
4)get传输数据可以在URL中对外可减,而post不可见,
get传值最终会在浏览器的地址栏中全部显示:?数据名=数据值&数据名 2=数据值 2……
5)get和post能传输的数据大小不同,get为2K,post理论无限制
6)get传输简单数据(数值/字符串),post可以提交复杂数据(二进制等)
3.PHP接收数据的三种方式
不管是哪一个,三个都是PHP超全局(没有范围限制)预定义数组,表单元素的"name"属性的值作为数组的下标,而value属性对应的值就是数组的元素值。
①$_GET
接收GET方式提交的数据
②$_POST
接收POST方式提交的数据
③$_REQUEST
接收POST或者GET提交的所有数据
1)$_REQUEST
所存储数据的内容:将$_POST 和$_GET
合并存储到一个数组
2)$_REQUEST
和$_GET
的联系:如果GET和POST中有同名数组元素(下标),POST会覆盖GET(PHP数组元素下标具有唯一性),这个可以在php.ini中进行,REQUEST保留了username值是属于post提交,说明POST覆盖了GET
GET请求可以在浏览器搜索框内直接输入"?属性名=属性值"
4.PHP处理复选框数据
复选框:通常是将一类内容以同样(同名)的形式传递给后台,数据库通常是一个字段存储
来,做一个复选框↓↓↓
一定要用相对路径!!!
相对路径从当前打开的页面出发,从左往右书写:
“…/”是返回上级目录,有几个上级目录就写几个"…/",返回上级目录后再往下按绝对路径书写方式书写""
1.在浏览器,checkbox的name属性的值都会被浏览器提交
2.在PHP中,$_POST
或者$_GET
都会对同名"name"属性进行覆盖
解决方案:浏览器不识别[](浏览器不认为有特殊性),但是PHP认为[]有特殊性:系统自动认为该符号是数组的形式,所以PHP就会自动地将同名的但是带有[]的元素组合到一起形成一个数组
5.复选框数据接收形式
php会自动组合同名元素的伪数组
来个项目实战↓↓↓
要求:把此已经写好的html的登录页面中,用户提交的信息通过后台匹配,输出正确与否。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>FormStudy1</title>
</head>
<body>
<form method="post" action="../php/study2.php">
<div>
<span>注册        </span> <input id="name" type="text" name="username"><br>
<span>密码        </span> <input id="ps" type="password" name="userpw1"><br>
<span>确认密码</span> <input id="ps1" type="password" name="userpw2"><br>
<button class="subline" @click="subline" style="width: 100px;height: 50px;color: #d44c4f;font-family: 华文彩云;font-size: 30px;">提交</button>
</div>
</form>
</body>
</html>
结果
<?php
header('Content-type:text/html;charset=utf-8');
//print_r($_POST);
if($_POST['userpw1']==$_POST['userpw2']){
print_r('密码正确~');
}else{
print_r('密码错误~');
}