Discuz函数之daddslashes

本文介绍了Discuz中的daddslashes函数,该函数用于在magic_quotes_gpc关闭时对提交数据进行SQL转义,确保数据安全。同时,文章也展示了如何在PHP中获取客户端IP地址。
echo PHP_VERSION;//PHP版本
5.2.17

--修改自Discuz----
magic_quotes_gpc不管开启与否都正常转义单引号
如果开启了就不运行daddslashes这个函数,也就是没有addslashes转义
如果没有开启就把$_GET,$_POST之类的全局提交数据进行转义,防止SQL的运行不正确。

//转义单引号函数
function daddslashes($string) {
if(is_array($string)) {
 foreach($string as $key => $val) {
  $string[$key] = daddslashes($val);
  }
 }else{
  $string = addslashes($string);
  }
 return $string;
}
//如果在php.ini中 magic_quotes_gpc = Off
if(!get_magic_quotes_gpc()){
unset($GLOBALS, $_ENV, $HTTP_GET_VARS, $HTTP_POST_VARS, $HTTP_COOKIE_VARS, $HTTP_SERVER_VARS, $HTTP_ENV_VARS);
$_GET  = daddslashes($_GET);
$_POST  = daddslashes($_POST);
$_COOKIE    = daddslashes($_COOKIE);
$_SERVER    = daddslashes($_SERVER);
$_FILES  = daddslashes($_FILES);
$_REQUEST = daddslashes($_REQUEST);
}


//PHP获取客户端IP地址
function _get_client_ip() {
$ip = $_SERVER['REMOTE_ADDR'];
if (isset($_SERVER['HTTP_CLIENT_IP']) && preg_match('/^([0-9]{1,3}\.){3}[0-9]{1,3}$/', $_SERVER['HTTP_CLIENT_IP'])) {
 $ip = $_SERVER['HTTP_CLIENT_IP'];
} elseif(isset($_SERVER['HTTP_X_FORWARDED_FOR']) AND preg_match_all('#\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}#s', $_SERVER['HTTP_X_FORWARDED_FOR'], $matches)) {
 foreach ($matches[0] AS $xip) {
  if (!preg_match('#^(10|172\.16|192\.168)\.#', $xip)) {
   $ip = $xip;
   break;
   }
  }
 }
 return $ip;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值