• 处理HTML表单(11)


    PHP和Web表单

    <?php
        if(isset($_POST["name"])){//isset()函数设置变量是否设置,并且不能为空
            $name = $_POST["name"];
            $pass = $_POST["pass"];
            printf("姓名:%s",$name);
            printf("密码:%s",$pass);
        }
    ?>
    <form action="index.html" method="POST">
        <p>
            Name:<br/>
            <input type="text" name="name"/>
        </p>
        <p>
            Pass:<br/>
            <input type="text" name="pass"/>
        </p>
        <input type="submit" value="提交"/>
    </form>

    验证表单数据

    • 清理用户输入

    ·转义shell参数

    escapeshellarg()函数

    $str = "文本";
    echo escapeshellarg($str);//将字符串添加一个双引号

    ·转义shell元字符

    escapeshellcmd()函数

    $str = " # $ ; , | * ? , ~ < > ( ) { } [ ] & \ x0A xFF";
    escapeshellcmd($str);escapeshellcmd()函数自动转义以上字符

     ·将HTML转换为HTML实体

    htmlentities()函数

    $xiu = "&";
    echo htmlentities($xiu);//浏览器源代码为&amp;

    ·剔除用户输入中的HTML标签

    strip_tags()函数

    $xiu = "<h1>h1标签</h1>,<h2>h2标签</h2>";
    $xiu = strip_tags($xiu,"<h1>");//保留<h1>标签,多个标签逗号隔开
    echo $xiu;//"<h1>h1标签</h1>,h2标签";
    • 利用Filter扩展验证和清理数据

    filter_var()函数

    Filter扩展的验证功能

    FILER_VALIDAYE_BOOLEAN(布尔值)
    FILER_VALIDATE_EMAIL(电子邮件地址)
    FILER_VALIDATE_FLOAT(浮点数)
    FILER_VALIDATE_INT(整数)
    FILER_VALIDATE_IP(IP地址)
    FILER_VALIDATE_REGEXP(正则表达式)
    FILER_VALIDATE_URL(URL)

    $email = "xiukang@qq.com";
    if(filter_var($email,FILTER_VALIDATE_EMAIL)){//filter_var()函数验证数据类型
    echo "成功";
    }

    用Filter扩展清理数据

    FILTER_SANITIZE_EMAIL(电子邮件之外的字符全部删除 RFC822)
    FILTER_SANITIZE_URL(URL之外的字符全部删除 RFC3986)
    FILTER_SANITIZE_ENCODED(对一个字符串完成URL编码,生成与urlencode()函数所返回结果相同的输出)
    FILTER_SANITIZE_MAGIC_QUOTES(使用addslaches()函数用一个反斜杠转义可能危险的字符)
    FILTER_SANITIZE_NUMBER_FLOAT(删除所有导致浮点值无法由PHP识别的字符)
    FILTER_SANITIZE_NUMBER_INT(删除所有导致整数值无法由PHP识别的字符)
    FILTER_SANITIZE_SPECIAL_CHARS(对 ' " < >和$字符进行HTML编码,对ASCII值小于32的字符进行编码,包括制表符,退格符)
    FILTER_SANITIZE_STRING(清除所有HTML标签)

    $email = "xiukang@qq.com ,sear";
    $email = filter_var($email,FILTER_SANITIZE_EMAIL);//删除RFC822之外所有字符
    echo $email;//xiukang@qq.comsear
    • 处理多值表单组件

    为了让PHP识别赋给表单的多个值,需要对表单项名添加一个中括号
    PHP就会像处理数组一样处理所提交的变量

    <?php
      if(isset($_POST["submit"])){
        foreach($_POST["languages"] as $language){
          $xiu = htmlentities($language);
          echo $xiu."<br/>";
        }
      }
    ?>
    <form action="<?php echo $_SERVER['PHP_SELF']?>" method="POST">
      <input type="checkbox" name="languages[]" value="php"/>php<br/>
      <input type="checkbox" name="languages[]" value="c++"/>c++<br/>
      <input type="checkbox" name="languages[]" value="java"/>java<br/>
      <input type="checkbox" name="languages[]" value="html"/>html<br/>
      <input type="submit" name="submit" value="提交"/>
    </form>

     

  • 相关阅读:
    牛客网PAT练习场-有几个PAT
    牛客网PAT练习场-到底买不买
    增量数据捕获cdc
    windows terminal 笔记
    ubuntu文件夹颜色设置及vim颜色配置
    windows sub system 如何修改root密码
    Intellij IDEA 一个Tomcat启动多个Web的设置
    What is “Deploy applications configured in Tomcat instance” in IntelliJidea
    接口批量测试
    使用soupUI,jemter 测试http接口的方法
  • 原文地址:https://www.cnblogs.com/xiukang/p/8569897.html
Copyright © 2020-2023  润新知