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 巧用数组降低程序的时间复杂度
Jan 01 PHP
深入理解PHP原理之Session Gc的一个小概率Notice
Apr 12 PHP
PHP求最大子序列和的算法实现
Jun 24 PHP
php删除字符串末尾子字符,删除开始字符,删除两端字符(实现代码)
Jun 27 PHP
php实现信用卡校验位算法THE LUHN MOD-10示例
May 07 PHP
兼容各大浏览器带关闭按钮的漂浮多组图片广告代码
Jun 05 PHP
PHP管理依赖(dependency)关系工具 Composer的自动加载(autoload)
Aug 18 PHP
smarty自定义函数htmlcheckboxes用法实例
Jan 22 PHP
Laravel中扩展Memcached缓存驱动实现使用阿里云OCS缓存
Feb 10 PHP
PHP实现对文件锁进行加锁、解锁操作的方法
Jul 04 PHP
Ajax+PHP实现的模拟进度条功能示例
Feb 11 PHP
php使用curl模拟多线程实现批处理功能示例
Jul 25 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正则替换函数preg_replace和preg_replace_callback使用总结
2014/09/22 PHP
php的ddos攻击解决方法
2015/01/08 PHP
硬盘浏览程序,保存成网页格式便可使用
2006/12/03 Javascript
jquery 表单取值常用代码
2009/12/22 Javascript
js 上传图片预览问题
2010/12/06 Javascript
JavaScript实现的链表数据结构实例
2015/04/02 Javascript
JavaScript中的parse()方法使用简介
2015/06/12 Javascript
基于jQuery Bar Indicator 插件实现进度条展示效果
2015/09/30 Javascript
JavaScript数组去重的五种方法
2015/11/05 Javascript
每天一篇javascript学习小结(基础知识)
2015/11/10 Javascript
浅析JavaScript中var that=this
2017/02/17 Javascript
Vuejs实现带样式的单文件组件新方法
2017/05/02 Javascript
深入理解vue-loader如何使用
2017/06/06 Javascript
微信小程序Redux绑定实例详解
2017/06/07 Javascript
JavaScript实现简单音乐播放器
2020/04/17 Javascript
VUE中使用HTTP库Axios方法详解
2020/02/05 Javascript
简单了解前端渐进式框架VUE
2020/07/20 Javascript
vue下拉刷新组件的开发及slot的使用详解
2020/12/23 Vue.js
[32:07]完美世界DOTA2联赛PWL S3 LBZS vs Rebirth 第一场 12.16
2020/12/17 DOTA
python登陆asp网站页面的实现代码
2015/01/14 Python
Python正则表达式非贪婪、多行匹配功能示例
2017/08/08 Python
Python装饰器原理与简单用法实例分析
2018/04/29 Python
Python将一个CSV文件里的数据追加到另一个CSV文件的方法
2018/07/04 Python
Python WSGI的深入理解
2018/08/01 Python
Python2和Python3.6环境解决共存问题
2018/11/09 Python
DataFrame:通过SparkSql将scala类转为DataFrame的方法
2019/01/29 Python
PyQt打开保存对话框的方法和使用详解
2019/02/27 Python
让Django的BooleanField支持字符串形式的输入方式
2020/05/20 Python
python 使用建议与技巧分享(四)
2020/08/18 Python
理肤泉英国官网:La Roche-Posay英国
2019/01/14 全球购物
学生会主席就职演讲稿
2014/01/14 职场文书
党支部承诺书范文
2014/03/28 职场文书
工作收入证明范本
2015/06/12 职场文书
2016年读书月活动总结范文
2016/04/06 职场文书
zabbix自定义监控nginx状态实现过程
2021/11/01 Servers
MySQL生成千万测试数据以及遇到的问题
2022/08/05 MySQL