不积跬步无以至千里

记录精彩的程序人生

  • 首页
  • Java
  • Golang
  • PHP
  • Python
  • Nodejs
  • Lua
  • Docker
  • DevOps
  • 文章归档
  • 默认分类
  • 关于
  • 标签

  • 搜索
PostgreSQL hbase 时间同步 nexus 开机启动 nexus, 开机启动 jenkins安装配置 gitlab安装配置 gitlab安装 文件系统 fastdfs gcc切换 gcc升级 mysql8 交换空间 虚拟内存 tcp thrift lua tag test VPN SoftEtherVPN homebrew asm spring tomcat maven jdk ios mac 图案字符 figlet mysql半同步复制 mysql主从同步 一主多从 一主一从 主从同步 反向代理 密码重置 test 虚拟机扩容 swap 虚拟空间 docker ldocker grpc-gateway protobuf 微服务 go grp GRPC 授权登录 OAuth2.0 SOA supervisord supervisor RPC CentOS rabbitmq 环境变量 php-fpm php.ini error php7 lnmp 编译安装 mysql nginx linux java php python redis 字符串操作 mysql5.7 Solo

daddslashes()函数的用法

发表于 2019-11-26 | 分类于 默认分类 | 0 | 阅读次数 2607
资料一:

从康盛的ucenter中我们查看daddslashes函数,提到daddslashes函数,我们要看看前面的代码

unset($GLOBALS, $_ENV, $HTTP_GET_VARS, $HTTP_POST_VARS, $HTTP_COOKIE_VARS, $HTTP_SERVER_VARS, $HTTP_ENV_VARS);

$_GET = daddslashes($_GET, 1, TRUE);
$_POST = daddslashes($_POST, 1, TRUE);
$_COOKIE = daddslashes($_COOKIE, 1, TRUE);
$_SERVER = daddslashes($_SERVER);
$_FILES = daddslashes($_FILES);
$_REQUEST = daddslashes($_REQUEST, 1, TRUE);

这里将$_GET,$_POST,$_COOKIE和$_REQUEST这四个函数进行特殊过滤,下面我们再来看daddslashes函数

function daddslashes($string, $force = 0, $strip = FALSE) {
//字符串或数组  是否强制  是否去除
//如果魔术引用未开启 或 $force不为0
if(!MAGIC_QUOTES_GPC || $force) {
if(is_array($string)) { //如果其为一个数组则循环执 行此函数
foreach($string as $key =$val) {
$string[$key] = daddslashes($val, $force);
}
} else {
//如果魔术引用开启 或$force为0
//下面是一个三元操作 符,如果$strip为true则执行stripslashes去掉反斜线字符,再执行addslashes
//$strip为true的,也就是先去掉反斜线字符再进行转义的 为$_GET,$_POST,$_COOKIE和$_REQUEST $_REQUEST数组包含了前三个数组的值
//这里为什么要将$string先去掉反斜线再进行转义呢,因为有的时候$string有可能有两个反斜 线,stripslashes是将多余的反斜线过滤掉
$string = addslashes($strip ? stripslashes($string) : $string);
}
}
return $string;
}
从上面的函数我们可以看出,只要是$_GET,$_POST,$_COOKIE和$_REQUEST这四个超全局变量,都会进行特殊过滤,因 为$_REQUEST函数包含了前面的三个函数,所以才要过滤这四个函数,当是这四个超全局变量的时候,不管是否开启了魔术引用,都将进行下面的先去掉反 斜线再进行转义。 这样可以有效的防止太多的反斜线。
资料二:

function daddslashes($string, $force = 0) { //此函数是智能的对字符串进行反斜线引用,会判断PHP程序默认的MAGIC_QUOTES_GPC是否开启.

!defined('MAGIC_QUOTES_GPC') && define('MAGIC_QUOTES_GPC', get_magic_quotes_gpc());//get_magic_quotes_gpc()检测php中magic_quotes_gpc是否 开启,开启返回1,关闭返回0.

if(!MAGIC_QUOTES_GPC || $force) { // 调用此函数的时候如果PHPMAGIC_QUOTES_GPC开启则不会执行这个if,则这段if程序是不会被执行的.而直接会跳到最后一行,返回字符 串.

if(is_array($string)) {

foreach($string as $key => $val) {

$string[$key] = daddslashes($val, $force);

}

} else {

$string = addslashes($string);

}

}

return $string;

}

源代码:

function daddslashes($string, $force = 0)

{

if(!$GLOBALS['magic_quotes_gpc'] || $force)

{

if(is_array($string))

{

foreach($string as $key => $val)

{

$string[$key] = daddslashes($val, $force);

}

}

else

{

$string = addslashes($string);

}

}

return $string;

}

PHP date_default_timezone_set() 函数的用法
PHP mysql_get_server_info() 函数:返回 MySQL 服务器的信息
  • 文章目录
  • 站点概览
ken

ken

记录精彩的程序人生

498 日志
9 分类
77 标签
RSS
Creative Commons
Links
  • 酷壳
0%
© 2010 — 2026 ken
由 Halo 强力驱动
鄂ICP备18013899号-1