stripslashes和addslashes的区别

本文探讨了在向MySQL写入数据时遇到的单引号问题及解决方法,包括使用addslashes和stripslashes的原理与应用场景。同时介绍了PHP的安全特性magic_quotes_gpc及其在不同配置下的工作方式。
摘要由CSDN通过智能技术生成

我们在向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()。

PHP在默认配置情况下是会自动转移 post 过来的数据的,要先stripslashes()之后再存入数据库,也就是说默认:magic_quotes_gpc = On

最后举例:

 

代码

//这是为了防止没有转义的情况下数据库出现插入错误,插入数据到数据库,代码省略

//获取内容,如果服务器没有设置自动转义(特殊字符加上/),就将数据中的特殊符号进行转义(防止数据库中存储出现错误)
 if(!get_magic_quotes_gpc()){
  $onedsContent=addslashes($onedsContent);//这里面是数据,不管有没单引号或者还是变量
 }

------------------------------------------------------------------------------------------------------------------------

//查询出来的内容由于在出入数据库中的时候转义了,这里再转义回来
   $onedsContent=stripslashes($onedsContent);

查看文档:http://baike.baidu.com/link?url=-_IZ2lBVP3EpK215R7PeWNuBh9xeVmeuqBrtK_Q6dXZM1gwXhgTH4aZnuKURzj4e4lWCHVqCxx4WKGSI2i2jxq

扎客小站:www.ezhake.com

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夏天的一朵云

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值