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>

 

处理HTML表单(11)的更多相关文章

  1. [Swift通天遁地]二、表格表单-(11)创建星期选项表单和拥有浮动标签的文本框

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...

  2. Rails-Treasure chest2 嵌套表单;

    嵌套表单1-1 嵌套表单1-多 选日期时间的UI (一个jquery Plugin) 拆除前后台css和js Rich Editor, 显示输入的HTML tag 批次编辑/删除 嵌套表单1-1 核心 ...

  3. SpringMVC学习系列(11) 之 表单标签

    本篇我们来学习Spring MVC表单标签的使用,借助于Spring MVC提供的表单标签可以让我们在视图上展示WebModel中的数据更加轻松. 一.首先我们先做一个简单了例子来对Spring MV ...

  4. [flask/python/web] 解析flask web开发(Miguel著)一书第11章主页不显示博文表单的问题

    ---------------------------------------------以下内容2017.7.14更新---------------------------------------- ...

  5. Django 11 form表单(状态保持session、form表单及注册实现)

    Django 11 form表单(状态保持session.form表单及注册实现) 一.状态保持 session 状态保持 #1.http协议是无状态的:每次请求都是一次新的请求,不会记得之前通信的状 ...

  6. SpringMVC学习(11):表单标签

    本篇我们来学习Spring MVC表单标签的使用,借助于Spring MVC提供的表单标签可以让我们在视图上展示WebModel中的数据更加轻松. 一.首先我们先做一个简单了例子来对Spring MV ...

  7. SpringMVC(11)表单标签

    本篇我们来学习Spring MVC表单标签的使用,借助于Spring MVC提供的表单标签可以让我们在视图上展示WebModel中的数据更加轻松. 一.首先我们先做一个简单了例子来对Spring MV ...

  8. Bootstrap系列 -- 11. 基础表单

    表单主要功能是用来与用户做交流的一个网页控件,良好的表单设计能够让网页与用户更好的沟通.表单中常见的元素主要包括:文本输入框.下拉选择框.单选按钮.复选按钮.文本域和按钮等.其中每个控件所起的作用都各 ...

  9. 2016年11月6日--form表单验证和事件、正则表达式

    1.表单验证<form></form> (1).非空验证(去空格) (2).对比验证(跟一个值对比) (3).范围验证(根据一个范围进行判断) (4).固定格式验证:电话号码, ...

  10. express-11 表单处理(2)

    处理AJAX表单 用Express处理AJAX表单非常简单:甚至可以使用相同的处理程序来处理AJAX请求和常规的浏览器回退. HTML文件 (/views/newsletter.handlebars) ...

随机推荐

  1. UOJ#316. 【NOI2017】泳池

    传送门 一道 \(DP\) 好题 设 \(q\) 为一个块合法的概率 套路一恰好为 \(k\) 的概率不好算,算小于等于 \(k\) 的减去小于等于 \(k-1\) 的 那么设 \(f_i\) 表示宽 ...

  2. C++学习笔记(2)----模板

    1. 与其他任何类相同,我们既可以在类模板内部,也可以在类模板外部为其定义成员函数,且定义在类模板内的成员函数被隐式声明为内联函数. 2. 默认情况下,对于一个实例化了的类模板,其成员只有在使用时才被 ...

  3. Mac 下VIM配置

    Mac下VIM配置 首先,我们去这里下载MacVim,也可用这个网址:(http://code.google.com/p/macvim/),进入后的界面如下: ____________________ ...

  4. jquery使页面滚动到底部

    function scrollToEnd(){//滚动到底部 var h = $(document).height()-$(window).height(); $(document).scrollTo ...

  5. January 05 2017 Week 1st Thursday

    The true nobility is in being superior to your previous self. 真正的高贵在于超越过去的自己. I will be satisfied if ...

  6. discern concern fifth sixth

    fifth---[fɪfθ] 发音的时候第2个f不发音 sixth---[sɪksθ]第2个s不发音 Feel free to contact with me if you have any conc ...

  7. [COGS 2064]爬山

    2064. 爬山 ★☆   输入文件:mountain.in   输出文件:mountain.out   简单对比时间限制:1 s   内存限制:256 MB [题目描述] 球有一天走在街上. 一个健 ...

  8. 51nod 1952 栈

    题目链接戳这 如果只是从尾端插入,那么问题就是基础的:求取栈内最大值的问题,这用单调栈解决即可. 但是前端也能插入,一般的单调栈已经不能满足.那么想象,如果在前端插入一个小值,相当于在栈底多加一个值罢 ...

  9. 创建工程支持scala代码开发

    第一步:idea当中创建创建普通maven工程 File ==> New ==> Project 第二步:修改pom.xml添加scala的版本以及打包插件 <dependencie ...

  10. wooyun内网渗透教学分享之内网信息探测和后渗透准备

    常规的,从web业务撕开口子url:bit.tcl.comgetshell很简单,phpcms的,一个Phpcms V9 uc api SQL的老洞直接getshell,拿到shell,权限很高,sy ...