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加速的eAccelerator dll支持文件打包下载
Sep 30 PHP
smarty section简介与用法分析
Oct 03 PHP
在JavaScript中调用php程序
Mar 09 PHP
php表单转换textarea换行符的方法
Sep 10 PHP
解析PHP SPL标准库的用法(遍历目录,查找固定条件的文件)
Jun 18 PHP
ThinkPHP CURD方法之order方法详解
Jun 18 PHP
PHP实现搜索相似图片
Sep 22 PHP
php 数据结构之链表队列
Oct 17 PHP
利用Homestead快速运行一个Laravel项目的方法详解
Nov 14 PHP
php爬取天猫和淘宝商品数据
Feb 23 PHP
PHP使用SMTP邮件服务器发送邮件示例
Aug 28 PHP
关于laravel 数据库迁移中integer类型是无法指定长度的问题
Oct 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
ThinkPHP模板引擎之导入资源文件方法详解
2014/06/18 PHP
浅谈php中curl、fsockopen的应用
2016/12/10 PHP
php压缩文件夹最新版
2018/07/18 PHP
有趣的JavaScript数组长度问题代码说明
2011/01/20 Javascript
js函数setTimeout延迟执行的简单介绍
2013/07/17 Javascript
js onload事件不起作用示例分析
2013/10/09 Javascript
对Web开发中前端框架与前端类库的一些思考
2015/03/27 Javascript
jQuery form插件之ajaxForm()和ajaxSubmit()的可选参数项对象
2016/01/23 Javascript
解析JavaScript数组方法reduce
2016/12/12 Javascript
JavaScript仿聊天室聊天记录
2016/12/27 Javascript
jquery——九宫格大转盘抽奖实例
2017/01/16 Javascript
深入理解基于vue-cli的vuex配置
2017/07/24 Javascript
为输入框加入数字js校验代码分享
2017/11/02 Javascript
zTree节点文字过多的处理方法
2017/11/24 Javascript
解决koa2 ctx.render is not a function报错问题
2018/08/07 Javascript
JQuery Ajax跨域调用和非跨域调用问题实例分析
2019/04/16 jQuery
Python 命令行参数sys.argv
2008/09/06 Python
python版学生管理系统
2018/01/10 Python
详解Python安装scrapy的正确姿势
2018/06/26 Python
Python函数参数操作详解
2018/08/03 Python
Python动态生成多维数组的方法示例
2018/08/09 Python
python 实现倒排索引的方法
2018/12/25 Python
pandas DataFrame 交集并集补集的实现
2019/06/24 Python
详解Python 字符串相似性的几种度量方法
2019/08/29 Python
简单了解python装饰器原理及使用方法
2019/12/18 Python
用Python做一个久坐提醒小助手的示例代码
2020/02/10 Python
html5中canvas学习笔记1-画板的尺寸与实际显示尺寸
2013/01/06 HTML / CSS
化学教师自荐信范文
2013/12/28 职场文书
四好少年事迹材料
2014/01/12 职场文书
乌鸦喝水教学反思
2014/02/07 职场文书
党委干部批评与自我批评发言稿
2014/09/28 职场文书
病危通知单
2015/04/17 职场文书
肖申克救赎观后感
2015/06/02 职场文书
Django如何创作一个简单的最小程序
2021/05/12 Python
Alexa停服!网站排名将何去何从?目前还没有替代品。
2022/04/15 杂记
使用 CSS 构建强大且酷炫的粒子动画效果
2022/08/14 HTML / CSS