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&amp;&amp;mysql)六
Oct 09 PHP
PHP stripos()函数及注意事项的分析
Jun 08 PHP
php加密解密实用类分享
Jan 07 PHP
PHP列出MySQL中所有数据库的方法
Mar 12 PHP
php实现的微信红包算法分析(非官方)
Sep 25 PHP
thinkPHP模板中for循环与switch语句用法示例
Nov 30 PHP
php生成无限栏目树
Mar 16 PHP
kindeditor 加入七牛云上传的实例讲解
Nov 12 PHP
PHP中cookie知识点学习
May 06 PHP
PHP实现微信商户支付企业付款到零钱功能
Sep 30 PHP
yii 框架实现按天,月,年,自定义时间段统计数据的方法分析
Apr 04 PHP
PHP程序员简单的开展服务治理架构操作详解(三)
May 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
.htaccess文件保护实例讲解
2011/02/06 PHP
关于php操作mysql执行数据库查询的一些常用操作汇总
2013/06/24 PHP
php判断GIF图片是否为动画的方法
2020/09/04 PHP
PHP基于phpqrcode生成带LOGO图像的二维码实例
2015/07/10 PHP
PHP 对象继承原理与简单用法示例
2020/04/21 PHP
javascript中substr,substring,slice.splice的区别说明
2010/11/25 Javascript
jQuery EasyUI API 中文文档 - ComboGrid 组合表格
2011/10/13 Javascript
Javascript 中的 call 和 apply使用介绍
2012/02/22 Javascript
javascript jscroll模拟html元素滚动条
2012/12/18 Javascript
JavaScript作用域与作用域链深入解析
2013/12/06 Javascript
javascript的动态加载、缓存、更新以及复用(一)
2014/06/09 Javascript
jQuery Migrate 1.1.0 Released 注意事项
2014/06/14 Javascript
jquery选择器需要注意的问题
2014/11/26 Javascript
JS中使用apply、bind实现为函数或者类传入动态个数的参数
2016/04/26 Javascript
微信小程序 scroll-view组件实现列表页实例代码
2016/12/14 Javascript
浅谈jQuery中的$.extend方法来扩展JSON对象
2017/02/12 Javascript
vue中的scope使用详解
2017/10/29 Javascript
Vue-Router实现组件间跳转的三种方法
2017/11/07 Javascript
Vue实现导出excel表格功能
2018/03/30 Javascript
快速解决vue2+vue-cli3项目ie兼容的问题
2020/11/17 Vue.js
[46:48]DOTA2上海特级锦标赛A组小组赛#2 Secret VS CDEC第三局
2016/02/25 DOTA
Cython 三分钟入门教程
2009/09/17 Python
Python程序设计入门(3)数组的使用
2014/06/16 Python
Python数据结构与算法之图结构(Graph)实例分析
2017/09/05 Python
Python后台开发Django的教程详解(启动)
2019/04/08 Python
Python操作SQLite/MySQL/LMDB数据库的方法
2019/11/07 Python
python 中的[:-1]和[::-1]的具体使用
2020/02/13 Python
手把手教你用纯css3实现轮播图效果实例
2017/05/04 HTML / CSS
会计专业毕业自荐书范文
2014/02/08 职场文书
优秀员工评优方案
2014/06/13 职场文书
孝敬父母的活动方案
2014/08/28 职场文书
2014年人事行政工作总结
2014/12/03 职场文书
督导岗位职责
2015/02/04 职场文书
小学毕业感言200字
2015/07/30 职场文书
python 逐步回归算法
2021/04/06 Python
win10忘记pin密码登录不了怎么办?win10忘记pin密码登不进去的解决方法
2022/07/07 数码科技