3.part3-2day php表单

学习目的:前后交互

一、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二进制掩码(可选)

原文地址:https://www.cnblogs.com/ldwtry/p/12185575.html