PHP中stripslashes和addslashes的应用

本文深入探讨了在使用MySQL进行数据更新时遇到的单引号处理问题,详细介绍了PHP的安全参数magic_quotes_gpc及其作用,以及如何通过addslashes()和stripslashes()函数来确保数据安全地在数据库间传输。文章最后提供了实用的代码示例和判断magic_quotes_gpc状态的方法,帮助开发者避免潜在的安全风险。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

向mysql写入数据时,如:mysql_query("update tableName set `title`='goaler's blog'");

这个时候,PHP将会报错,因为数据库对单引号过敏。

PHP考虑到其安全性,引入了magic_quotes_gpc = On/Off 这个参数,可以在不做任何处理的情况下就直接将含有单引号的数据插入数据库中。假如magic_quotes_gpc = Off,需要考虑单引号的问题了,不能一味地信任其运行环境。

当magic_quotes_gpc = On时,使用addslashes()处理后的数据在数据库中将以\'形式保存,假如此时直接输出的话,就会发现比自己原先输入的内容多了个(反斜杠)\,这时就需要用到stripslashes()了,它能把addslashes()处理时自动加上去的(反斜杠)\去掉。这跟区别于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()。

既然有了分析,做程序时要怎么办呢?根据以上两种情况,可得:

1、

不管magic_quotes_gpc是On还是Off,咱添加数据时都用addslashes(),当On时,必须使用stripslashes(),Off时则不能用stripslashes()。

  如何判定On还是Off呢?用 function_exists('get_magic_quotes_gpc') && get_magic_quotes_gpc()

2、当magic_quotes_gpc=on时,使用addslashes();否则不使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值