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 相关文章推荐
dedecms防止FCK乱格式化你的代码的修改方法
Mar 17 PHP
pdo中使用参数化查询sql
Aug 11 PHP
php数字游戏 计算24算法
Jun 10 PHP
php常用Output和ptions/Info函数集介绍
Jun 19 PHP
DOM XPATH获取img src值的query
Sep 23 PHP
php使用Jpgraph绘制饼状图的方法
Jun 10 PHP
PHP.vs.JAVA
Apr 29 PHP
php+html5+ajax实现上传图片的方法
May 14 PHP
PHP页面跳转实现延时跳转的方法
Dec 10 PHP
PHP实现会员账号单唯一登录的方法分析
Mar 07 PHP
基于laravel where的高级使用方法
Oct 10 PHP
laravel 获取某个查询的查询SQL语句方法
Oct 12 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
ajax实现无刷新分页(php)
2010/07/18 PHP
PHP和JAVA中的重载(overload)和覆盖(override) 介绍
2012/03/01 PHP
jQuery+PHP+ajax实现微博加载更多内容列表功能
2014/06/27 PHP
PHP实现的蚂蚁爬杆路径算法代码
2015/12/03 PHP
基于laravel制作APP接口(API)
2016/03/15 PHP
php实现的三个常用加密解密功能函数示例
2017/11/06 PHP
Laravel框架路由设置与使用示例
2018/06/12 PHP
javascript appendChild,innerHTML,join性能比较代码
2009/08/29 Javascript
js中判断Object、Array、Function等引用类型对象是否相等
2012/08/29 Javascript
JavaScript实现将文本框的值插入指定位置的方法
2015/08/13 Javascript
fckeditor部署到weblogic出现xml无法读取及样式不能显示问题的解决方法
2017/03/24 Javascript
vue 2.0组件与v-model详解
2017/03/27 Javascript
JavaScript实现购物车基本功能
2017/07/21 Javascript
Vue中之nextTick函数源码分析详解
2017/10/17 Javascript
angular6.0使用教程之父组件通过url传递id给子组件的方法
2018/06/30 Javascript
vuex如何重置所有state(可定制)
2019/01/17 Javascript
layui 选择列表,打勾,点击确定返回数据的例子
2019/09/02 Javascript
vue点击页面空白处实现保存功能
2019/11/06 Javascript
JavaScript, select标签元素左右移动功能实现
2020/05/14 Javascript
[57:12]完美世界DOTA2联赛循环赛 Inki vs Matador BO2第一场 10.31
2020/11/02 DOTA
用python实现的去除win下文本文件头部BOM的代码
2013/02/10 Python
python解析文件示例
2014/01/23 Python
python在Windows下安装setuptools(easy_install工具)步骤详解
2016/07/01 Python
Python生成随机密码的方法
2017/06/16 Python
Python使用matplotlib绘制随机漫步图
2018/08/27 Python
python绘制无向图度分布曲线示例
2019/11/22 Python
django 实现简单的插入视频
2020/04/07 Python
Python如何实现邮件功能
2020/05/27 Python
学习python需要有编程基础吗
2020/06/02 Python
Python基于tkinter canvas实现图片裁剪功能
2020/11/05 Python
简单的HTML5初步入门教程
2015/09/29 HTML / CSS
2014年教师节座谈会发言稿
2014/09/10 职场文书
党员作风建设整改方案
2014/10/27 职场文书
学术会议通知范文
2015/04/15 职场文书
Vue + iView实现Excel上传功能的完整代码
2021/06/22 Vue.js
Python Django / Flask如何使用Elasticsearch
2022/04/19 Python