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函数)
Oct 09 PHP
php时间不正确的解决方法
Apr 09 PHP
11个PHP 分页脚本推荐
Aug 15 PHP
php增删改查示例自己写的demo
Sep 04 PHP
PHP中auto_prepend_file与auto_append_file用法实例分析
Sep 22 PHP
深入解析WordPress中加载模板的get_template_part函数
Jan 11 PHP
php将一维数组转换为每3个连续值组成的二维数组
May 06 PHP
PHP随机获取未被微信屏蔽的域名(微信域名检测)
Mar 19 PHP
Laravel中如何增加自定义全局函数详解
May 09 PHP
PHP基于curl post实现发送url及相关中文乱码问题解决方法
Nov 25 PHP
tp5框架使用composer实现日志记录功能示例
Jan 10 PHP
thinkPHP5.1框架路由::get、post请求简单用法示例
May 06 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代码
2007/03/03 PHP
设置php页面编码的两种方法示例介绍
2014/03/03 PHP
详谈PHP程序Laravel 5框架的优化技巧
2016/07/18 PHP
阿里云Win2016安装Apache和PHP环境图文教程
2018/03/11 PHP
针对thinkPHP5框架存储过程bug重写的存储过程扩展类完整实例
2018/06/16 PHP
用jscript实现新建word文档
2007/06/15 Javascript
js模拟实现Array的sort方法
2007/12/11 Javascript
jquery 关键字“拖曳搜索”之“拖曳”以及 图片“提示自适应放大”效果 的实现
2010/04/18 Javascript
从jQuery.camelCase()学习string.replace() 函数学习
2011/09/13 Javascript
JQuery入门——移除绑定事件unbind方法概述及应用
2013/02/05 Javascript
jquery使用ajax实现微信自动回复插件
2014/04/28 Javascript
JQuery显示隐藏DIV的方法及代码实例
2015/04/16 Javascript
js实现(全选)多选按钮的方法【附实例】
2016/03/30 Javascript
深入浅析JavaScript的API设计原则
2016/06/14 Javascript
js微信分享API
2020/10/11 Javascript
微信小程序 在Chrome浏览器上运行以及WebStorm的使用
2016/09/27 Javascript
jQuery设置和获取select、checkbox、radio的选中值方法
2017/01/01 Javascript
详解如何让Express支持async/await
2017/10/09 Javascript
jQuery替换节点元素的操作方法
2018/03/18 jQuery
JavaScript实现封闭区域布尔运算的示例代码
2018/06/25 Javascript
layui 弹出删除确认界面的实例
2019/09/06 Javascript
微信小程序如何获取用户头像和昵称
2019/09/23 Javascript
Vue 3.0双向绑定原理的实现方法
2019/10/23 Javascript
微信小程序实现签字功能
2019/12/23 Javascript
python中迭代器(iterator)用法实例分析
2015/04/29 Python
keras中的卷积层&amp;池化层的用法
2020/05/22 Python
埃弗顿足球俱乐部官方网上商店:Everton Direct
2018/01/13 全球购物
莫斯科制造商的廉价皮大衣:Fursk
2020/06/09 全球购物
给同学的道歉信
2014/01/16 职场文书
如何撰写岗位职责
2014/02/01 职场文书
薪酬专员岗位职责
2014/02/18 职场文书
银行求职信
2014/05/31 职场文书
2014第二批党的群众路线教育实践活动对照检查材料思想汇报
2014/09/18 职场文书
天气温馨提示语
2015/07/14 职场文书
Anaconda安装pytorch及配置PyCharm 2021环境
2021/06/04 Python
Python自动操作神器PyAutoGUI的使用教程
2022/06/16 Python