php addslashes 函数详细分析说明


Posted in PHP onJune 23, 2009

语法: 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函数。
PHP 相关文章推荐
PHP项目开发中最常用的自定义函数整理
Dec 02 PHP
php 模拟GMAIL,HOTMAIL(MSN),YAHOO,163,126邮箱登录的详细介绍
Jun 18 PHP
php中的Base62类(适用于数值转字符串)
Aug 12 PHP
thinkphp视图模型查询提示ERR: 1146:Table 'db.pr_order_view' doesn't exist的解决方法
Oct 30 PHP
php中常见的sql攻击正则表达式汇总
Nov 06 PHP
php中fsockopen用法实例
Jan 05 PHP
PHP中遇到的时区问题解决方法
Jul 23 PHP
实现WordPress主题侧边栏切换功能的PHP脚本详解
Dec 14 PHP
Lumen timezone 时区设置方法(慢了8个小时)
Jan 20 PHP
php 获取xml接口数据的处理方法
May 31 PHP
php常用日期时间函数实例小结
Jul 04 PHP
浅谈PHP之ThinkPHP框架使用详解
Jul 21 PHP
PHP n个不重复的随机数生成代码
Jun 23 #PHP
PHP 七大优势分析
Jun 23 #PHP
php 404错误页面实现代码
Jun 22 #PHP
PHP 多进程 解决难题
Jun 22 #PHP
PHP 高级课程笔记 面向对象
Jun 21 #PHP
mysql 性能的检查和优化方法
Jun 21 #PHP
php fckeditor 调用的函数
Jun 21 #PHP
You might like
PHP调用三种数据库的方法(3)
2006/10/09 PHP
php AJAX实例根据邮编自动完成地址信息
2008/11/23 PHP
在mysql数据库原有字段后增加新内容
2009/11/26 PHP
php在项目中寻找代码的坏味道(综艺命名)
2012/07/19 PHP
win10环境PHP 7 安装配置【教程】
2016/05/09 PHP
浅谈ThinkPHP中initialize和construct的区别
2017/04/01 PHP
从JavaScript 到 JQuery (1)学习小结
2009/02/12 Javascript
关于JavaScript的一些看法
2009/05/27 Javascript
JavaScript 动态生成方法的例子
2009/07/22 Javascript
JS清除IE浏览器缓存的方法
2013/07/26 Javascript
Javascript简单改变表单元素背景的方法
2015/07/15 Javascript
深入了解JavaScript的逻辑运算符(与、或)
2016/12/20 Javascript
微信小程序中显示html格式内容的方法
2017/04/25 Javascript
JavaScript实现三级联动效果
2017/07/15 Javascript
微信小程序使用image组件显示图片的方法【附源码下载】
2017/12/08 Javascript
JS实现在文本指定位置插入内容的简单示例
2017/12/22 Javascript
vue2.0使用swiper组件实现轮播的示例代码
2018/03/03 Javascript
js简单遍历获取对象中的属性值的方法示例
2019/06/19 Javascript
JavaScript实现单图片上传并预览功能
2019/09/30 Javascript
TypeScript魔法堂之枚举的超实用手册
2020/10/29 Javascript
[08:42]DOTA2每周TOP10 精彩击杀集锦vol.2
2014/06/25 DOTA
[01:59]翻天覆地,因你而变,7.20版本地图更新速览
2018/11/24 DOTA
浅谈python中requests模块导入的问题
2018/05/18 Python
python中类的属性和方法介绍
2018/11/27 Python
python中property属性的介绍及其应用详解
2019/08/29 Python
Python写捕鱼达人的游戏实现
2020/03/31 Python
anaconda3安装及jupyter环境配置全教程
2020/08/24 Python
测绘工程专业个人自我评价
2013/12/01 职场文书
结婚典礼证婚词
2014/01/11 职场文书
小学生获奖感言范文
2014/02/02 职场文书
企业业务员岗位职责
2014/03/14 职场文书
公务员上班玩游戏检讨书
2014/09/17 职场文书
学生考试舞弊检讨书
2015/01/01 职场文书
2015年大学教师工作总结
2015/05/20 职场文书
读书笔记格式
2015/07/02 职场文书
七年级作文之冬景
2019/11/07 职场文书