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+java实现自动新闻滚动窗口
Oct 09 PHP
php+mysql实现无限级分类 | 树型显示分类关系
Nov 19 PHP
php数组声明、遍历、数组全局变量使用小结
Jun 05 PHP
ThinkPHP页面跳转success与error方法概述
Jun 25 PHP
浅析ThinkPHP的模板输出功能
Jul 01 PHP
PHP生成随机数的方法实例分析
Jan 22 PHP
php绘制圆形的方法
Jan 24 PHP
帝国cms目录结构分享
Jul 06 PHP
php实现的数字验证码及数字运算验证码
Jul 30 PHP
php实现网站留言板功能
Nov 04 PHP
PHP实现微信网页授权开发教程
Jan 19 PHP
PHP crc32()函数讲解
Feb 14 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中的Session和Cookie
2013/06/21 PHP
解析php中获取url与物理路径的总结
2013/06/21 PHP
深入PHP购物车模块功能分析(函数讲解,附源码)
2013/06/25 PHP
一个严格的PHP Session会话超时时间设置方法
2014/06/10 PHP
Javascript 类型转换方法
2010/10/24 Javascript
用js实现判断当前网址的来路如果不是指定的来路就跳转到指定页面
2011/05/02 Javascript
js带按钮的提示框可供选择示例代码
2013/09/17 Javascript
js模拟hashtable的简单实例
2014/03/06 Javascript
jquery中的常用事件bind、hover、toggle等示例介绍
2014/07/21 Javascript
使用mini-define实现前端代码的模块化管理
2014/12/25 Javascript
javascript的BOM汇总
2015/07/16 Javascript
JavaScript根据CSS的Media Queries来判断浏览设备的方法
2016/05/10 Javascript
Jquery实现遮罩层的简单实例(就是弹出DIV周围都灰色不能操作)
2016/07/14 Javascript
js返回顶部实例分享
2016/12/21 Javascript
javascript中神奇的 Date对象小结
2017/10/12 Javascript
vue中锚点的三种方法
2018/07/06 Javascript
vue加载完成后的回调函数方法
2018/09/07 Javascript
vue watch关于对象内的属性监听
2019/04/22 Javascript
使用Vue.js中的过滤器实现幂方求值的方法
2019/08/27 Javascript
解决vue项目运行npm run serve报错的问题
2020/10/26 Javascript
Python中使用摄像头实现简单的延时摄影技术
2015/03/27 Python
用Python编写一个简单的Lisp解释器的教程
2015/04/03 Python
python3实现磁盘空间监控
2018/06/21 Python
Python实现爬虫抓取与读写、追加到excel文件操作示例
2018/06/27 Python
PyTorch 1.0 正式版已经发布了
2018/12/13 Python
Python 实现数据结构中的的栈队列
2019/05/16 Python
Python实现一个数组除以一个数的例子
2019/07/20 Python
python入门之基础语法学习笔记
2020/02/08 Python
Python中BeautifulSoup通过查找Id获取元素信息
2020/12/07 Python
CSS3实现跳动的动画效果
2016/09/12 HTML / CSS
css3简单练习实现遨游浏览器logo的绘制
2013/01/30 HTML / CSS
给排水工程师岗位职责
2013/11/21 职场文书
办公室员工岗位工作职责
2014/03/10 职场文书
群众路线四风对照检查材料
2014/11/04 职场文书
《我和小伙伴》教学反思
2016/02/20 职场文书
php png失真的原因及解决办法
2021/10/24 PHP