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远程连接MYSQL数据库非常慢的解决方法
Jul 05 PHP
《PHP编程最快明白》第三讲:php数组
Nov 01 PHP
php 操作符与控制结构
Mar 07 PHP
基于session_unset与session_destroy的区别详解
Jun 03 PHP
php GUID生成函数和类
Mar 10 PHP
php结合ajax实现赞、顶、踩功能实例
May 12 PHP
PHP OPP机制和模式简介(抽象类、接口和契约式编程)
Jun 09 PHP
destoon供应信息title调用出公司名称的方法
Aug 22 PHP
PHP结合Mysql数据库实现留言板功能
Mar 04 PHP
PHP explode()函数用法讲解
Feb 15 PHP
php使用mysqli和pdo扩展,测试对比mysql数据库的执行效率完整示例
May 09 PHP
laravel model 两表联查示例
Oct 24 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
smarty实例教程
2006/11/19 PHP
phpExcel导出大量数据出现内存溢出错误的解决方法
2013/02/28 PHP
php微信公众开发之获取周边酒店信息的方法
2014/12/22 PHP
PHP的Yii框架中创建视图和渲染视图的方法详解
2016/03/29 PHP
CentOS 上搭建 PHP7 开发测试环境
2017/02/26 PHP
php实现的统计字数函数定义与使用示例
2017/07/26 PHP
jQuery select控制插件
2009/08/17 Javascript
IE8对JS通过属性和数组遍历解析不一样的地方探讨
2013/05/06 Javascript
JS模拟自动点击的简单实例
2013/08/08 Javascript
jquery防止重复执行动画避免页面混乱
2014/04/22 Javascript
原生JS实现旋转木马式图片轮播插件
2016/04/25 Javascript
轮播图组件js代码
2016/08/08 Javascript
微信小程序 wx:for的使用实例详解
2017/04/27 Javascript
Js实现京东无延迟菜单效果实例(demo)
2017/06/02 Javascript
BootStrap数据表格实例代码
2017/09/13 Javascript
jQuery实现基本隐藏与显示效果的方法详解
2018/09/05 jQuery
详解基于Vue,Nginx的前后端不分离部署教程
2018/12/04 Javascript
JavaScript动画实例之粒子文本的实现方法详解
2020/07/28 Javascript
[37:45]2014 DOTA2国际邀请赛中国区预选赛5.21 DT VS Orenda
2014/05/22 DOTA
Python爬取三国演义的实现方法
2016/09/12 Python
Python算术运算符实例详解
2017/05/31 Python
Python3使用正则表达式爬取内涵段子示例
2018/04/22 Python
Tensorflow中使用tfrecord方式读取数据的方法
2018/06/19 Python
推荐10款最受Python开发者欢迎的Python IDE
2018/09/16 Python
python通用读取vcf文件的类(复制粘贴即可用)
2020/02/29 Python
python正则表达式的懒惰匹配和贪婪匹配说明
2020/07/13 Python
实习生自我鉴定
2013/12/12 职场文书
银行贷款承诺书
2014/03/29 职场文书
《与朱元思书》的教学反思
2014/04/17 职场文书
2014年党员整改措施范文
2014/09/21 职场文书
2015年世界无烟日活动总结
2015/02/10 职场文书
罚款通知怎么写
2015/04/22 职场文书
学校食堂管理制度
2015/08/04 职场文书
2016年全国爱牙日宣传活动总结
2016/04/05 职场文书
浅谈GO中的Channel以及死锁的造成
2022/03/18 Golang
Python&Matlab实现灰狼优化算法的示例代码
2022/03/21 Python