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 allow_url_include的应用和解释
Apr 22 PHP
PHP JSON 数据解析代码
May 26 PHP
PHP使用数组实现队列
Feb 05 PHP
php笔记之:文章中图片处理的使用
Apr 26 PHP
php接口和抽象类使用示例详解
Mar 02 PHP
php Imagick获取图片RGB颜色值
Jul 28 PHP
php采用file_get_contents代替使用curl实例
Nov 07 PHP
PHP调试函数和日志记录函数分享
Jan 31 PHP
php连接mysql数据库
Mar 21 PHP
详解PHP如何更好的利用PHPstorm的自动提示
Aug 18 PHP
PHP面向对象程序设计(OOP)之方法重写(override)操作示例
Dec 21 PHP
PHP实现创建以太坊钱包转账等功能
Apr 21 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 FOR MYSQL 代码生成助手(根据Mysql里的字段自动生成类文件的)
2011/07/23 PHP
Zend的AutoLoad机制介绍
2012/09/27 PHP
thinkPHP中_initialize方法实例分析
2016/12/05 PHP
PHP机器学习库php-ml的简单测试和使用方法
2017/07/14 PHP
django中的ajax组件教程详解
2018/10/18 PHP
jquery load()在firefox(火狐)下显示不正常的解决方法
2011/04/05 Javascript
jquery动画3.创建一个带遮罩效果的图片走廊
2012/08/24 Javascript
jQuery中对节点进行操作的相关介绍
2013/04/16 Javascript
js中substring和substr的详细介绍与用法
2013/08/29 Javascript
jquery easyui使用心得
2014/07/07 Javascript
深入理解JQuery循环绑定事件
2016/06/02 Javascript
JavaScript中的Array 对象(数组对象)
2016/06/02 Javascript
JavaScript闭包与作用域链实例分析
2019/01/21 Javascript
jQuery中each和js中forEach的区别分析
2019/02/27 jQuery
Vue CLI3.0中使用jQuery和Bootstrap的方法
2019/02/28 jQuery
Vue 实现监听窗口关闭事件,并在窗口关闭前发送请求
2020/09/01 Javascript
Python处理文本文件中控制字符的方法
2017/02/07 Python
AI人工智能 Python实现人机对话
2017/11/13 Python
详解flask入门模板引擎
2018/07/18 Python
对Python闭包与延迟绑定的方法详解
2019/01/07 Python
python抢购软件/插件/脚本附完整源码
2021/03/04 Python
基于Html5实现的语音搜索功能
2019/05/13 HTML / CSS
GEOX鞋美国官方网站:意大利会呼吸的鞋
2017/07/12 全球购物
物理系毕业生自荐信
2013/11/01 职场文书
大学毕业生文采飞扬的自我鉴定
2013/12/03 职场文书
个人简历自我评价范文
2014/02/04 职场文书
求职自荐信怎么写
2014/03/06 职场文书
中学生操行评语大全
2014/04/24 职场文书
企业仓管员岗位职责
2014/06/15 职场文书
建筑安全生产目标责任书
2014/07/23 职场文书
2014年中秋节活动总结
2014/08/29 职场文书
2014保险公司内勤工作总结
2014/12/16 职场文书
关于成立领导小组的通知
2015/04/23 职场文书
安全教育日主题班会
2015/08/13 职场文书
2016年教师党员承诺书范文
2016/03/24 职场文书
解决MySQL存储时间出现不一致的问题
2021/04/28 MySQL