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 相关文章推荐
用Flash图形化数据(一)
Oct 09 PHP
PHP新手上路(十)
Oct 09 PHP
dedecms防止FCK乱格式化你的代码的修改方法
Mar 17 PHP
从PHP $_SERVER相关参数判断是否支持Rewrite模块
Sep 26 PHP
php多重接口的实现方法
Jun 20 PHP
WordPress中用于获取及自定义头像图片的PHP脚本详解
Dec 17 PHP
php导出csv文件,可导出前导0实例代码
Nov 16 PHP
利用php生成验证码
Feb 23 PHP
php实现mysql连接池效果实现代码
Jan 25 PHP
php对象工厂类完整示例
Aug 09 PHP
PHPStudy下如何为Apache安装SSL证书的方法步骤
Jan 23 PHP
解决thinkphp6(tp6)在状态码500下不报错,或者显示错误“Malformed UTF-8 characters”的问题
Apr 01 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编码规范-php coding standard
2007/03/16 PHP
PHP开发不能违背的安全规则 过滤用户输入
2011/05/01 PHP
PHP面向对象学习笔记之一 基础概念
2012/10/06 PHP
PHP数组操作――获取数组最后一个值的方法
2015/04/14 PHP
浅谈php的优缺点
2015/07/14 PHP
PHP中explode函数和split函数的区别小结
2016/08/24 PHP
php登录超时检测功能实例详解
2017/03/21 PHP
php实现的双色球算法示例
2017/06/20 PHP
windows下的WAMP环境搭建图文教程(推荐)
2017/07/27 PHP
PHP基于MySQLI函数封装的数据库连接工具类【定义与用法】
2017/08/11 PHP
关于递归运算的顺序测试代码
2011/11/30 Javascript
解决JS浮点数运算出现Bug的方法
2013/03/12 Javascript
JS保存、读取、换行、转Json报错处理方法
2013/06/14 Javascript
JQuery插件iScroll实现下拉刷新,滚动翻页特效
2014/06/22 Javascript
Mvc提交表单的四种方法全程详解
2016/08/10 Javascript
Vue2.0基于vue-cli+webpack Vuex的用法(实例讲解)
2017/09/15 Javascript
vue渲染时闪烁{{}}的问题及解决方法
2018/03/28 Javascript
jQuery模拟12306城市选择框功能简单实现方法示例
2018/08/13 jQuery
JavaScript 中的无穷数(Infinity)详解
2020/02/13 Javascript
[01:15:18]2014 DOTA2国际邀请赛中国区预选赛 LGD VS Speed Gaming.cn
2014/05/22 DOTA
web.py获取上传文件名的正确方法
2014/08/26 Python
Python解析nginx日志文件
2015/05/11 Python
python直接访问私有属性的简单方法
2016/07/25 Python
通过5个知识点轻松搞定Python的作用域
2016/09/09 Python
Python线程创建和终止实例代码
2018/01/20 Python
基于腾讯云服务器部署微信小程序后台服务(Python+Django)
2019/05/08 Python
python datetime处理时间小结
2020/04/16 Python
python实现xlwt xlrd 指定条件给excel行添加颜色
2020/07/14 Python
兰蔻美国官网:Lancome美国
2017/04/25 全球购物
澳大利亚家庭花园和DIY工具网店:VidaXL
2019/05/03 全球购物
Diptyque英国官方网站:源自法国的知名香氛品牌
2019/08/28 全球购物
求网格中的黑点分布
2013/11/06 面试题
青春寄语大全
2014/04/09 职场文书
个人求职信范文
2014/05/24 职场文书
2014年保洁员工作总结
2014/11/19 职场文书
创业计划书之o2o水果店
2019/08/30 职场文书