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 高级课程笔记 面向对象
Jun 21 PHP
封装一个PDO数据库操作类代码
Sep 09 PHP
10个可以简化php开发过程的MySQL工具
Apr 11 PHP
PHP 防恶意刷新实现代码
May 16 PHP
destoon调用自定义模板及样式的公告栏
Jun 21 PHP
ThinkPHP 3.2 版本升级了哪些内容
Mar 05 PHP
PHP微信开发之二维码生成类
Jun 26 PHP
如何解决PHP使用mysql_query查询超大结果集超内存问题
Mar 14 PHP
thinkphp在低版本Nginx 下支持PATHINFO的方法分享
May 27 PHP
PHP给源代码加密的几种方法汇总(推荐)
Feb 06 PHP
laravel中短信发送验证码的实现方法
Apr 25 PHP
php实现将数组或对象写入到文件的方法小结【三种方法】
Apr 22 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
火影忍者:三大瞳力之一的白眼,为什么没有写轮眼那么出色?
2020/03/02 日漫
用php过滤危险html代码的函数
2008/07/22 PHP
php header Content-Type类型小结
2011/07/03 PHP
php URL验证正则表达式
2011/07/19 PHP
摘自织梦CMS中的图片处理类
2015/08/08 PHP
Yii2 assets清除缓存的方法
2016/05/16 PHP
PHP标准库(PHP SPL)详解
2019/03/16 PHP
laravel请求参数校验方法
2019/10/10 PHP
javascript中字符串替换函数replace()方法与c# 、vb 替换有一点不同
2010/06/25 Javascript
使用jQuery+HttpHandler+xml模拟一个三级联动的例子
2011/08/09 Javascript
基于jQuery实现音乐播放试听列表
2016/04/14 Javascript
javascript运算符——位运算符全面介绍
2016/07/14 Javascript
vue.js入门教程之基础语法小结
2016/09/01 Javascript
JavaScript 基础表单验证示例(纯Js实现)
2017/07/20 Javascript
微信小程序ibeacon三点定位详解
2018/10/31 Javascript
ES6中的迭代器、Generator函数及Generator函数的异步操作方法
2019/05/12 Javascript
vue动态绘制四分之三圆环图效果
2019/09/03 Javascript
Vue.js标签页组件使用方法详解
2019/10/19 Javascript
vue项目配置同一局域网可使用ip访问的操作
2020/10/23 Javascript
python通过定义一个类实例作为ftp回调方法
2015/05/04 Python
Python的Socket编程过程中实现UDP端口复用的实例分享
2016/03/19 Python
python实现应用程序在右键菜单中添加打开方式功能
2017/01/09 Python
python cx_Oracle的基础使用方法(连接和增删改查)
2017/11/19 Python
pip install python 快速安装模块的教程图解
2019/10/08 Python
Python实现的北京积分落户数据分析示例
2020/03/27 Python
xadmin使用formfield_for_dbfield函数过滤下拉表单实例
2020/04/07 Python
Opencv图像处理:如何判断图片里某个颜色值占的比例
2020/06/03 Python
解决Python安装cryptography报错问题
2020/09/03 Python
英国著名的茶叶品牌:Whittard of Chelsea
2016/09/22 全球购物
美国网上眼镜供应商:LEOTONY(眼镜、RX太阳镜和太阳镜)
2017/10/31 全球购物
全球500多个机场的接送服务:Suntransfers
2019/06/03 全球购物
美国名表在线商城:Ashford(支持中文)
2019/09/24 全球购物
2014年国庆节活动总结
2014/08/26 职场文书
就业协议书
2014/09/12 职场文书
节水宣传标语口号
2015/12/26 职场文书
Minikube搭建Kubernetes集群
2022/03/31 Servers