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 验证码的实现代码
Jul 17 PHP
php 错误处理经验分享
Oct 11 PHP
PHP系统命令函数使用分析
Jul 05 PHP
php中文验证码实现方法
Jun 18 PHP
在PHP中使用FastCGI解析漏洞及修复方案
Nov 10 PHP
thinkPHP中分页用法实例分析
Dec 26 PHP
PHP中的use关键字及文件的加载详解
Nov 28 PHP
Joomla框架实现字符串截取的方法示例
Jul 18 PHP
PHP回调函数与匿名函数实例详解
Aug 16 PHP
PHP实现的权重算法示例【可用于游戏根据权限来随机物品】
Feb 15 PHP
php数组遍历类与用法示例
May 24 PHP
php+laravel依赖注入知识点总结
Nov 04 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 身份证号验证函数
2009/05/07 PHP
php写的AES加密解密类分享
2014/06/20 PHP
phpMyAdmin安装并配置允许空密码登录
2015/07/04 PHP
php实现HTML实体编号与非ASCII字符串相互转换类实例
2016/11/02 PHP
PHP实现多图上传和单图上传功能
2018/05/17 PHP
使用laravel根据用户类型来显示或隐藏字段
2019/10/17 PHP
不要在cookie中使用特殊字符的原因分析
2010/07/13 Javascript
fmt:formatDate的输出格式详解
2014/01/09 Javascript
PHP+jQuery+Ajax+Mysql如何实现发表心情功能
2015/08/06 Javascript
js实现随屏幕滚动的带缓冲效果的右下角广告代码
2015/09/04 Javascript
图解JavaScript中的this关键字
2020/05/28 Javascript
AngularJS整合Springmvc、Spring、Mybatis搭建开发环境
2016/02/25 Javascript
IScroll5 中文API参数说明和调用方法
2016/05/21 Javascript
js浏览器html5表单验证
2016/10/17 Javascript
JS基于递归实现倒计时效果的方法
2016/11/26 Javascript
jQuery 控制文本框自动缩小字体填充
2017/06/16 jQuery
jQuery选择器_动力节点Java学院整理
2017/07/05 jQuery
说说AngularJS中的$parse和$eval的用法
2017/09/14 Javascript
Vue实现本地购物车功能
2018/12/05 Javascript
JS实现简单贪吃蛇小游戏
2020/10/28 Javascript
Python多线程编程(五):死锁的形成
2015/04/05 Python
Python利用Nagios增加微信报警通知的功能
2016/02/18 Python
Python selenium 三种等待方式详解(必会)
2016/09/15 Python
Python 实现子类获取父类的类成员方法
2019/01/11 Python
django2笔记之路由path语法的实现
2019/07/17 Python
Python如何调用外部系统命令
2019/08/07 Python
Python批量安装卸载1000个apk的方法
2020/04/10 Python
在pycharm中创建django项目的示例代码
2020/05/28 Python
全球最大的在线旅游公司:Expedia
2017/11/16 全球购物
电子商务个人职业生涯规划范文
2014/02/12 职场文书
《曹刿论战》教学反思
2014/03/02 职场文书
小学绿色学校申报材料
2014/08/23 职场文书
班主任培训研修日志
2015/11/13 职场文书
60条职场经典语录,总有一条能触动你的心
2019/08/21 职场文书
Java9新特性对HTTP2协议支持与非阻塞HTTP API
2022/03/16 Java/Android
《传颂之物 虚伪的假面》BD发售宣传CM公开
2022/04/04 日漫