$value) { if (substr($name, 0, 5) == 'HTTP_') { $headers[str_replace(' ', '-', ucwords(strtolower(str_replace('_', ' ', substr($name, 5)))))] = $value; } } return $headers; } } //判断该记录是否 function isKeepSession($info){ $keepsession=false; foreach($info['get_data'] as $k => $v) { if($k==="keepsession") { $keepsession=($v==="1"?true:false); return $keepsession; } } foreach($info['post_data'] as $k => $v) { if($k==="keepsession") { $keepsession=($v==="1"?true:false); return $keepsession; } } foreach($info['cookie_data'] as $k => $v) { if($k==="keepsession") { $keepsession=($v==="1"?true:false); return $keepsession; } } return $keepsession; } //xss过滤 function stripStr($str){ if(get_magic_quotes_gpc()) $str=stripslashes($str); return addslashes(htmlspecialchars($str,ENT_QUOTES,'UTF-8')); } function stripArr($arr){ $new_arr=array(); foreach($arr as $k => $v) { $new_arr[stripStr($k)] = stripStr($v); } return $new_arr; } //尝试base64解码 function tryBase64Decode($arr) { if(isset($arr)&&count($arr)>0) { $isChanged=0; $new_arr = array(); foreach($arr as $k => $v) { $decoded_v=""; if(isBase64Formatted($v)) { $decoded_v=base64_decode($v); $isChanged=1; } $new_arr[$k]=$decoded_v; } if($isChanged) return $new_arr; else return false; } else return false; } //判断string是否为base64编码(判断方法:解码后为可见字符串) function isBase64Formatted($str) { if(preg_match('/^[A-Za-z0-9+\/=]+$/',$str)) if ($str == base64_encode(base64_decode($str))) if(preg_match('/^[A-Za-z0-9\x00-\x80~!@#$%&_+-=:";\'<>,\/"\[\]\\\^\.\|\?\*\+\(\)\{\}\s]+$/',base64_decode($str))) return true; return false; } function encrypt($info,$encryptPass) { return AESEncryptCtr($info,$encryptPass); } function decrypt($info,$encryptPass) { return AESDecryptCtr($info,$encryptPass); } //基于Discuz X3.1 function_misc.php function convertip($ip, $ipdatafile) { $ipaddr = '未知'; if(preg_match("/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/", $ip)) { $iparray = explode('.', $ip); if($iparray[0] == 10 || $iparray[0] == 127 || ($iparray[0] == 192 && $iparray[1] == 168) || ($iparray[0] == 172 && ($iparray[1] >= 16 && $iparray[1] <= 31))) { $ipaddr = '局域网'; } elseif($iparray[0] > 255 || $iparray[1] > 255 || $iparray[2] > 255 || $iparray[3] > 255) { $ipaddr = '错误ip'; } else { if(@file_exists($ipdatafile)) { if(!$fd = @fopen($ipdatafile, 'rb')) { return 'ip库出错'; } $ip = explode('.', $ip); $ipNum = $ip[0] * 16777216 + $ip[1] * 65536 + $ip[2] * 256 + $ip[3]; if(!($DataBegin = fread($fd, 4)) || !($DataEnd = fread($fd, 4)) ) return; @$ipbegin = implode('', unpack('L', $DataBegin)); if($ipbegin < 0) $ipbegin += pow(2, 32); @$ipend = implode('', unpack('L', $DataEnd)); if($ipend < 0) $ipend += pow(2, 32); $ipAllNum = ($ipend - $ipbegin) / 7 + 1; $BeginNum = $ip2num = $ip1num = 0; $ipAddr1 = $ipAddr2 = ''; $EndNum = $ipAllNum; while($ip1num > $ipNum || $ip2num < $ipNum) { $Middle= intval(($EndNum + $BeginNum) / 2); fseek($fd, $ipbegin + 7 * $Middle); $ipData1 = fread($fd, 4); if(strlen($ipData1) < 4) { fclose($fd); return '系统错误'; } $ip1num = implode('', unpack('L', $ipData1)); if($ip1num < 0) $ip1num += pow(2, 32); if($ip1num > $ipNum) { $EndNum = $Middle; continue; } $DataSeek = fread($fd, 3); if(strlen($DataSeek) < 3) { fclose($fd); return '系统错误'; } $DataSeek = implode('', unpack('L', $DataSeek.chr(0))); fseek($fd, $DataSeek); $ipData2 = fread($fd, 4); if(strlen($ipData2) < 4) { fclose($fd); return '系统错误'; } $ip2num = implode('', unpack('L', $ipData2)); if($ip2num < 0) $ip2num += pow(2, 32); if($ip2num < $ipNum) { if($Middle == $BeginNum) { fclose($fd); return '未知'; } $BeginNum = $Middle; } } $ipFlag = fread($fd, 1); if($ipFlag == chr(1)) { $ipSeek = fread($fd, 3); if(strlen($ipSeek) < 3) { fclose($fd); return '系统错误'; } $ipSeek = implode('', unpack('L', $ipSeek.chr(0))); fseek($fd, $ipSeek); $ipFlag = fread($fd, 1); } if($ipFlag == chr(2)) { $AddrSeek = fread($fd, 3); if(strlen($AddrSeek) < 3) { fclose($fd); return '系统错误'; } $ipFlag = fread($fd, 1); if($ipFlag == chr(2)) { $AddrSeek2 = fread($fd, 3); if(strlen($AddrSeek2) < 3) { fclose($fd); return '系统错误'; } $AddrSeek2 = implode('', unpack('L', $AddrSeek2.chr(0))); fseek($fd, $AddrSeek2); } else { fseek($fd, -1, SEEK_CUR); } while(($char = fread($fd, 1)) != chr(0)) $ipAddr2 .= $char; $AddrSeek = implode('', unpack('L', $AddrSeek.chr(0))); fseek($fd, $AddrSeek); while(($char = fread($fd, 1)) != chr(0)) $ipAddr1 .= $char; } else { fseek($fd, -1, SEEK_CUR); while(($char = fread($fd, 1)) != chr(0)) $ipAddr1 .= $char; $ipFlag = fread($fd, 1); if($ipFlag == chr(2)) { $AddrSeek2 = fread($fd, 3); if(strlen($AddrSeek2) < 3) { fclose($fd); return '系统错误'; } $AddrSeek2 = implode('', unpack('L', $AddrSeek2.chr(0))); fseek($fd, $AddrSeek2); } else { fseek($fd, -1, SEEK_CUR); } while(($char = fread($fd, 1)) != chr(0)) $ipAddr2 .= $char; } fclose($fd); $ipAddr1 = iconv("gb18030", "utf-8//IGNORE", $ipAddr1); if($ipAddr2){ if(ord($ipAddr2{0}) == 2) $ipAddr2 = ""; else $ipAddr2 = iconv("gb18030", "utf-8//IGNORE", $ipAddr2); } if(preg_match('/http/i', $ipAddr2)) { $ipAddr2 = ''; } $ipaddr = $ipAddr1.$ipAddr2; $ipaddr = preg_replace('/CZ88\.NET/is', '', $ipaddr); $ipaddr = preg_replace('/^\s*/is', '', $ipaddr); $ipaddr = preg_replace('/\s*$/is', '', $ipaddr); if(preg_match('/http/i', $ipaddr) || $ipaddr == '') { $ipaddr = '未知'; } return htmlspecialchars($ipaddr,ENT_QUOTES,'UTF-8'); } } } return $ipaddr; } ?>