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 5.0对象模型深度探索之绑定
Sep 05 PHP
模仿OSO的论坛(五)
Oct 09 PHP
phpfans留言版用到的install.php
Jan 04 PHP
php过滤所有恶意字符(批量过滤post,get敏感数据)
Mar 18 PHP
PHP函数addslashes和mysql_real_escape_string的区别
Apr 22 PHP
PHP中文编码小技巧
Dec 25 PHP
php实现屏蔽掉黑帽SEO的搜索关键字
Apr 15 PHP
php metaphone()函数及php localeconv() 函数实例解析
May 15 PHP
Yii2实现让关联字段支持搜索功能的方法
Aug 10 PHP
php原生导出excel文件的两种方法(推荐)
Nov 19 PHP
PHP简单实现欧拉函数Euler功能示例
Nov 06 PHP
PHP Class SoapClient not found解决方法
Jan 20 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获取当前页面完整URL的实现代码
2013/06/10 PHP
ThinkPHP行为扩展Behavior应用实例详解
2014/07/22 PHP
Javascript 布尔型分析
2008/12/22 Javascript
理解Javascript_14_函数形式参数与arguments
2010/10/20 Javascript
jQuery+HTML5实现手机摇一摇换衣特效
2015/06/05 Javascript
js实现文件上传表单域美化特效
2015/11/02 Javascript
jQuery ajax调用后台aspx后台文件的两种常见方法(不是ashx)
2016/06/28 Javascript
微信小程序 wx.request(接口调用方式)详解及实例
2016/11/23 Javascript
jQuery实现字符串全部替换的方法
2016/12/12 Javascript
Jquery Easyui搜索框组件SearchBox使用详解(19)
2016/12/17 Javascript
js实现悬浮窗效果(支持拖动)
2017/03/09 Javascript
详解AngularJS 模块化
2017/06/14 Javascript
JavaScript输入框字数实时统计更新
2017/06/17 Javascript
jQuery中复合选择器简单用法示例
2018/03/31 jQuery
详解关于Vue2.0路由开启keep-alive时需要注意的地方
2018/09/18 Javascript
JavaScript惰性求值的一种实现方法示例
2019/01/11 Javascript
vue 中 beforeRouteEnter 死循环的问题
2019/04/23 Javascript
React优化子组件render的使用
2019/05/12 Javascript
layer ui插件显示tips时,修改字体颜色的实现方法
2019/09/11 Javascript
VUE和Antv G6实现在线拓扑图编辑操作
2020/10/28 Javascript
[08:07]DOTA2每周TOP10 精彩击杀集锦vol.8
2014/06/25 DOTA
python3+PyQt5重新实现自定义数据拖放处理
2018/04/19 Python
python 多线程中子线程和主线程相互通信方法
2018/11/09 Python
使用批处理脚本自动生成并上传NuGet包(操作方法)
2019/11/19 Python
OpenCV+Python3.5 简易手势识别的实现
2020/12/21 Python
美国创意礼品网站:UncommonGoods
2017/02/03 全球购物
经理秘书求职自荐信范文
2014/03/23 职场文书
协议书格式
2014/04/23 职场文书
医学专业毕业生求职信
2014/06/20 职场文书
乡镇创先争优活动总结
2014/08/28 职场文书
广告业务员岗位职责
2015/02/13 职场文书
2015年业务工作总结范文
2015/04/10 职场文书
django 认证类配置实现
2021/11/11 Python
vue数据字典取键值项目的字典问题
2022/04/12 Vue.js
Java 多态分析
2022/04/26 Java/Android
MySQL实现字段分割一行转多行的示例代码
2022/07/07 MySQL