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

  • 相关阅读:
    bzoj2732[HNOI2012]射箭
    poj1474 Video Surveillance
    bzoj3167[HEOI2013]SAO
    hdu2296 Ring
    bzoj2119 股市的预测
    bzoj2244[SDOI2011]拦截导弹
    bzoj3502[PA2012]Tanie Linie(最大k区间和)
    vijos1859[TJOI2014]电源插排
    比较SQL查询性能 语句
    什么是高内聚低耦合
  • 原文地址:https://www.cnblogs.com/ldwtry/p/12185575.html
Copyright © 2020-2023  润新知