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程序
Oct 09 PHP
采集邮箱的php代码(抓取网页中的邮箱地址)
Jul 17 PHP
Apache中php.ini的设置方法
Feb 28 PHP
php多文件上传实现代码
Feb 20 PHP
PHP date()函数警告: It is not safe to rely on the system解决方法
Aug 20 PHP
Zend Framework实现具有基本功能的留言本(附demo源码下载)
Mar 22 PHP
PHP array_shift()用法实例分析
Jan 07 PHP
thinkPHP5.1框架使用SemanticUI实现分页功能示例
Aug 03 PHP
php设计模式之单例模式用法经典示例分析
Sep 20 PHP
PHP cookie与session会话基本用法实例分析
Nov 18 PHP
PHP执行普通shell命令流程解析
Aug 24 PHP
如何用PHP实现多线程编程
May 26 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
?繁体转换的class
2006/10/09 PHP
如何在php中正确的使用json
2013/08/06 PHP
PHP预定义超全局数组变量小结
2018/08/20 PHP
php探针使用原理和技巧讲解
2019/09/17 PHP
非常有用的40款jQuery 插件推荐(系列二)
2011/12/25 Javascript
js综合应用实例简单的表格统计
2013/09/03 Javascript
JavaScript搜索字符串并将搜索结果返回到字符串的方法
2015/04/06 Javascript
js实现input密码框提示信息的方法(附html5实现方法)
2016/01/14 Javascript
js计算系统当前日期是星期几的方法
2016/07/14 Javascript
Bootstrap table的使用方法
2016/11/02 Javascript
详解JavaScript数组过滤相同元素的5种方法
2017/05/23 Javascript
详解HTTPS 的原理和 NodeJS 的实现
2017/07/04 NodeJs
Vue项目webpack打包部署到服务器的实例详解
2017/07/17 Javascript
JavaScript判断浏览器和hack滚动条的写法
2017/07/23 Javascript
jquery实现下拉菜单的手风琴效果
2017/07/23 jQuery
vue.js项目打包上线的图文教程
2017/11/16 Javascript
如何提升vue.js中大型数据的性能
2019/06/21 Javascript
浅谈vue项目,访问路径#号的问题
2020/08/14 Javascript
前端vue如何使用高德地图
2020/11/05 Javascript
微信小程序实现购物车功能
2020/11/18 Javascript
vue 数据操作相关总结
2020/12/17 Vue.js
Django中传递参数到URLconf的视图函数中的方法
2015/07/18 Python
python遍历序列enumerate函数浅析
2017/10/17 Python
CentOS 6.5中安装Python 3.6.2的方法步骤
2017/12/03 Python
python3+PyQt5实现文档打印功能
2018/04/24 Python
Django实现分页功能
2018/07/02 Python
详解Python_shutil模块
2019/03/15 Python
通过Turtle库在Python中绘制一个鼠年福鼠
2020/02/03 Python
浅谈Python线程的同步互斥与死锁
2020/03/22 Python
美国著名的家居用品购物网站:Bed Bath & Beyond
2018/01/05 全球购物
阿根廷旅游网站:almundo阿根廷
2018/02/12 全球购物
酒店爱岗敬业演讲稿
2014/09/02 职场文书
车辆委托书范本
2014/10/05 职场文书
离婚协议书的范本
2015/01/27 职场文书
同学毕业留言寄语
2015/02/27 职场文书
Python读取和写入Excel数据
2022/04/20 Python