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数组函数序列之each() - 获取数组当前内部指针所指向元素的键名和键值,并将指针移到下一位
Oct 31 PHP
PHP中的函数-- foreach()的用法详解
Jun 24 PHP
php curl获取网页内容(IPV6下超时)的解决办法
Jul 16 PHP
PHP数据过滤的方法
Oct 30 PHP
php5.3以后的版本连接sqlserver2000的方法
Jul 28 PHP
如何让thinkphp在模型中自动完成session赋值小教程
Sep 05 PHP
php动态生成版权所有信息的方法
Mar 24 PHP
php字符串函数学习之strstr()
Mar 27 PHP
yii使用activeFileField控件实现上传文件与图片的方法
Dec 28 PHP
PHP操作mysql数据库分表的方法
Jun 09 PHP
PHP实现简易blog的制作
Oct 24 PHP
基于 Swoole 的微信扫码登录功能实现代码
Jan 15 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
IIS下配置Php+Mysql+zend的图文教程
2006/12/08 PHP
PHP调用Webservice实例代码
2011/07/29 PHP
ThinkPHP发送邮件示例代码
2016/10/08 PHP
CI框架(CodeIgniter)操作redis的方法详解
2018/01/25 PHP
PHP实现APP微信支付的实例讲解
2018/02/10 PHP
PHP实现15位身份证号转18位的方法分析
2019/10/16 PHP
javascript一些不错的函数脚本代码
2008/09/10 Javascript
基于jQuery的表格操作插件
2010/04/22 Javascript
11款新鲜的jQuery插件[附所有demo下载]
2011/01/24 Javascript
Javascript 垃圾收集机制介绍理解
2013/05/14 Javascript
js动画效果制件让图片组成动画代码分享
2014/01/14 Javascript
解决JavaScript数字精度丢失问题的方法
2015/12/03 Javascript
Express实现前端后端通信上传图片之存储数据库(mysql)傻瓜式教程(二)
2015/12/10 Javascript
node.js中axios使用心得总结
2017/11/29 Javascript
angularjs使用gulp-uglify压缩后执行报错的解决方法
2018/03/07 Javascript
layui table 参数设置方法
2018/08/14 Javascript
JS遍历JSON数组及获取JSON数组长度操作示例【测试可用】
2018/12/12 Javascript
layer页面跳转,获取html子节点元素的值方法
2019/09/27 Javascript
Vue.js使用axios动态获取response里的data数据操作
2020/09/08 Javascript
js实现滚动条自动滚动
2020/12/13 Javascript
[00:57]英雄,你的补给到了!
2020/11/13 DOTA
Python break语句详解
2014/03/11 Python
python检测是文件还是目录的方法
2015/07/03 Python
Python使用设计模式中的责任链模式与迭代器模式的示例
2016/03/02 Python
python同时遍历两个list用法说明
2020/05/02 Python
使用Keras实现Tensor的相乘和相加代码
2020/06/18 Python
Pycharm自带Git实现版本管理的方法步骤
2020/09/18 Python
请说出以下代码输出什么
2013/08/30 面试题
新学期红领巾广播稿
2014/01/14 职场文书
护校行动方案
2014/05/31 职场文书
小学生十佳少年事迹材料
2014/08/20 职场文书
2014年涉外离婚协议书范本
2014/11/20 职场文书
认真学习保证书
2015/02/26 职场文书
停电调休通知
2015/04/16 职场文书
vue实现简单数据双向绑定
2021/04/28 Vue.js
关于python类SortedList详解
2021/09/04 Python