学习目的:前后交互
一、form表单
1.form
由<form>开始,由</form>结束
form的属性有:
name:表单的名称
method:设置表单的提交方式,GET或POST方法,get方法把传递的参数放在url后面,如:www.baidu.com?name=tom&age=15,post方法隐藏要传递的参数
action:指向处理表单页面的URL(可以是相对位置或是绝对位置)
enctype:设置表单内容的编码方式
target:设置返回信息的显示方式,_blank在新窗口显示,_parent显示在父级窗口中,_self显示在当前的窗口中,_top显示在顶级窗口中
2.表单里的内容
输入标记域<input />,文本text,密码password,文件file,图片image,单选框radio,复选框checkbox,提交submit,重置表单内容reset,按钮button,隐藏输入hidden
上传文件时表单的method属性要设置为post,enctype属性要设置为multipart/form-data
多行文字域<textarea name="name" row="10" cols="10"></textarea> row为行数,cols为列数
下拉菜单和复选框怎么给name值
<?php //单选 <select name="choose"> <option>1</option> <option>2</option> <option>3</option> </select> //多选 <select multiple="multiple" name="choose[]"> <option>1</option> <option>2</option> <option>3</option> </select> //复选框 <input type="checkbox" name="hobby[]" value="篮球"/>篮球 <input type="checkbox" name="hobby[]" value="足球"/>足球 <input type="checkbox" name="hobby[]" value="排球"/>排球 ?>
3.php后端如何提取
如果用get提交的用$_GET['choose'],如果用post提交的用$_POST['choose'],中括号内为相应表单的name
4.表单验证
判断上传的数据是符合我们的要求,可以使用正则表达
isset($str)判断变量是否存在
empty($str)判断变量是否为空(0被视为空)
二、html代码中内嵌php代码
上面的方式只能从前端提交到后台,我们采用前端页面插入php处理函数的方式实现交互。现在已经不用这种模式,而是采用异步技术ajax。
$_SERVER["PHP_SELF"] 获取php的文件名,但是为了不被利用通常采用htmlspecialchars()处理一下,即:htmlspecialchars($_SERVER["PHP_SELF"])
表单action属性的值为htmlspecialchars($_SERVER["PHP_SELF"])就可以提交到本页面,例子如下:
<!DOCTYPE html> <html> <head> <mate chartset="UTF-8"> <title>表单</title> </head> <body> <?php $name = ''; $hobby = array(); if ($_SERVER["REQUEST_METHOD"] == "POST") { $name = $_POST["name"]; $hobby = isset($_POST["hobby"]) ? $_POST["hobby"] ; ''; if (empty($name)) { $nameErr = "名字不能为空"; } } ?> <form method="post" action="<?php htmlspecialchars($_SERVER["PHP_SELF"]);?>"> <div> <input type="text" name="name"/><br/> <input type="checkbox" name="hobby[]" value="篮球" />篮球 <input type="checkbox" name="hobby[]" value="足球" />足球 <input type="checkbox" name="hobby[]" value="排球" />排球 </div> <div><input type="submit" value="提交" /></div> </form> <?php echo '输入内容为<br/>' echo $name . <br/>; if (!empty($hobby)) { foreach($hobby as $item) { echo $item . '<br/>'; } } ?> </body> </html>
三、前后端分离之json后端
现在的网站基本都是异步的,即提交请求不会刷新页面,那么前后端通过什么传递数据呢?没错用的就是json数据格式
1.json_encode($value, JSON_NUMERIC_CHECK); 将php变量编码为json格式数据,并将这个php变量传递给前端。参数1为要编码的变量,参数2为二进制掩码
2.json_decode($jsonValue, true); 将前端传过来的json格式数据解码为php变量。参数1为json格式字符串,参数2为true返回数组,为false返回对象,参数3递归深度(可选),参数4二进制掩码(可选)