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 相关文章推荐
浅谈Windows下 PHP4.0与oracle 8的连接设置
Oct 09 PHP
PHP 增加了对 .ZIP 文件的读取功能
Oct 09 PHP
COM in PHP (winows only)
Oct 09 PHP
PHP parse_url 一个好用的函数
Oct 03 PHP
php 无限级分类学习参考之对ecshop无限级分类的解析 带详细注释
Mar 23 PHP
php 中英文语言转换类
Sep 07 PHP
php实现的mongodb操作类
May 28 PHP
基于命令行执行带参数的php脚本并取得参数的方法
Jan 25 PHP
PHP数学运算函数大汇总(经典值得收藏)
Apr 01 PHP
PHP处理Ajax请求与Ajax跨域问题
Feb 13 PHP
PHP中单例模式与工厂模式详解
Feb 17 PHP
PHP文件类型检查及fileinfo模块安装使用详解
May 09 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
1 Tube Radio
2021/03/02 无线电
php笔记之:有规律大文件的读取与写入的分析
2013/04/26 PHP
php微信公众开发之获取周边酒店信息的方法
2014/12/22 PHP
php生成无限栏目树
2017/03/16 PHP
深入理解PHP的远程多会话调试
2017/09/21 PHP
PHP二维数组实现去除重复项的方法【保留各个键值】
2017/12/21 PHP
PHP基于DateTime类解决Unix时间戳与日期互转问题【针对1970年前及2038年后时间戳】
2018/06/13 PHP
JavaScript 异步调用框架 (Part 5 - 链式实现)
2009/08/04 Javascript
更换select下拉菜单背景样式的实现代码
2011/12/20 Javascript
JS中的数组的sort方法使用示例
2014/01/22 Javascript
JQuery右键菜单插件ContextMenu使用指南
2014/12/19 Javascript
7个让JavaScript变得更好的注意事项
2015/01/28 Javascript
比例尺、缩略图、平移缩放之百度地图添加控件方法
2015/08/03 Javascript
分享jQuery网页元素拖拽插件
2020/12/01 Javascript
微信小程序Server端环境配置详解(SSL, Nginx HTTPS,TLS 1.2 升级)
2017/01/12 Javascript
jQuery+vue.js实现的九宫格拼图游戏完整实例【附源码下载】
2017/09/12 jQuery
vue如何解决循环引用组件报错的问题
2018/09/22 Javascript
H5+C3+JS实现双人对战五子棋游戏(UI篇)
2020/05/28 Javascript
JS实现的点击按钮图片上下滚动效果示例
2019/01/28 Javascript
如何利用JS将手机号中间四位变成*号
2020/09/29 Javascript
[45:52]2018DOTA2亚洲邀请赛 4.1小组赛 A组加赛 LGD vs Liquid
2018/04/02 DOTA
Python网络爬虫出现乱码问题的解决方法
2017/01/05 Python
利用jupyter网页版本进行python函数查询方式
2020/04/14 Python
如何在Python对Excel进行读取
2020/06/04 Python
Python 实现简单的客户端认证
2020/07/29 Python
标签和贴纸印刷:Lightning Labels
2018/03/22 全球购物
美国球鞋寄卖网站:Stadium Goods
2018/05/09 全球购物
播音主持女孩的自我评价分享
2013/11/20 职场文书
公司联欢晚会主持词
2014/03/22 职场文书
软件项目开发计划书
2014/05/01 职场文书
医院2014国庆节活动策划方案
2014/09/21 职场文书
2014年人力资源部工作总结
2014/11/19 职场文书
2016初一新生军训心得体会
2016/01/11 职场文书
女性励志书籍推荐
2019/08/19 职场文书
PHP使用非对称加密算法RSA
2021/04/21 PHP
python实现层次聚类的方法
2021/11/01 Python