PHP-表单传值
一、传值引入
了解传值必须要先知道为什么需要传值?
传值的主要作用是为了实现用户数据的定制化,用户与服务端的互交
二、传值的方式
虽然 http协议中有很多数据传输的方式,但在PHP中只有 POST 与 GET方式常用
示例代码:
1 <form method="get" action="PHP/01GetInfo.php"> 2 <input type="text" name="username"> 3 <input type="password" name="password"> 4 <input type="submit"> 5 </form>
这是get方式提交数据,post与get提交的不同下面说
很明显:method 这是指定数据的提交方式,而 action 则是指定了将这些数据提交给哪个php脚本
三、GET传值
GET传值相比于 POST 传值来说,方法相对更多一些:
- a 标签传值
- form表单传值
- js 中的 location 对象 href属性传值
1、a 标签传值
a 标签传值算是比较常用的传值方式,基本方法就是:
<a herf='./getinfof.php?name=php&age=2'>
就是请求了这个 php文件,并且在url中附带了值,使用?标志着值的开始,使用键值对的方式,使用 & 分隔每一个键值对
2、form表单传值
示例代码:
<form method="get" action="PHP/01GetInfo.php"> <input type="text" name="username"> <input type="password" name="password"> <input type="submit"> </form>
3、js 的 location 对象的 href 属性传值 或 assign方法
该对象存储着当前窗口的信息,也包括当前访问的是哪个url,也就是 href 属性,更改这个属性,也能达到一种传值的效果,和 a 标签传值类似
也可以使用 assign 方法来修改 href 属性
<script> //js方法 //直接进行提交 location.assign("01GetInfo.php?name=1&age=2"); </script>
四、POST传值
POST传值只有一种方法,即 表单传值
<!--post表单提交--> <form method="post" action="PHP/01GetInfo.php?username=j"> <input type="text" name="username" value=""> <input type="password" value=""> <input type="submit" name="sub" value="sub"> </form>
五、POST传值 与 GET传值 的区别
POST 与 GET最明显的区别就是:GET是显式传值、POST是隐式传值
也就是说,GET传递的数值可以在浏览器的 url 栏看到,而 POST 看不到
还有使用上的区别:一般来说 GET传值是从服务端获取数据,而POST是往服务端中写入数据
GET传值:
POST传值:
六、PHP获取传值
PHP中提供了三种获得传值的方法:
- $_GET
- $_POST
- $_REQUEST
这三种用来分别获取其对应传值方式的数据,而 $_REQUEST 是一个包含 GET 与 POST 传值方式的数组
如果两个传值方式有同样的键,则POST的覆盖GET的
七、单选框与复选框的处理
1、单选框
单选框由于只能选中一个,所以传值的键也不会存在重名问题
HTML:
<form action="PHP/02Recsive_checkbox.php" method="post"> <!--给男单选框一个初始选中--> <input type="radio" name="sex" value="1" checked="checked">男 <input type="radio" name="sex" value="2">女 <input type="submit" value="submit"> </form>
PHP:
<?php echo $_POST['sex'];
2、复选框
复选框可以选中多个,因此存在重名覆盖问题,所以我们传值的时候 name 属性要写为数组形式
PHP会自动往数组中添加数据,而不是覆盖
HTML:
<form action="./PHP/02Recsive_checkbox.php" method="post"> <!--解决方案: 将name属性作为一个数组进行传递--> <input type="checkbox" name="hobby[]" value="篮球">篮球 <input type="checkbox" name="hobby[]" value="足球">足球 <input type="checkbox" name="hobby[]" value="乒乓球">乒乓球 <input type="submit" value="提交"> </form>
PHP:
<?php echo '<pre>'; var_dump($_POST); /* 处理接收check box数组数据 * 将数组中的每一个元素添加上一个分隔 * 形成一个字符串 * 这个处理就是为了存储到数据库 */ //取出复选框所对应的数组 $hobby = $_POST['hobby']; //根据 ',' 来将每一个元素分隔 $hobby_str = implode(',',$hobby); echo $hobby_str . "<br>"; //相反的操作,根据某个分隔符返回一个数组 var_dump(explode(',',$hobby_str));