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 三维饼图的实现代码
Sep 28 PHP
给初学者的30条PHP最佳实践(荒野无灯)
Aug 02 PHP
PHP+Ajax异步通讯实现用户名邮箱验证是否已注册( 2种方法实现)
Dec 28 PHP
用php实现选择排序的解决方法
May 04 PHP
php 购物车完整实现代码
Jun 05 PHP
PHP提示Cannot modify header information - headers already sent by解决方法
Sep 22 PHP
PHP基于单例模式实现的数据库操作基类
Jan 15 PHP
浅析Yii2 gridview实现批量删除教程
Apr 22 PHP
php使用ftp实现文件上传与下载功能
Jul 21 PHP
PHP递归的三种常用方式
Feb 28 PHP
php设计模式之建造器模式分析【星际争霸游戏案例】
Jan 23 PHP
TP5框架实现签到功能的方法分析
Apr 05 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 字符过滤类,用于过滤各类用户输入的数据
2009/05/27 PHP
php打造属于自己的MVC框架
2012/03/07 PHP
php三元运算符知识汇总
2015/07/02 PHP
php生成图片缩略图功能示例
2017/02/22 PHP
ScrollDown的基本操作示例
2013/06/09 Javascript
教你用jquery实现iframe自适应高度
2014/06/11 Javascript
TypeScript具有的几个不同特质
2015/04/07 Javascript
JS实现点击按钮后框架内载入不同网页的方法
2015/05/05 Javascript
js中unicode转码方法详解
2015/10/09 Javascript
Bootstrap导航条可点击和鼠标悬停显示下拉菜单的实现代码
2016/06/23 Javascript
浅谈js中的引用和复制(传值和传址)
2016/09/18 Javascript
jquery滚动条插件(可以自定义)
2016/12/11 Javascript
bootstrap实现的自适应页面简单应用示例
2017/03/09 Javascript
JS简单获取当前日期和农历日期的方法
2017/04/17 Javascript
js学习总结之DOM2兼容处理this问题的解决方法
2017/07/27 Javascript
JS生成随机打乱数组的方法示例
2017/12/23 Javascript
VUEJS 2.0 子组件访问/调用父组件的实例
2018/02/10 Javascript
Bootstrap Fileinput 4.4.7文件上传实例详解
2018/07/25 Javascript
Vue中的$set的使用实例代码
2018/10/08 Javascript
小程序二次贝塞尔曲线实现购物车商品曲线飞入效果
2019/01/07 Javascript
JavaScript读取本地文件常用方法流程解析
2020/10/12 Javascript
python实现博客文章爬虫示例
2014/02/26 Python
Python中的并发编程实例
2014/07/07 Python
基于Python在MacOS上安装robotframework-ride
2018/12/28 Python
python tkinter实现界面切换的示例代码
2019/06/14 Python
Pandas中Series和DataFrame的索引实现
2019/06/27 Python
python如何运行js语句
2020/09/09 Python
九州传奇上机题
2014/07/10 面试题
技术总监的工作职责
2013/11/13 职场文书
大学专科生推荐信范文
2013/11/23 职场文书
老师的检讨书
2014/02/23 职场文书
《掌声》教学反思
2014/02/23 职场文书
酒店总经理职务说明书
2014/02/26 职场文书
班干部竞选演讲稿
2014/04/24 职场文书
村委会换届选举方案
2014/05/03 职场文书
个人工作决心书
2015/09/22 职场文书