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文件的实现方法
Mar 19 PHP
php intval的测试代码发现问题
Jul 27 PHP
PHP常用的文件操作函数经典收藏
Apr 02 PHP
php常用ODBC函数集(详细)
Jun 24 PHP
PHP数据库万能引擎类adodb配置使用以及实例集锦
Jun 12 PHP
PHP开发框架kohana中处理ajax请求的例子
Jul 14 PHP
ThinkPHP中pathinfo的访问模式、路径访问模式及URL重写总结
Aug 23 PHP
PHP+jquery+ajax实现即时聊天功能实例
Dec 23 PHP
PHP中应该避免使用同名变量(拆分临时变量)
Apr 03 PHP
CodeIgniter 完美解决URL含有中文字符串
May 13 PHP
PHP中spl_autoload_register()函数用法实例详解
Jul 18 PHP
PHP的微信支付接口使用方法讲解
Mar 08 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常用函数小技巧
2008/09/11 PHP
PHP中全面阻止SQL注入式攻击分析小结
2012/01/30 PHP
解析PHP中$_FILES的使用以及注意事项
2013/07/05 PHP
getJSON跨域SyntaxError问题分析
2014/08/07 PHP
安装ImageMagick出现error while loading shared libraries的解决方法
2014/09/23 PHP
PHP写日志的实现方法
2014/11/05 PHP
Laravel5.5以下版本中如何自定义日志行为详解
2018/08/01 PHP
thinkPHP框架实现的简单计算器示例
2018/12/07 PHP
PHP执行普通shell命令流程解析
2020/08/24 PHP
Firefox中beforeunload事件的实现缺陷浅析
2012/05/03 Javascript
js鼠标点击事件在各个浏览器中的写法及Event对象属性介绍
2013/01/24 Javascript
JS获取网页属性包括宽、高等等
2014/04/03 Javascript
javascript正则表达式之search()用法实例
2015/01/19 Javascript
简介JavaScript中strike()方法的使用
2015/06/08 Javascript
AngularJS实现根据变量改变动态加载模板的方法
2016/11/04 Javascript
浅谈Javascript中的Label语句
2016/12/14 Javascript
超全面的vue.js使用总结
2017/02/12 Javascript
JavaScript实现经纬度转换成地址功能
2017/03/28 Javascript
Vue一次性简洁明了引入所有公共组件的方法
2018/11/28 Javascript
[44:47]Ti4 循环赛第三日 iG vs NaVi
2014/07/12 DOTA
利用python获取当前日期前后N天或N月日期的方法示例
2017/07/30 Python
对pandas中iloc,loc取数据差别及按条件取值的方法详解
2018/11/06 Python
Python实现将HTML转成PDF的方法分析
2019/05/04 Python
关于python中密码加盐的学习体会小结
2019/07/15 Python
Python模拟登入的N种方式(建议收藏)
2020/05/31 Python
使用pytorch 筛选出一定范围的值
2020/06/28 Python
Python设计密码强度校验程序
2020/07/30 Python
伊利莎白雅顿官网:Elizabeth Arden
2016/10/10 全球购物
世界上最大的在线学习和教学市场:Udemy
2017/11/08 全球购物
印度第一网上礼品店:IGP.com
2020/02/06 全球购物
记者岗位职责
2014/01/06 职场文书
对孩子的寄语
2014/04/09 职场文书
旅游安全协议书
2014/04/21 职场文书
感谢信的格式
2015/01/21 职场文书
红旗渠导游词
2015/02/09 职场文书
贷款担保书范本
2015/09/22 职场文书