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&java(三)
Oct 09 PHP
PHP 实例化类的一点摘记
Mar 23 PHP
ThinkPHP模板IF标签用法详解
Jul 01 PHP
11个PHPer必须要了解的编程规范
Sep 22 PHP
php+mysql删除指定编号员工信息的方法
Jan 14 PHP
PHP基于单例模式编写PDO类的方法
Sep 13 PHP
php使用str_shuffle()函数生成随机字符串的方法分析
Feb 17 PHP
PHP自定义函数实现数组比较功能示例
Oct 19 PHP
Yii2压缩PHP中模板代码的输出问题
Aug 28 PHP
CentOS7.0下安装PHP5.6.30服务的教程详解
Sep 29 PHP
java解析json方法总结
May 16 PHP
php实现通过stomp协议连接ActiveMQ操作示例
Feb 23 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 采集书并合成txt格式的实现代码
2009/03/01 PHP
PHP 解决utf-8和gb2312编码转换问题
2010/03/18 PHP
基于Zookeeper的使用详解
2013/05/02 PHP
PHP  Yii清理缓存的实现方法
2016/11/10 PHP
node.js中的path.extname方法使用说明
2014/12/09 Javascript
javascript上下方向键控制表格行选中并高亮显示的方法
2015/02/13 Javascript
详谈javascript异步编程
2016/02/21 Javascript
创建一般js对象的几种方式
2017/01/19 Javascript
js实现符合国情的日期插件详解
2017/01/19 Javascript
BootStrap table删除指定行的注意事项(笔记整理)
2017/02/05 Javascript
JavaScript实现两个select下拉框选项左移右移
2017/03/09 Javascript
jQuery.ajax向后台传递数组问题的解决方法
2017/05/12 jQuery
详解vue-cli项目中的proxyTable跨域问题小结
2018/02/09 Javascript
使用Vue.js和Element-UI做一个简单登录页面的实例
2018/02/23 Javascript
浅谈vue父子组件怎么传值
2018/07/21 Javascript
JavaScript 变量,数据类型基础实例详解【变量、字符串、数组、对象等】
2020/01/04 Javascript
js实现有趣的倒计时效果
2021/01/19 Javascript
Python内置函数的用法实例教程
2014/09/08 Python
python操作CouchDB的方法
2014/10/08 Python
Python实现自动为照片添加日期并分类的方法
2017/09/30 Python
Python开发最牛逼的IDE——pycharm
2018/08/01 Python
为什么str(float)在Python 3中比Python 2返回更多的数字
2018/10/16 Python
Python 新建文件夹与复制文件夹内所有内容的方法
2018/10/27 Python
在ubuntu16.04中将python3设置为默认的命令写法
2018/10/31 Python
使用PIL(Python-Imaging)反转图像的颜色方法
2019/01/24 Python
详解pytorch 0.4.0迁移指南
2019/06/16 Python
Python3 批量扫描端口的例子
2019/07/25 Python
python实现自动化报表功能(Oracle/plsql/Excel/多线程)
2019/12/02 Python
centos7中安装python3.6.4的教程
2019/12/11 Python
JAVA SWT事件四种写法实例解析
2020/06/05 Python
俄罗斯达美乐比萨外送服务:Domino’s Pizza
2020/12/18 全球购物
简单说下OSPF的操作过程
2014/08/13 面试题
会计找工作求职信范文
2013/12/09 职场文书
2014年小学少先队工作总结
2014/12/18 职场文书
八年级地理课件资料及考点知识分享
2019/08/30 职场文书
MySQL的意向共享锁、意向排它锁和死锁
2022/07/15 MySQL