php addslashes 函数详细分析说明

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

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


首先要看get_magic_quotes_gpc()的值,一般为 1 。这时候从

<?PHP
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代码:
<div class="codetitle"><a style="CURSOR: pointer" data="88172" class="copybut" id="copybut88172" onclick="doCopy('code88172')"> 代码如下:
<div class="codebody" id="code88172">
test




<?PHP
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代码:
<div class="codetitle"><a style="CURSOR: pointer" data="66145" class="copybut" id="copybut66145" onclick="doCopy('code66145')"> 代码如下:
<div class="codebody" id="code66145">
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代码:
<div class="codetitle"><a style="CURSOR: pointer" data="5666" class="copybut" id="copybut5666" onclick="doCopy('code5666')"> 代码如下:<div class="codebody" id="code5666">
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函数

addslashes

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...