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
IIS6的PHP最佳配置方法
Mar 19 PHP
mysql limit查询优化分析
Nov 12 PHP
深入PHP nl2br()格式化输出的详解
Jun 05 PHP
获取URL文件名后缀
Oct 24 PHP
php中并发读写文件冲突的解决方案
Oct 25 PHP
Yii Framework框架获取分类下面的所有子类方法
Jun 20 PHP
php采用ajax数据提交post与post常见方法总结
Nov 10 PHP
thinkphp中空模板与空模块的用法实例
Nov 26 PHP
php 反斜杠处理函数addslashes()和stripslashes()实例详解
Dec 25 PHP
PHP使用PDO调用mssql存储过程的方法示例
Oct 07 PHP
关于Yii2框架跑脚本时内存泄漏问题的分析与解决
Dec 01 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截取字符串函数substr,iconv_substr,mb_substr示例以及优劣分析
2014/06/10 PHP
php对包含html标签的字符串进行截取的函数分享
2014/06/19 PHP
smarty内置函数config_load用法实例
2015/01/22 PHP
PHP中你应该知道的require()文件包含的正确用法
2015/06/12 PHP
PHP中$_SERVER使用说明
2015/07/05 PHP
如何解决phpmyadmin导入数据库文件最大限制2048KB
2015/10/09 PHP
PHP+原生态ajax实现的省市联动功能详解
2017/08/15 PHP
使用PHPUnit进行单元测试并生成代码覆盖率报告的方法
2019/03/08 PHP
javascript Onunload与Onbeforeunload使用小结
2009/12/31 Javascript
js去字符串前后空格5种实现方法及比较
2013/04/03 Javascript
JQuery获取与设置HTML元素的内容或文本的实现代码
2014/06/20 Javascript
jQuery插件slick实现响应式移动端幻灯片图片切换特效
2015/04/12 Javascript
js正则表达式最长匹配(贪婪匹配)和最短匹配(懒惰匹配)用法分析
2016/12/27 Javascript
JavaScript该如何学习 怎样轻松学习JavaScript
2017/06/12 Javascript
微信小程序 循环及嵌套循环的使用总结
2017/09/26 Javascript
小程序封装路由文件和路由方法(5种全解析)
2019/05/26 Javascript
一些可能会用到的Node.js面试题
2019/06/15 Javascript
Vue路由之JWT身份认证的实现方法
2019/08/26 Javascript
用js编写留言板
2020/03/17 Javascript
vue实现点击按钮“查看详情”弹窗展示详情列表操作
2020/09/09 Javascript
python实现备份目录的方法
2015/08/03 Python
python 按照固定长度分割字符串的方法小结
2018/04/30 Python
Python 忽略warning的输出方法
2018/10/18 Python
Python使用pandas对数据进行差分运算的方法
2018/12/22 Python
提高python代码运行效率的一些建议
2020/09/29 Python
中专生职业生涯规划书范文
2013/12/29 职场文书
《蚂蚁和蝈蝈》教学反思
2014/02/24 职场文书
小学教师自我鉴定范文
2014/03/20 职场文书
工会趣味活动方案
2014/08/18 职场文书
师德师风的心得体会
2014/09/02 职场文书
房地产营销活动策划方案
2014/09/15 职场文书
2014年扶贫帮困工作总结
2014/12/09 职场文书
因身体原因离职的辞职信范文
2015/05/12 职场文书
观看建国大业观后感
2015/06/01 职场文书
详解Android中的TimePickerView(时间选择器)的用法
2022/04/30 Java/Android
PostgreSQL怎么创建分区表详解
2022/06/25 PostgreSQL