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 相关文章推荐
Apache2中实现多网站域名绑定的实现方法
Jun 01 PHP
php中一个完整表单处理实现代码
Nov 10 PHP
php中stream(流)的用法
Mar 25 PHP
php实现基于微信公众平台开发SDK(demo)扩展的方法
Dec 22 PHP
php删除指定目录的方法
Apr 03 PHP
PHP生成唯一订单号
Jul 05 PHP
PHP实现带重试功能的curl连接示例
Jul 28 PHP
PHP5.4起内置web服务器使用方法
Aug 09 PHP
php 时间time与日期date之间的使用详解及区别
Nov 07 PHP
thinkPHP5.0框架配置格式、加载解析与读取方法
Mar 17 PHP
一文看懂PHP进程管理器php-fpm
Jun 01 PHP
基于PHP实现用户在线状态检测
Nov 10 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地址获取函数代码(端口等) 推荐
2010/05/15 PHP
zf框架的db类select查询器join链表使用示例(zend框架)
2014/03/14 PHP
使用Appcan客户端自动更新PHP版本号(全)
2015/07/31 PHP
crontab无法执行php的解决方法
2016/01/25 PHP
Symfony的安装和配置方法
2016/03/17 PHP
php版微信开发Token验证失败或请求URL超时问题的解决方法
2016/09/23 PHP
PHP缩略图生成和图片水印制作
2017/01/07 PHP
CI框架(CodeIgniter)操作redis的方法详解
2018/01/25 PHP
捕获关闭窗口的脚本
2009/01/10 Javascript
clientX,pageX,offsetX,x,layerX,screenX,offsetLeft区别分析
2010/03/12 Javascript
基于prototype扩展的JavaScript常用函数库
2010/11/30 Javascript
jquery获取特定name所有选中的checkbox,支持IE9标准模式
2013/03/18 Javascript
使用javascript实现页面定时跳转总结篇
2013/09/21 Javascript
js几秒以后倒计时跳转示例
2013/12/26 Javascript
JS文本获得焦点清除文本文字的示例代码
2014/01/13 Javascript
Jquery获取元素的父容器对象示例代码
2014/02/10 Javascript
javaScript中两个等于号和三个等于号之间的区别介绍
2014/06/27 Javascript
Javascript之BOM(window对象)详解
2016/05/25 Javascript
Node.js的Koa框架上手及MySQL操作指南
2016/06/13 Javascript
jQuery和JavaScript节点插入元素的方法对比
2016/11/18 Javascript
canvas实现探照灯效果
2017/02/07 Javascript
ES6新数据结构Map功能与用法示例
2017/03/31 Javascript
解决iview打包时UglifyJs报错的问题
2018/03/07 Javascript
深入浅析Node环境和浏览器的区别
2018/08/14 Javascript
[02:11]2016国际邀请赛中国区预选赛最美TA采访现场玩家
2016/06/28 DOTA
Python中random模块生成随机数详解
2016/03/10 Python
Python函数和模块的使用总结
2019/05/20 Python
python数据库开发之MongoDB安装及Python3操作MongoDB数据库详细方法与实例
2020/03/18 Python
python设置中文界面实例方法
2020/10/27 Python
图片上传插件ImgUploadJS:用HTML5 File API 实现截图粘贴上传、拖拽上传
2016/01/20 HTML / CSS
HTML5 解决苹果手机不能自动播放音乐问题
2017/12/27 HTML / CSS
俄罗斯最大的隐形眼镜销售网站:Ochkov.Net
2021/02/07 全球购物
生产班组长岗位职责
2014/01/05 职场文书
商场客服专员岗位职责
2014/06/13 职场文书
尼克胡哲观后感
2015/06/08 职场文书
手把手教你怎么用Python实现zip文件密码的破解
2021/05/27 Python