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.3.0 安装分析心得
Aug 07 PHP
Php Image Resize图片大小调整的函数代码
Jan 17 PHP
php提示Call-time pass-by-reference has been deprecated in的解决方法[已测]
May 06 PHP
linux环境apache多端口配置虚拟主机的方法深入介绍
Jun 09 PHP
PHP获取php,mysql,apche的版本信息示例代码
Jan 16 PHP
PHP生成自定义长度随机字符串的函数分享
May 04 PHP
PHP高手需要要掌握的知识点
Aug 21 PHP
PHP使用内置函数file_put_contents写入文件及追加内容的方法
Dec 07 PHP
Zend Framework框架实现类似Google搜索分页效果
Nov 25 PHP
详解Yaf框架PHPUnit集成测试方法
Dec 27 PHP
PHP实现微信对账单处理
Oct 01 PHP
tp5(thinkPHP5框架)captcha验证码配置及验证操作示例
May 28 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
CURL的学习和应用(附多线程实现)
2013/06/03 PHP
php递归创建目录的方法
2015/02/02 PHP
php 遍历目录,生成目录下每个文件的md5值并写入到结果文件中
2016/12/12 PHP
基于php伪静态的实现方法解析
2020/07/31 PHP
让浏览器非阻塞加载javascript的几种方法小结
2011/04/25 Javascript
jQuery调用WebService的实现代码
2011/06/19 Javascript
jquery.Ajax()方法调用Asp.Net后台的方法解析
2014/02/13 Javascript
JavaScript实现设计模式中的单例模式的一些技巧总结
2016/05/17 Javascript
javascript之Boolean类型对象
2016/06/07 Javascript
全面解析JS字符串和正则表达式中的match、replace、exec等函数
2016/07/01 Javascript
AngularJS 指令详细介绍
2016/07/27 Javascript
浅谈angularjs $http提交数据探索
2017/01/20 Javascript
js随机生成一个验证码
2017/06/01 Javascript
layer子层给父层页面元素赋值,以达到向父层页面传值的效果实例
2017/09/22 Javascript
React Native使用Modal自定义分享界面的示例代码
2017/10/31 Javascript
JS加密插件CryptoJS实现AES加密操作示例
2018/08/16 Javascript
vue axios数据请求get、post方法及实例详解
2018/09/11 Javascript
webpack4.0+vue2.0利用批处理生成前端单页或多页应用的方法
2019/06/28 Javascript
基于javascript canvas实现五子棋游戏
2020/07/08 Javascript
[59:59]EG vs IG 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
Python使用剪切板的方法
2017/06/06 Python
python实现可视化动态CPU性能监控
2018/06/21 Python
Python3.5以上版本lxml导入etree报错的解决方案
2019/06/26 Python
python二维键值数组生成转json的例子
2019/12/06 Python
在tensorflow下利用plt画论文中loss,acc等曲线图实例
2020/06/15 Python
python3获取控制台输入的数据的具体实例
2020/08/16 Python
Python之多进程与多线程的使用
2021/02/23 Python
html5文本内容_动力节点Java学院整理
2017/07/11 HTML / CSS
Mytheresa英国官网:拥有160多个奢侈品品牌
2016/10/09 全球购物
英国第一的市场和亚马逊替代品:OnBuy
2019/03/16 全球购物
《再别康桥》教学反思
2014/02/12 职场文书
中国梦演讲稿开场白
2014/08/28 职场文书
小学教师教育随笔
2015/08/14 职场文书
导游词之张家界
2019/10/31 职场文书
上帝为你开了一扇窗之Tkinter常用函数详解
2021/06/02 Python
Go gRPC进阶教程gRPC转换HTTP
2022/06/16 Golang