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实现框架(二)
Oct 09 PHP
PHP数组对比函数,存在交集则返回真,否则返回假
Feb 03 PHP
PHP数组及条件,循环语句学习
Nov 11 PHP
探讨:如何通过stats命令分析Memcached的内部状态
Jun 14 PHP
解析左右值无限分类的实现算法
Jun 20 PHP
php中curl、fsocket、file_get_content三个函数的使用比较
May 09 PHP
Laravel中使用阿里云OSS Composer包分享
Feb 10 PHP
Laravel 5框架学习之向视图传送数据(进阶篇)
Apr 08 PHP
php的crc32函数使用时需要注意的问题(不然就是坑)
Apr 21 PHP
PHP判断是否是微信打开,浏览器打开的方法
Mar 14 PHP
PHP抽象类基本用法示例
Dec 28 PHP
php实现获取近几日、月时间示例
Jul 06 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函数method_exists()与is_callable()的区别
2013/06/21 PHP
destoon设置自定义搜索的方法
2014/06/21 PHP
php操作memcache缓存方法分享
2015/06/03 PHP
详解Grunt插件之LiveReload实现页面自动刷新(两种方案)
2015/07/31 PHP
PHP环境搭建(php+Apache+mysql)
2016/11/14 PHP
PHP十六进制颜色随机生成器功能示例
2017/07/24 PHP
PHP单元测试配置与使用方法详解
2019/12/27 PHP
HTA版JSMin(省略修饰语若干)基于javascript语言编写
2009/12/24 Javascript
基于jQuery实现图片的前进与后退功能
2013/04/24 Javascript
js Select下拉列表框进行多选、移除、交换内容的具体实现方法
2013/08/13 Javascript
jQuery实现摸拟alert提示框
2016/05/22 Javascript
JS添加删除DIV的简单实例
2016/07/08 Javascript
浅谈javascript:两种注释,声明变量,定义函数
2016/09/29 Javascript
bootstrap自定义样式之bootstrap实现侧边导航栏功能
2018/09/10 Javascript
深入理解Angularjs 脏值检测
2018/10/12 Javascript
Vue清除定时器setInterval优化方案分享
2020/07/21 Javascript
Python编程中对文件和存储器的读写示例
2016/01/25 Python
Python安装模块的常见问题及解决方法
2018/02/05 Python
python 爬虫 批量获取代理ip的实例代码
2018/05/22 Python
Python微信操控itchat的方法
2019/05/31 Python
Python实现打印实心和空心菱形
2019/11/23 Python
python针对Oracle常见查询操作实例分析
2020/04/30 Python
在TensorFlow中实现矩阵维度扩展
2020/05/22 Python
python实现计算器简易版
2020/12/17 Python
使用jquery实现HTML5响应式导航菜单教程
2014/04/02 HTML / CSS
校园广播稿500字
2014/02/04 职场文书
分家协议书
2014/04/21 职场文书
作文批改评语大全
2014/04/23 职场文书
创先争优标语
2014/06/27 职场文书
学雷锋活动倡议书
2014/08/30 职场文书
教师节寄语2015
2015/03/23 职场文书
2016年毕业实习心得体会范文
2015/10/09 职场文书
酒吧七夕情人节宣传语
2015/11/24 职场文书
导游词之开封禹王台风景区
2019/12/02 职场文书
Python实现仓库管理系统
2022/05/30 Python
CentOS7环境下MySQL8常用命令小结
2022/06/10 Servers