处理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);//浏览器源代码为&
·剔除用户输入中的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)的更多相关文章
- [Swift通天遁地]二、表格表单-(11)创建星期选项表单和拥有浮动标签的文本框
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...
- Rails-Treasure chest2 嵌套表单;
嵌套表单1-1 嵌套表单1-多 选日期时间的UI (一个jquery Plugin) 拆除前后台css和js Rich Editor, 显示输入的HTML tag 批次编辑/删除 嵌套表单1-1 核心 ...
- SpringMVC学习系列(11) 之 表单标签
本篇我们来学习Spring MVC表单标签的使用,借助于Spring MVC提供的表单标签可以让我们在视图上展示WebModel中的数据更加轻松. 一.首先我们先做一个简单了例子来对Spring MV ...
- [flask/python/web] 解析flask web开发(Miguel著)一书第11章主页不显示博文表单的问题
---------------------------------------------以下内容2017.7.14更新---------------------------------------- ...
- Django 11 form表单(状态保持session、form表单及注册实现)
Django 11 form表单(状态保持session.form表单及注册实现) 一.状态保持 session 状态保持 #1.http协议是无状态的:每次请求都是一次新的请求,不会记得之前通信的状 ...
- SpringMVC学习(11):表单标签
本篇我们来学习Spring MVC表单标签的使用,借助于Spring MVC提供的表单标签可以让我们在视图上展示WebModel中的数据更加轻松. 一.首先我们先做一个简单了例子来对Spring MV ...
- SpringMVC(11)表单标签
本篇我们来学习Spring MVC表单标签的使用,借助于Spring MVC提供的表单标签可以让我们在视图上展示WebModel中的数据更加轻松. 一.首先我们先做一个简单了例子来对Spring MV ...
- Bootstrap系列 -- 11. 基础表单
表单主要功能是用来与用户做交流的一个网页控件,良好的表单设计能够让网页与用户更好的沟通.表单中常见的元素主要包括:文本输入框.下拉选择框.单选按钮.复选按钮.文本域和按钮等.其中每个控件所起的作用都各 ...
- 2016年11月6日--form表单验证和事件、正则表达式
1.表单验证<form></form> (1).非空验证(去空格) (2).对比验证(跟一个值对比) (3).范围验证(根据一个范围进行判断) (4).固定格式验证:电话号码, ...
- express-11 表单处理(2)
处理AJAX表单 用Express处理AJAX表单非常简单:甚至可以使用相同的处理程序来处理AJAX请求和常规的浏览器回退. HTML文件 (/views/newsletter.handlebars) ...
随机推荐
- Python之正则表达式模块
正则表达式符号: . ^ $ * + ? {} () | [] .一个点代表一个字符 ^代表开头 $代表结尾 *代表有0到无数个 [0,+00] ?代表有0到1个 [0,1] +代表有1到无 ...
- 关于npm构建angular2项目问题
我在win10系统下用npm构建好angular2项目之后,在命令行下运行 ng serve --open,报一下错误: Unknown browser query 'basedir=$(dirnam ...
- C# 后台添加Log信息
我们在做项目的时候,经常会使用到Log日志,今天分享一下如何在后台添加Log信息 创建一个写Log的方法: public void WriteLog(string Action) { try { st ...
- 整理一下最近Android面试的提问
java相关: 1. public protect private default关键字有什么区别? public:表示可以在任何一个类中被访问: protect:表示可以在自身.子类以及同一包下的类 ...
- 对View的onMeasure()方法的进一步研究
在Android开发中,很多人对自定义View是望而生畏,但这又是向高级进阶的必经之路,主要是对View里面的很多方法不知道怎么理解,其中一个就是onMeasure()方法. 首先,我自定义一个MyV ...
- (Stanford CS224d) Deep Learning and NLP课程笔记(一):Deep NLP
Stanford大学在2015年开设了一门Deep Learning for Natural Language Processing的课程,广受好评.并在2016年春季再次开课.我将开始这门课程的学习 ...
- AndroidUI多线程网络请求更新导致BUG
昨天发现一个问题,以前做好的UI列表不用正常显示了,必须,下拉一下,才能加载内容,以前是页面自动加载第一屏幕的. 这个就不好了,只是给页面加了一个按钮啊,不应该造成这么大的问题. 按钮就是设置了一个位 ...
- SSH笔记一
加入JAR包(包括c3p0和sql的,重复包删低版本的) 加入Spring 1) 配置web.xml文件 ------删内容留web-app--------ctrl+shift+f--------c ...
- 产品从生到死的N宗罪
写在前面 昨天晚上做了一个梦,大概就是跟CTO,PM在说着什么..现在回想起好像就是说产品怎么怎么的..:索性就吐槽下这几个项目生与死的N宗罪吧.. 特别提示: 本文为全方位吐槽型,前方多处具有针对性 ...
- 企业级Ngnix基于域名的配置_server
普通的nginx配置 egrep -v "#|^$" /usr/local/nginx/conf/nginx.conf.default 更改nginx的配置文件-->注意空格 ...