1,'_GET' => 1,'_POST' => 1,'_COOKIE' => 1,'_FILES' => 1,'_SERVER' => 1, 'P_S_T' => 1); foreach ($GLOBALS as $key => $value) { if (!isset($allowed[$key])) { $GLOBALS[$key] = null; unset($GLOBALS[$key]); } } if (!get_magic_quotes_gpc()) { S::slashes($_POST); S::slashes($_GET); S::slashes($_COOKIE); } S::slashes($_FILES); $GLOBALS['pwServer'] = S::getServer(array('HTTP_REFERER','HTTP_HOST','HTTP_X_FORWARDED_FOR','HTTP_USER_AGENT', 'HTTP_CLIENT_IP','HTTP_SCHEME','HTTPS','PHP_SELF', 'REQUEST_URI','REQUEST_METHOD','REMOTE_ADDR', 'QUERY_STRING')); !$GLOBALS['pwServer']['PHP_SELF'] && $GLOBALS['pwServer']['PHP_SELF'] = S::getServer('SCRIPT_NAME'); } /** * 路径转换 * @param $fileName * @param $ifCheck * @return string */ function escapePath($fileName, $ifCheck = true) { if (!S::_escapePath($fileName, $ifCheck)) { exit('Forbidden'); } return $fileName; } /** * 私用路径转换 * @param $fileName * @param $ifCheck * @return boolean */ function _escapePath($fileName, $ifCheck = true) { $tmpname = strtolower($fileName); $tmparray = array('://',"\0"); $ifCheck && $tmparray[] = '..'; if (str_replace($tmparray, '', $tmpname) != $tmpname) { return false; } return true; } /** * 目录转换 * @param unknown_type $dir * @return string */ function escapeDir($dir) { $dir = str_replace(array("'",'#','=','`','$','%','&',';'), '', $dir); return trim(preg_replace('/(\/){2,}|(\\\){1,}/', '/', $dir), '/'); } /** * 通用多类型转换 * @param $mixed * @param $isint * @param $istrim * @return mixture */ function escapeChar($mixed, $isint = false, $istrim = false) { if (is_array($mixed)) { foreach ($mixed as $key => $value) { $mixed[$key] = S::escapeChar($value, $isint, $istrim); } } elseif ($isint) { $mixed = (int) $mixed; } elseif (!is_numeric($mixed) && ($istrim ? $mixed = trim($mixed) : $mixed) && $mixed) { $mixed = S::escapeStr($mixed); } return $mixed; } /** * 字符转换 * @param $string * @return string */ function escapeStr($string) { $string = str_replace(array("\0","%00","\r",'\0','%00','\r'), '', $string); //modified@2010-7-5 $string = preg_replace(array('/[\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F]/','/&(?!(#[0-9]+|[a-z]+);)/is'), array('', '&'), $string); $string = str_replace(array("%3C",'<'), '<', $string); $string = str_replace(array("%3E",'>'), '>', $string); $string = str_replace(array('"',"'","\t",' '), array('"',''',' ','  '), $string); return $string; } /** * 变量检查 * @param $var */ function checkVar(&$var) { if (is_array($var)) { foreach ($var as $key => $value) { S::checkVar($var[$key]); } } elseif (P_W != 'admincp') { $var = str_replace(array('..',')','<','='), array('..',')','<','='), $var); } elseif (str_replace(array(' $value) { if (is_array($value)) { S::slashes($array[$key]); } else { $array[$key] = addslashes($value); } } } } /** * 获取服务器变量 * @param $keys * @return string */ function getServer($keys) { $server = array(); $array = (array) $keys; foreach ($array as $key) { $server[$key] = NULL; if (isset($_SERVER[$key])) { $server[$key] = str_replace(array('<','>','"',"'",'%3C','%3E','%22','%27','%3c','%3e'), '', $_SERVER[$key]); } } return is_array($keys) ? $server : $server[$keys]; } /** * 通用多类型混合转义函数 * @param $var * @param $strip * @param $isArray * @return mixture */ function sqlEscape($var, $strip = true, $isArray = false) { if (is_array($var)) { if (!$isArray) return " '' "; foreach ($var as $key => $value) { $var[$key] = trim(S::sqlEscape($value, $strip)); } return $var; } elseif (is_numeric($var)) { return " '" . $var . "' "; } else { return " '" . addslashes($strip ? stripslashes($var) : $var) . "' "; } } /** * 通过","字符连接数组转换的字符 * @param $array * @param $strip * @return string */ function sqlImplode($array, $strip = true) { return implode(',', S::sqlEscape($array, $strip, true)); } /** * 组装单条 key=value 形式的SQL查询语句值 insert/update * @param $array * @param $strip * @return string */ function sqlSingle($array, $strip = true) { if (!S::isArray($array)) return ''; // modified@2010-7-2 $array = S::sqlEscape($array, $strip, true); $str = ''; foreach ($array as $key => $val) { $str .= ($str ? ', ' : ' ') . $key . '=' . $val; } return $str; } /** * 组装多条 key=value 形式的SQL查询语句 insert * @param $array * @param $strip * @return string */ function sqlMulti($array, $strip = true) { if (!S::isArray($array)) return ''; // modified@2010-7-2 $str = ''; foreach ($array as $val) { if (!empty($val) && S::isArray($val)) { //modified@2010-7-2 $str .= ($str ? ', ' : ' ') . '(' . S::sqlImplode($val, $strip) . ') '; } } return $str; } /** * 组装SQL查询的限制条件 * @param $start * @param $num * @return string */ function sqlLimit($start, $num = false) { return ' LIMIT ' . ($start <= 0 ? 0 : (int) $start) . ($num ? ',' . abs($num) : ''); } }