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中通过ADO调用Asscess数据库和COM程序
Oct 09 PHP
实现了一个PHP5的getter/setter基类的代码
Feb 25 PHP
php自动适应范围的分页代码
Aug 05 PHP
windows下升级PHP到5.3.3的过程及注意事项
Oct 12 PHP
php读取excel文件的简单实例
Aug 26 PHP
php定时执行任务设置详解
Feb 06 PHP
PHP中Trait及其应用详解
Feb 14 PHP
php实现留言板功能(会话控制)
May 23 PHP
Yii2中简单的场景使用介绍
Jun 02 PHP
php微信扫码支付 php公众号支付
Mar 24 PHP
php常用字符串查找函数strstr()与strpos()实例分析
Jun 21 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查询MySQL大量数据的时候内存占用分析
2011/07/22 PHP
php导出csv数据在浏览器中输出提供下载或保存到文件的示例
2014/04/24 PHP
thinkphp中ajax与php响应过程详解
2014/12/08 PHP
PHP中遇到的时区问题解决方法
2015/07/23 PHP
Laravel学习教程之model validation的使用示例
2017/10/23 PHP
gearman管理工具GearmanManager的安装与php使用方法示例
2020/02/27 PHP
PHP7 字符串处理机制修改
2021/03/09 PHP
JavaScript 组件之旅(四):测试 JavaScript 组件
2009/10/28 Javascript
Extjs TriggerField在弹出窗口显示不出问题的解决方法
2010/01/08 Javascript
js选取多个或单个元素的实现代码(用class)
2012/08/22 Javascript
JSON简介以及用法汇总
2016/02/21 Javascript
BootStrap中的table实现数据填充与分页应用小结
2016/05/26 Javascript
详解webpack-dev-server使用方法
2018/09/14 Javascript
解决Vue使用swiper动态加载数据,动态轮播数据显示白屏的问题
2018/09/27 Javascript
小程序自定义日历效果
2018/12/29 Javascript
Vue.js实现开发购物车功能的方法详解
2019/02/22 Javascript
vue限制输入框只能输入8位整数和2位小数的代码
2019/11/06 Javascript
[06:01]刀塔次级联赛top10第一期
2014/11/07 DOTA
Python pyinotify日志监控系统处理日志的方法
2018/03/08 Python
python验证码识别教程之滑动验证码
2018/06/04 Python
在Pycharm中使用GitHub的方法步骤
2019/06/13 Python
使用python的pandas为你的股票绘制趋势图
2019/06/26 Python
python程序运行进程、使用时间、剩余时间显示功能的实现代码
2019/07/11 Python
如何在python中执行另一个py文件
2020/04/30 Python
Python实现Canny及Hough算法代码实例解析
2020/08/06 Python
HTML5文档结构标签
2017/04/21 HTML / CSS
苹果Mac升级:MacSales.com
2017/11/20 全球购物
舒适的豪华鞋:Taryn Rose
2018/05/03 全球购物
String、StringBuffer、StringBuilder有区别
2015/09/18 面试题
大学生毕业求职的自我评价
2013/09/29 职场文书
计算机专业推荐信范文
2013/11/20 职场文书
生产厂厂长岗位职责
2013/12/25 职场文书
毕业生求职自荐书范文
2014/03/27 职场文书
2015年施工员工作总结范文
2015/04/20 职场文书
无房证明样本
2015/06/17 职场文书
js中Object.create实例用法详解
2021/10/05 Javascript