当前位置: 首页 > 图文教程 > 网络编程 > PHP > php addslashes 函数详细分析说明

PHP
PHP获取网卡地址的代码
生成卡号php代码
PHP循环获取GET和POST值的代码
php实现的在线人员函数库
也谈php网站在线人数统计
php下使用以下代码连接并测试
PHP程序员编程注意事项
Smarty安装配置方法
php5 mysql分页实例代码
php设计模式介绍之值对象模式
修改Zend引擎实现PHP源码加密的原理及实践
php zend解密软件绿色版测试可用
snoopy PHP版的网络客户端提供本地下载
mysql 中InnoDB和MyISAM的区别分析小结
Snoopy类使用小例子
学php必收藏的几个经典代码
php采集速度探究总结(原创)
Mysql中limit的用法方法详解与注意事项
PHP下用rmdir实现删除目录的三种方法小结
Gregarius中文日期格式问题解决办法

PHP 中的 php addslashes 函数详细分析说明


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-13   浏览: 233 ::
收藏到网摘: n/a

PHP 中的 addslashes 函数 addslashes -- 字符串加入斜线。 语法: string addslashes(string str);
内容说明
本函数使需要让数据库处理的字符串中引号的部份加上斜线,以供数据库查询 (query) 能顺利运作。这些会被改的字符包括单引号 (')、双引号 (")、反斜线 backslash (\) 以及空字符 NUL (the null byte)。
================================================================
1,表单提交中addslashes的表现。
首先要看get_magic_quotes_gpc()的值,一般为 1 。这时候从 <TEXTAREA> 提交的内容会自动加上斜线。
比如输入 ' 变成 \' , " 变成 \" , \ 变成 \\
例子:
PHP代码:
复制代码 代码如下:

<html><head><title>test</title></head>
<body>
<FORM action="" method=post>
<TEXTAREA name=message rows="18" cols="55" >default text</TEXTAREA>
<INPUT type=submit value=Submit name=submit></FORM>
<?php
echo get_magic_quotes_gpc().
" A ".$_POST['message'].
" B ".stripslashes($_POST['message']);
?>
</body></html>

输入:include('/home/me/myfile');
输出:1 A include(\'/home/me/myfile\'); B include('/home/me/myfile');
总结:get_magic_quotes_gpc()等于1的情况下,如果不输入数据库,那你得到的结果是加了斜线的。
2,提交输入数据库时addslashes的表现。
例子:
PHP代码:
复制代码 代码如下:

<html><head><title>test</title></head>
<body>
<FORM action="" method=post>
<TEXTAREA name=message rows="18" cols="55" >default text</TEXTAREA>
<INPUT type=submit value=Submit name=submit></FORM>
<?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'];
?>
</body></html>

输入: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函数。