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中在数据库中保存Checkbox数据(2)
Oct 09 PHP
一个odbc连mssql分页的类
Oct 09 PHP
来自phpguru得Php Cache类源码
Apr 15 PHP
php中hashtable实现示例分享
Feb 13 PHP
php可生成缩略图的文件上传类实例
Dec 17 PHP
PHP设计模式之简单投诉页面实例
Feb 24 PHP
Zend Framework动作助手FlashMessenger用法详解
Mar 05 PHP
PHP-FPM实现性能优化
Mar 31 PHP
php利用递归实现删除文件目录的方法
Sep 23 PHP
PHP实现ASCII码与字符串相互转换的方法
Apr 29 PHP
PHP单例模式简单用法示例
Jun 23 PHP
PHP的静态方法与普通方法用法实例分析
Sep 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
php相当简单的分页类
2008/10/02 PHP
PHP判断是否有Get参数的方法
2014/05/05 PHP
PHP删除字符串中非字母数字字符方法总结
2019/01/20 PHP
PHP中抽象类,接口功能、定义方法示例
2019/02/26 PHP
用javascript动态调整iframe高度的方法
2007/03/06 Javascript
javascript函数库-集合框架
2007/04/27 Javascript
关于URL中的特殊符号使用介绍
2011/11/03 Javascript
javaScript复制功能调用实现方案
2012/12/13 Javascript
js离开或刷新页面检测(且兼容FF,IE,Chrome)
2014/03/05 Javascript
封装好的一个万能检测表单的方法
2015/01/21 Javascript
JS实现统计复选框选中个数并提示确定与取消的方法
2015/07/01 Javascript
jQuery实现购物车表单自动结算效果实例
2015/08/10 Javascript
Clipboard.js 无需Flash的JavaScript复制粘贴库
2015/10/02 Javascript
JavaScript面向对象之私有静态变量实例分析
2016/01/14 Javascript
AngularJS自定义服务与fliter的混合使用
2016/11/24 Javascript
Angular4项目中添加i18n国际化插件ngx-translate的步骤详解
2017/07/02 Javascript
详解Ant Design of React的安装和使用方法
2018/12/27 Javascript
OpenLayers3实现对地图的基本操作
2020/09/28 Javascript
python实现汉诺塔方法汇总
2016/07/25 Python
Python设计模式之命令模式简单示例
2018/01/10 Python
如何利用Python模拟GitHub登录详解
2019/07/15 Python
详解python3中用HTMLTestRunner.py报ImportError: No module named 'StringIO'如何解决
2019/08/27 Python
淘宝秒杀python脚本 扫码登录版
2019/09/19 Python
10个很棒的 CSS3 开发工具 推荐
2011/05/16 HTML / CSS
纯CSS3编写的的精美动画进度条(无flash/无图像/无脚本/附源码)
2013/01/07 HTML / CSS
HTML5实现一个能够移动的小坦克示例代码
2013/09/02 HTML / CSS
使用phonegap克隆和删除联系人的实现方法
2017/03/31 HTML / CSS
莫斯科购买书籍网站:Book24
2020/01/12 全球购物
技术经济专业求职信
2014/09/03 职场文书
警察群众路线对照检查材料思想汇报
2014/10/01 职场文书
党员评议个人总结
2014/10/20 职场文书
成本会计实训报告
2014/11/05 职场文书
高三复习计划
2015/01/19 职场文书
法制教育主题班会
2015/08/13 职场文书
某某店铺的开业庆典主持词范本
2019/11/25 职场文书
css3属性选择器 “~”(波浪号) “,”(逗号) “+”(加号)和 “>”(大于号)
2022/04/19 HTML / CSS