php addslashes 函数详细分析说明

2015-01-24信息快讯网
语法: 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函数。
php5 apache 2.2 webservice 创建与配置(java)
PHP Session_Regenerate_ID函数双释放内存破坏漏洞
Php Image Resize图片大小调整的函数代码
linux下删除7天前日志的代码(php+shell)
PHP中simplexml_load_string函数使用说明
Wordpress 相册插件 NextGEN-Gallery 添加目录将中文转为拼音的解决办法
PHP的autoload自动加载机制使用说明
hessian 在PHP中的使用介绍
Notice: Undefined index: page in E:\PHP\test.php on line 14
windows中PHP5.2.14以及apache2.2.16安装配置方法第1/2页
PHPnow安装服务[apache_pn]失败的问题的解决方法
php header示例代码(推荐)
PHP下利用header()函数设置浏览器缓存的代码
PHP通过header实现文本文件下载的代码
支持数组的ADDSLASHES的php函数
php addslashes和mysql_real_escape_string
PHP 文件上传功能实现代码
PHP n个不重复的随机数生成代码
phpmyadmin 访问被拒绝的真实原因
php adodb连接mssql解决乱码问题
Windows PHP5和Apache的安装与配置
phpMyAdmin 安装配置方法和问题解决
IIS6+PHP5+MySQL5+Zend Optimizer+phpMyAdmin安装配置图文教程 2009年
Windows Apache2.2.11及Php5.2.9-1的安装与配置方法
PHP 服务器配置(使用Apache及IIS两种方法)
phpMyAdmin 安装及问题总结
php session 错误
apache2.2.4+mysql5.0.77+php5.2.8安装精简
PHP session有效期问题
PHP memcache扩展的三种安装方法
对squid中refresh_pattern的一些理解和建议
sourcesafe管理phpproj文件的补充说明(downmoon)
php session应用实例 登录验证
©2014-2024 dbsqp.com