addslash()
php addslashes函数的作用是在预定义的字符前面加上反斜杠,这些预定义字符包括:
- 单引号(')
- 双引号(")
- 反斜杠(\)
- NULL
addslashes函数经常使用在向数据库插入数据时,比如有一个字符串
$str="my name's wxp";
现在要将这个字符串插入到数据库表中,由于该字符串有单引号',这样很可能与mysql拼接字符串的单引号'冲突,导致SQL语句不正确,也就无法正常执行插入操作,此时我们需要使用addslashes函数处理这个字符串。如:
$str="my name's wxp";
echo addslashes($str);//输出my name\'s wxp
然后在拼接mysql字符串:
$sql="insert into student(student_name)values('".addslashes($str)."')";
mysql_query($sql);
此时字符串被插入到数据库,那么大家是否知道插入的字符串是带反斜杠还是不带反斜杠呢?恐怕很多人都会认为肯定是带反斜杠的字符串。其实这个答案是错误的,插入的字符串是没有带反斜杠。至于为什么插入的字符串在数据库中是没有加反斜杠,请大家继续看下面讲解。
如果字符串$str="my name's wxp"是使用POST和GET提交的数据,这个时候插入数据库中的数据是带反斜杠的,由此可知addslashes只是在POST和GET数据插入数据库时才会把反斜杠同时插入到数据库,其他情况下不会将反斜杠插入到数据库。
if(!function_exists("sanitize")){
function sanitize($string,$stripall=true){
// Convert null to empty string
if ( is_null($string) ) {
$string = "";
}
// Trim any leading or trailing whitespace
$clean=trim($string);
// Convert any special characters to their normal parts
$clean=html_entity_decode($clean,ENT_COMPAT,"UTF-8");
// By default strip all html
$allowedtags=($stripall)?'':'<a><b><i><img><u><br>';
// Strip out the shit we don't allow
// 从字符串中去除 HTML 和 PHP 标记
//$allowedtage 允许 保留的html标记
$clean=strip_tags($clean, $allowedtags);
// If we decide to strip double quotes instead of encoding them uncomment the
// next line
// $clean=($stripall)?str_replace('"','',$clean):$clean;
// What is this gonna do ?
//HTML 转义字符 '"<>& 以及 ASCII 值小于 32 的字符。
$clean=filter_var($clean, FILTER_SANITIZE_SPECIAL_CHARS);
// There shoudln't be anything left to escape but wtf do it anyway
$clean=addslashes($clean);
return $clean;
}
}
addslash()的更多相关文章
- escape,encodeURI,encodeURIComponent, URLEncode, RawURLEncode, HTMLEntity, AddSlash, JSON Encode
online tooling: http://www.the-art-of-web.com/javascript/escape/ input : {user:{id:59,innerhtml:&quo ...
- ESPCMS /adminsoft/control/citylist.php Int SQLInjection Vul
catalog . 漏洞描述 . 漏洞触发条件 . 漏洞影响范围 . 漏洞代码分析 . 防御方法 . 攻防思考 1. 漏洞描述 Relevant Link:2. 漏洞触发条件 0x1: POC htt ...
- dedecms /include/uploadsafe.inc.php SQL Injection Via Local Variable Overriding Vul
catalog . 漏洞描述 . 漏洞触发条件 . 漏洞影响范围 . 漏洞代码分析 . 防御方法 . 攻防思考 1. 漏洞描述 . dedecms原生提供一个"本地变量注册"的模拟 ...
- QIBO /do/jf.php EvilCode Execution Injected By /hack/jfadmin/admin.php
catalog . 漏洞描述 . 漏洞触发条件 . 漏洞影响范围 . 漏洞代码分析 . 防御方法 . 攻防思考 1. 漏洞描述 这个漏洞的成因简单来说可以归纳为如下几点 . 类似于ECSHOP的的模版 ...
- JQuery选择器转义说明
JQuery选择器 JQuery选择器规则, 借用了css1-3的规则(css选择器规则), 因为css本身也需要一套规则来索引DOM元素, 进而进行样式渲染,例如div.blue 表示目标DOM为 ...
- golang自定义路由控制实现(二)-流式注册接口以及支持RESTFUL
先简单回顾一下在上一篇的文章中,上一篇我主要是结合了数组和Map完成路由映射,数组的大小为8,下标为0的代表Get方法,以此类推,而数组的值则是Map,键为URL,值则是我们编写对应的接口.但 ...
- php pdo prepare真的安全吗
详见 这里 Let's say I have code like this: $dbh = new PDO("blahblah"); $stmt = $dbh->prepar ...
- 苹果cms网站漏洞修复解决办法
苹果cms系统,是目前很多电影网站都在使用的一套网站系统,开源,免费,扩展性较好,支持一键采集,伪静态化,高并发的同时承载,获得的很多站长的喜欢,于近日被网站安全检测发现,maccms存在网站漏洞,s ...
- jvm crash分析
问题描述:线上进程异常退出,查看服务器端日志,有jvm crash文件生成 # # A fatal error has been detected by the Java Runtime Enviro ...
随机推荐
- C#学习笔记(二十):C#总结和月考讲解
m1w1d2_console_variable_constant 输入Console.WriteLine(); 输出Console.ReadLine(); 快捷键 折叠代码:快捷键“Ctrl+ K + ...
- hdu 1269 迷宫城堡 最简单的联通图题 kosaraju缩点算法
迷宫城堡 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Problem Des ...
- python tcp
server import socket host="localhost" port= s=socket.socket(socket.AF_INET,socket.SOCK_STR ...
- VS 修改模板文件,增加默认注释
其实这篇文章是从网上转载的,但是找不到转载链接,只能自己复制过来了 vs中的///文档注释类似java中/** */文档注释.能自动的生成帮助文档. 如果我想在每次创建文件时,自动生成文档注释(注意是 ...
- kali删除软件
kali中主要为2种卸载方法:1.apt2.dpkg 使用apt的方式有:apt-get remove [package]apt-get remove --purge # ------(package ...
- 算法笔记--STL中的各种遍历及查找(待增)
算法笔记 map: map<string,int> m; map<string,int>::iterator it;//auto it it = m.begin(); whil ...
- [Java学习] Java字符串(String)
从表面上看,字符串就是双引号之间的数据,例如“微学苑”.“http://www.weixueyuan.net”等.在Java中,可以使用下面的方法定义字符串: String stringName = ...
- hdu-5465-二维BIT+nim
Clarke and puzzle Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others ...
- UVA-1579 Matryoshka (区间DP)
题目大意:n个俄罗斯套娃,都有相应的编号,每次可将两个相邻的套娃组合成一组,每次合成只能小的放到大的里面,并且是逐层嵌套.问将这n个套娃分成若干个组,并且每组都是编号从1开始的连续序列,最少需要几步. ...
- POJ-3894 迷宫问题 (BFS+路径还原)
定义一个二维数组: int maze[5][5] = { 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, ...