博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PHP中的daddslashes方法
阅读量:4198 次
发布时间:2019-05-26

本文共 2412 字,大约阅读时间需要 8 分钟。

01.
@set_magic_quotes_runtime(0);
02.
$MQG= get_magic_quotes_gpc();
03.
 
04.
if(!$MQG&& $_POST)$_POST = daddslashes($_POST);
05.
if(!$MQG&& $_GET)$_GET = daddslashes($_GET);
06.
 
07.
//转译字符函数
08.
functiondaddslashes($string) {
09.
if(!is_array($string))return addslashes($string);
10.
foreach($stringas $key => $val) $string[$key] = daddslashes($val);
11.
return$string;
12.
}

PHP提供两个方便我们引用数据的魔法引用函数magic_quotes_gpc和magic_quotes_runtime,这两个函数如果在php.ini设置为ON的时候,就会为我们引用的数据碰到 单引号' 和 双引号" 以及 反斜线\ 时自动加上反斜线, 帮我们自动转译符号,确保数据操作的正确运行,可是我们在php不同的版本或者不同的服务器配置下,有的magic_quotes_gpc和 magic_quotes_runtime设置为on,有的又是off,所以我们写的程序必须符合on和off两种情况。那么 magic_quotes_gpc和magic_quotes_runtime两个函数有什么区别呢?看下面的说明:

magic_quotes_gpc和magic_quotes_runtime函数区别

magic_quotes_gpc

作用范围是:WEB客户服务端;
作用时间:请求开始是,例如当脚本运行时。

magic_quotes_runtime

作用范围:从文件中读取的数据或是从SQL查询中得到的;
作用时间:每次当脚本访问运行状态中产生的数据。

所以magic_quotes_gpc的设定值将会影响通过Get/Post/Cookies获得的数据magic_quotes_runtime的设定值将会影响从文件中读取的数据或从数据库查询得到的数据

例子说明:

01.
$data1= $_POST['aaa'];
02.
$data2= implode(file('1.txt'));
03.
 
04.
if(get_magic_quotes_gpc()){
05.
//把数据$data1直接写入数据库 (自动转译)
06.
}else{
07.
$data1= addslashes($data1);
08.
//把数据$data1写入数据库,用函数(addslashes()转译)
09.
}
10.
 
11.
if(get_magic_quotes_runtime()){
12.
//把数据$data2直接写入数据库(自动转译)
13.
//从数据库读出的数据要经过一次stripslashes()之后输出stripslashes()的作用是去掉:\ ,和addslashes()作用相反
14.
}else{
15.
$data2= addslashes($data2);
16.
//把数据$data2写入数据库
17.
//从数据库读出的数据直接输出
18.
}

最关键的区别是就是上面提到的2点:他们针对的处理对象不同

magic_quotes_gpc的设定值将会影响通过Get/Post/Cookies获得的数据

magic_quotes_runtime的设定值将会影响从文件中读取的数据或从数据库查询得到的数据

在这里顺便在提几个想关联的函数:

set_magic_quotes_runtime():

设置magic_quotes_runtime值. 0=关闭.1=打开.默认状态是关闭的.

get_magic_quotes_gpc():

查看magic_quotes_gpc值.0=关闭.1=打开

get_magic_quotes_runtime():

查看magic_quotes_runtime值。0=关闭.1=打开.

注意的是没有 set_magic_quotes_gpc()这个函数,就是不能在程序里面设置magic_quotes_gpc的值。

 

转载自:

 

补充:

 

PHP函数  addslashes

定义和用法

addslashes() 函数在指定的预定义字符前添加反斜杠。

这些预定义字符是:

  • 单引号 (')
  • 双引号 (")
  • 反斜杠 (\)
  • NULL

语法

addslashes(string)

 

参数 描述
string 必需。规定要检查的字符串。

 

提示和注释

提示:该函数可用于为存储在数据库中的字符串以及数据库查询语句准备合适的字符串。

注释:默认情况下,PHP 指令 magic_quotes_gpc 为 on,对所有的 GET、POST 和 COOKIE 数据自动运行 addslashes()。不要对已经被 magic_quotes_gpc 转义过的字符串使用 addslashes(),因为这样会导致双层转义。遇到这种情况时可以使用函数 get_magic_quotes_gpc() 进行检测。

例子

在本例中,我们要向字符串中的预定义字符添加反斜杠:

";echo addslashes($str) . " This is safe in a database query.";?>

输出:

Who's John Adams? This is not safe in a database query.Who\'s John Adams? This is safe in a database query.

 

转载自:

 

 

你可能感兴趣的文章
Log4j使用教程
查看>>
JSON入门教程
查看>>
JSF入门教程
查看>>
存储过程入门教程
查看>>
JSP自定义Tag
查看>>
JSP自定义标签rtexprvalue属性
查看>>
RMI原理及实现
查看>>
解决Tomcat Error listenerStart 问题
查看>>
Hibernate重要对象的详解
查看>>
Struts2 配置文件手册
查看>>
Spring AOP 实例
查看>>
JAVA分页显示(程序分页和物理分页)
查看>>
Hibernate复合主键
查看>>
JQuery推荐插件(200+)
查看>>
自己实现事件监听
查看>>
高效实现数据仓库的七个步骤
查看>>
数据仓库开发过程中的七个禁忌
查看>>
顺利开发数据仓库的七种思路
查看>>
MySQL中文参考手册
查看>>
什么是ARP?如何防范ARP欺骗?
查看>>