java addslashes_php addslashes 函数详细分析说明

语法: string addslashes(string str);

内容说明

本函数使需要让数据库处理的字符串中引号的部份加上斜线,以供数据库查询 (query) 能顺利运作。这些会被改的字符包括单引号 (')、双引号 (")、反斜线 backslash (\) 以及空字符 NUL (the null byte)。

================================================================

1,表单提交中addslashes的表现。

首先要看get_magic_quotes_gpc()的值,一般为 1 。这时候从 提交的内容会自动加上斜线。

比如输入 ' 变成 \' , " 变成 \" , \ 变成 \\

例子:

PHP代码:

test

default text

echo get_magic_quotes_gpc().

" A ".$_POST['message'].

" B ".stripslashes($_POST['message']);

?>

输入:include('/home/me/myfile');

输出:1 A include(\'/home/me/myfile\'); B include('/home/me/myfile');

总结:get_magic_quotes_gpc()等于1的情况下,如果不输入数据库,那你得到的结果是加了斜线的。

2,提交输入数据库时addslashes的表现。

例子:

PHP代码:

test

default text

require_once('includes/common.php');

$db->query("INSERT INTO `testtable` ( id , content ) VALUES ('1' , '".$_POST['message']."')");

$query=$db->query("select * from `testtable` where `id`= 1;");

$Result=$db->fetch_array($query);

echo get_magic_quotes_gpc().

" A ".$_POST['message'].

" B ".$Result['content'];

?>

输入:include('/home/me/myfile');

输出:1 A include(\'/home/me/myfile\'); B include('/home/me/myfile');

总结:get_magic_quotes_gpc()等于1的情况下,如果输入数据库后,再从数据库直接读取的时候,你不做任何修改就可以得到输入的字符串。

3, get_magic_quotes_gpc()

get_magic_quotes_gpc()在服务器是的设置是不能runtime修改的,也就是说,你必须在你的网页代码中预先考虑好不同的情况,不然,当你提交数据的时候,你还不知道服务器给你加了斜线没有。以下两个网上流行的函数可能是大家需要的,个人喜欢第二个:

PHP代码:

function my_addslashes( $message ){

if(get_magic_quotes_gpc()== 1 ){

return $message;

}else{

if(is_array($message)==true){

while(list($key,$value)=each($message)){

$message[$key]=my_addslashes($value);

}

return $message;

}else{

return addslashes($message);

}

}

}

PHP代码:

function my_addslashes($data){

if(!get_magic_quotes_gpc()) {

return is_array($data)?array_map('AddSlashes',$data):addslashes($data);

} else {

Return $data;

}

}

简单的解释就是,如果get_magic_quotes_gpc()等于 1 (服务器默认设置为 1 ),那我们的字符串是可以直接入库的,不修改。不然,我们才用addslashes函数。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值