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读取数据库信息的几种方法
May 24 PHP
php 编写安全的代码时容易犯的错误小结
May 20 PHP
使用php shell命令合并图片的代码
Jun 23 PHP
PHP filter_var() 函数 Filter 函数
Apr 25 PHP
19个超实用的PHP代码片段
Mar 14 PHP
php生成shtml类用法实例
Dec 09 PHP
PHP基于MySQL数据库实现对象持久层的方法
Jun 17 PHP
PHP中使用curl伪造IP的简单方法
Aug 07 PHP
PHP查询大量数据内存耗尽问题的解决方法
Oct 28 PHP
PHP单例模式定义与使用实例详解
Feb 06 PHP
php中的单引号、双引号和转义字符详解
Feb 16 PHP
php表单文件iframe异步上传实例讲解
Jul 26 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
很实用的一个完整email发送程序
2006/10/09 PHP
如何在smarty中增加类似foreach的功能自动加载数据
2013/06/26 PHP
ThinkPHP采用GET方式获取中文参数查询无结果的解决方法
2014/06/26 PHP
php操作redis缓存方法分享
2015/06/03 PHP
ucenter中词语过滤原理分析
2016/07/13 PHP
phpMyAdmin通过密码漏洞留后门文件
2018/11/20 PHP
PHP设计模式之 策略模式Strategy详解【对象行为型】
2020/05/01 PHP
JS写的数字拼图小游戏代码[学习参考]
2008/10/29 Javascript
JAVASCRIPT keycode总结
2009/02/04 Javascript
使用Jquery搭建最佳用户体验的登录页面之记住密码自动登录功能(含后台代码)
2011/07/10 Javascript
DOM和XMLHttpRequest对象的属性和方法整理
2012/01/04 Javascript
JavaScript获取鼠标移动时的坐标(兼容IE8、chome谷歌、Firefox)
2014/09/13 Javascript
跟我学习javascript的隐式强制转换
2015/11/16 Javascript
jQuery简单操作cookie的插件实例
2016/01/13 Javascript
ES6通过babel转码使用webpack使用import关键字
2016/12/13 Javascript
jquery插件锦集【推荐】
2016/12/16 Javascript
浅谈Angular 中何时取消订阅
2017/11/22 Javascript
微信小程序实现点击效果
2019/06/21 Javascript
VUE实现密码验证与提示功能
2019/10/18 Javascript
vue keep-alive 动态删除组件缓存的例子
2019/11/04 Javascript
js实现3D旋转效果
2020/08/18 Javascript
Vue按时间段查询数据组件使用详解
2020/08/21 Javascript
详解vue 组件注册
2020/11/20 Vue.js
在Python中测试访问同一数据的竞争条件的方法
2015/04/23 Python
Python实现监控Nginx配置文件的不同并发送邮件报警功能示例
2019/02/26 Python
pyQT5 实现窗体之间传值的示例
2019/06/20 Python
Flask框架钩子函数功能与用法分析
2019/08/02 Python
keras训练曲线,混淆矩阵,CNN层输出可视化实例
2020/06/15 Python
python 利用opencv实现图像网络传输
2020/11/12 Python
检测用户浏览器是否支持CSS3的方法
2009/08/29 HTML / CSS
css3实现3D文本悬停改变效果的示例代码
2019/01/16 HTML / CSS
详解使用HTML5的classList属性操作CSS类
2017/10/13 HTML / CSS
Html5内唤醒百度、高德APP的实现示例
2019/05/20 HTML / CSS
2015年财务部工作总结
2015/04/10 职场文书
2015年房产经纪人工作总结
2015/05/15 职场文书
《鸟的天堂》教学反思
2016/02/19 职场文书