php stripslashes和addslashes的区别


Posted in PHP onFebruary 03, 2014

我们在向mysql写入数据时,比如:

mysql_query("update table set `title`='kuhanzhu's blog'");

那就会出错。同asp时一样,数据库都会对单引号过敏。而addslashes在这个时候就最长面子了,跟asp的replace(”‘”,”””,”kuhanzhu's blog”)功能一样。

PHP为了安全性,所以引入了个magic_quotes_gpc = On的功能,可以不需要做任何处理就能直接把单引号插入数据库中,那么对于Off时,则需要考虑单引号的问题了,而不是一味地信任运行环境。

magic_quotes_gpc = On时,使用了addslashes()处理后的数据在数据库中将以\'形式保存,如果此时直接输出的话,就会发现比自己期待的内容多了个\,因此stripslashes()出场了,它能把\去掉(区别于str_replace(”\”, “”,$Str))。

magic_quotes_gpc = Off时,使用了addslashes()处理后的数据在数据库中将以'形式保存,没有上面说的有\的问题,addslashes()起到插入数据不出错的作用,如果此时直接输出的话,数据正常。不需要再用stripslashes()。

addslashes()和stripslashes()正好是相反的,直接记忆:addslashes()加个\,stripslashes()去个\

那么什么时候用呢?

简单说:

当magic_quotes_gpc = On时,系统会自动处理单引号等问题,用不用addslashes()和stripslashes()都没关系,但是如果添加数据时用了addslashes(),那么显示数据时必须要stripslashes()

当magic_quotes_gpc = Off时,系统不会处理单引号等问题,所以插入数据时必须要使用addslashes(),显示数据时则不需要使用stripslashes()。

既然有了分析,做程序时要怎么办呢?根据以上两种情况,可得:

不管magic_quotes_gpc是On还是Off,咱添加数据时都用addslashes(),当On时,必须使用stripslashes(),Off时则不能用stripslashes()。

如何判断On还是Off呢?用get_magic_quotes_gpc()。

最后举例:

代码 
//提交数据,或者变量准备:
$Content=addslashes(”这里面是数据,不管有没单引号或者还是变量”);
//插入数据到数据库,代码省略
//开始显示数据
$Content=”从数据库读取的数据”;
if(get_magic_quotes_gpc()){
  $Content=stripslashes($Content); 
}
echo $Content;
PHP 相关文章推荐
PHP截取中文字符串的问题
Jul 12 PHP
拼音码表的生成
Oct 09 PHP
apache+php+mysql安装配置方法小结
Aug 01 PHP
php新建文件自动编号的思路与实现
Jun 27 PHP
PHP和.net中des加解密的实现方法
Feb 27 PHP
ThinkPHP框架任意代码执行漏洞的利用及其修复方法
Jul 04 PHP
php中多维数组按指定value排序的实现代码
Aug 19 PHP
Windows下安装PHP单元测试环境PHPUnit图文教程
Oct 24 PHP
制作安全性高的PHP网站的几个实用要点
Dec 30 PHP
php+redis在实际项目中HTTP 500: Internal Server Error故障排除
Feb 05 PHP
php自定义截取中文字符串-utf8版
Feb 27 PHP
php学习笔记之mb_strstr的基本使用
Feb 03 PHP
php获取网页标题和内容函数(不包含html标签)
Feb 03 #PHP
PHP下获取上个月、下个月、本月的日期(strtotime,date)
Feb 02 #PHP
采用header定义为文件然后readfile下载(隐藏下载地址)
Jan 31 #PHP
分享一个超好用的php header下载函数
Jan 31 #PHP
preg_match_all使用心得分享
Jan 31 #PHP
基于preg_match_all采集后数据处理的一点心得笔记(编码转换和正则匹配)
Jan 31 #PHP
php curl_init函数用法
Jan 31 #PHP
You might like
PHP用GD库生成高质量的缩略图片
2011/03/09 PHP
php检查是否是ajax请求的方法
2015/04/16 PHP
PHP中字符与字节的区别及字符串与字节转换示例
2016/10/15 PHP
jquery 输入框数字限制插件
2009/11/10 Javascript
利用onresize使得div可以随着屏幕大小而自适应的代码
2010/01/15 Javascript
Javascript/Jquery——简单定时器的多种实现方法
2013/07/03 Javascript
jQuery插件制作之参数用法实例分析
2015/06/01 Javascript
js电话号码验证方法
2015/09/28 Javascript
js实现跨域的多种方法
2015/12/25 Javascript
JS控制HTML元素的显示和隐藏的两种方法
2016/09/27 Javascript
Boostrap实现的登录界面实例代码
2016/10/09 Javascript
jQuery实现表格奇偶行显示不同背景色 就这么简单
2017/03/13 Javascript
浅谈js使用in和hasOwnProperty获取对象属性的区别
2017/04/27 Javascript
Cookbook组件形式:优化 Vue 组件的运行时性能
2018/11/25 Javascript
vue实现父子组件之间的通信以及兄弟组件的通信功能示例
2019/01/29 Javascript
JS栈stack类的实现与使用方法示例
2019/01/31 Javascript
vue子路由跳转实现tab选项卡
2019/07/24 Javascript
Python压缩和解压缩zip文件
2015/02/14 Python
在Django的URLconf中使用多个视图前缀的方法
2015/07/18 Python
Python爬虫框架Scrapy实战之批量抓取招聘信息
2015/08/07 Python
约瑟夫问题的Python和C++求解方法
2015/08/20 Python
python3实现暴力穷举博客园密码
2016/06/19 Python
python中子类调用父类函数的方法示例
2017/08/18 Python
详解如何在Apache中运行Python WSGI应用
2019/01/02 Python
pandas将多个dataframe以多个sheet的形式保存到一个excel文件中
2019/10/10 Python
Python如何将模块打包并发布
2020/08/30 Python
python压包的概念及实例详解
2021/02/17 Python
制药工程专业应届生求职信
2013/09/24 职场文书
电气工程及其自动化自我评价四篇
2013/09/24 职场文书
就业推荐表自我鉴定范文
2014/03/21 职场文书
《画风》教学反思
2014/04/16 职场文书
教师个人教学总结
2015/02/11 职场文书
2016年中秋祝酒词
2015/11/26 职场文书
电力企业职工培训心得体会
2016/01/11 职场文书
公证书
2019/04/17 职场文书
Python使用pyecharts控件绘制图表
2022/06/05 Python