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脚本的10个技巧(5)
Oct 09 PHP
php cookie 登录验证示例代码
Mar 16 PHP
PHP COOKIE设置为浏览器进程
Jun 21 PHP
PHP将DateTime对象转化为友好时间显示的实现代码
Sep 20 PHP
php缓冲 output_buffering和ob_start使用介绍
Jan 30 PHP
php删除左端与右端空格的方法
Nov 29 PHP
thinkphp中ajax与php响应过程详解
Dec 08 PHP
PHP中的一些常用函数收集
May 26 PHP
PHP简单实现DES加密解密的方法
Jul 12 PHP
php curl中gzip的压缩性能测试实例分析
Nov 08 PHP
Yii2――使用数据库操作汇总(增删查改、事务)
Dec 19 PHP
php+js实现的拖动滑块验证码验证表单操作示例【附源码下载】
May 27 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+MSSQL分页的例子
2006/10/09 PHP
PHP小技巧搜集,每个PHPer都来露一手
2007/01/02 PHP
PHP 解决utf-8和gb2312编码转换问题
2010/03/18 PHP
简单的php缓存类分享     php缓存机制
2014/01/22 PHP
php分页示例分享
2014/04/30 PHP
解决ThinkPHP关闭调试模式时报错的问题汇总
2015/04/22 PHP
YII Framework框架教程之缓存用法详解
2016/03/14 PHP
php实现与python进行socket通信的方法示例
2017/08/30 PHP
PHP实现递归的三种方法
2020/07/04 PHP
javascript Object与Function使用
2010/01/11 Javascript
jquery remove方法应用详解
2012/11/22 Javascript
利用Jquery实现可多选的下拉框
2014/02/21 Javascript
jQuery简单实现隐藏以及显示特效
2015/02/26 Javascript
使用jQuery操作HTML的table表格的实例解析
2016/03/13 Javascript
el表达式 写入bootstrap表格数据页面的实例代码
2017/01/11 Javascript
jQuery Pagination分页插件使用方法详解
2017/02/28 Javascript
微信小程序 sha1 实现密码加密实例详解
2017/07/06 Javascript
Vue 中对图片地址进行拼接的方法
2018/09/03 Javascript
javascript关于“时间”的一次探索
2019/07/24 Javascript
Javascript实现鼠标移入方向感知
2020/06/24 Javascript
three.js中多线程的使用及性能测试详解
2021/01/07 Javascript
聊聊vue 中的v-on参数问题
2021/01/29 Vue.js
Python中的命令行参数解析工具之docopt详解
2017/03/27 Python
Pandas之groupby( )用法笔记小结
2019/07/23 Python
python数据类型之间怎么转换技巧分享
2019/08/20 Python
python实现大学人员管理系统
2019/10/25 Python
Python网络编程之使用TCP方式传输文件操作示例
2019/11/01 Python
Python3+RIDE+RobotFramework自动化测试框架搭建过程详解
2020/09/23 Python
Pandas数据分析的一些常用小技巧
2021/02/07 Python
全球知名鞋履品牌授权零售商:Journeys
2016/09/17 全球购物
伊利莎白雅顿官网:Elizabeth Arden
2016/10/10 全球购物
欧尚俄罗斯网上超市:Auchan俄罗斯
2018/05/03 全球购物
一些关于MySql加速和优化的面试题
2014/01/30 面试题
质监局领导班子践行群众路线整改方案
2014/10/26 职场文书
事业单位工作人员年度考核个人总结
2015/02/12 职场文书
Python中非常使用的6种基本变量的操作与技巧
2022/03/22 Python