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

PHP
php 多线程上下文中安全写文件实现代码
PHP类的使用 实例代码讲解
用php实现让页面只能被百度gogole蜘蛛访问的方法
php 学习笔记
PHP编程过程中需要了解的this,self,parent的区别
php 操作excel文件的方法小结
使用PHP获取网络文件的实现代码
PHP 巧用数组降低程序的时间复杂度
php下将XML转换为数组
php 文件上传代码(限制jpg文件)
php 无极分类(递归)实现代码
PHP 采集获取指定网址的内容
PHP 将图片按创建时间进行分类存储的实现代码
PHP 存储文本换行实现方法
PHP 批量更新网页内容实现代码
用PHP查询搜索引擎排名位置的代码
用php实现的获取网页中的图片并保存到本地的代码
php实现首页链接查询 友情链接检查的代码
处理php自动反斜杠的函数代码
php实现的遍历文件夹下所有文件,编辑删除

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-13   浏览: 74 ::
收藏到网摘: 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函数。