01.<?php 02./* 03. [UCenter Home] (C) 2007-2008 Comsenz Inc. 04. $Id: function_common.php 2009-10-20 21:12:00 05. @author ymaozi 06. @copyright http://www.codedesign.cn/ 07. @uchome源码交流QQ群:83400263 08.*/09. 10.if(!defined('IN_UCHOME')) { 11. exit('Access Denied'); 12.} 13./** 14. * SQL ADDSLASHES 对sql的一些字符进行转义 15. * @param string or array $string 16. * @return string or array 17. */18.function saddslashes($string) { 19. if(is_array($string)) { //如果转入的是数组则对数组中的value进行递归转义 20. foreach($string as $key => $val) { 21. $string[$key] = saddslashes($val); 22. } 23. } else { 24. $string = addslashes($string); //对单引号(')、双引号(")、反斜线(\)与 NUL(NULL 字符),进行转义 25. } 26. return $string; 27.} 28. 29./** 30. * 取消HTML代码 31. * @param string or array $string 32. * @return string or array 33. */34.function shtmlspecialchars($string) { 35. if(is_array($string)) { 36. foreach($string as $key => $val) { 37. $string[$key] = shtmlspecialchars($val); 38. } 39. } else { 40. $string = preg_replace('/&((#(\d{3,5}|x[a-fA-F0-9]{4})|[a-zA-Z][a-z0-9]{2,5});)/', '&\\1', 41. str_replace(array('&', '"', '<', '>'), array('&', '"', '<', '>'), $string));//将传入的html中的&,",<,>,进行替换 42. } 43. return $string; 44.}
001./** 002. * 清空cookie与一些判断用户登录的信息 003. */004.function clearcookie() { 005. global $_SGLOBAL; 006. 007. obclean(); //清除缓存 008. ssetcookie('auth', '', -86400 * 365); //设置cookie名为auth的过期 009. $_SGLOBAL['supe_uid'] = 0; 010. $_SGLOBAL['supe_username'] = ''; 011. $_SGLOBAL['member'] = array(); //将这些全局变量清空 012.} 013. 014.//cookie设置 015./** 016. * 设置cookie 017. * @param string cookie名 018. * @param string cookie值 019. * @param int cookie存储时间 020. * @return void 021. */022.function ssetcookie($var, $value, $life=0) { 023. global $_SGLOBAL, $_SC, $_SERVER; 024. setcookie($_SC['cookiepre'].$var, $value, $life?($_SGLOBAL['timestamp']+$life):0, $_SC['cookiepath'], $_SC['cookiedomain'], $_SERVER['SERVER_PORT']==443?1:0); 025.} 026. 027.// 028./** 029. * 创建数据库连接对象 030. */031.function dbconnect() { 032. global $_SGLOBAL, $_SC; 033. 034. include_once(S_ROOT.'./source/class_mysql.php'); //引入数据库操作类 035. 036. if(empty($_SGLOBAL['db'])) { //如果没有创建数据库对象,则创建 037. $_SGLOBAL['db'] = new dbstuff; 038. $_SGLOBAL['db']->charset = $_SC['dbcharset']; 039. $_SGLOBAL['db']->connect($_SC['dbhost'], $_SC['dbuser'], $_SC['dbpw'], $_SC['dbname'], $_SC['pconnect']); 040. } 041.} 042. 043.//获取在线IP 044.function getonlineip($format=0) { 045. global $_SGLOBAL; 046. 047. if(empty($_SGLOBAL['onlineip'])) { 048. if(getenv('HTTP_CLIENT_IP') && strcasecmp(getenv('HTTP_CLIENT_IP'), 'unknown')) { 049. //如果存在客户端ip,并通过strcasecmp(),比较不等于unknown,则获取客户端ip 050. $onlineip = getenv('HTTP_CLIENT_IP'); 051. } elseif(getenv('HTTP_X_FORWARDED_FOR') && strcasecmp(getenv('HTTP_X_FORWARDED_FOR'), 'unknown')) { 052. //如果存在代理ip,则获取代理ip 053. $onlineip = getenv('HTTP_X_FORWARDED_FOR'); 054. } elseif(getenv('REMOTE_ADDR') && strcasecmp(getenv('REMOTE_ADDR'), 'unknown')) { 055. //代理服务器 IP 056. $onlineip = getenv('REMOTE_ADDR'); 057. } elseif(isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], 'unknown')) { 058. $onlineip = $_SERVER['REMOTE_ADDR']; 059. } 060. preg_match("/[\d\.]{7,15}/", $onlineip, $onlineipmatches); 061. //通过正则检验,是否是ip地址的格式 062. $_SGLOBAL['onlineip'] = $onlineipmatches[0] ? $onlineipmatches[0] : 'unknown'; 063. } 064. if($format) { 065. $ips = explode('.', $_SGLOBAL['onlineip']); //将ip地址,以.为分隔存入到数组 066. for($i=0;$i<3;$i++) { 067. $ips[$i] = intval($ips[$i]); 068. } 069. return sprintf('%03d%03d%13d', $ips[0], $ips[1], $ips[2]);//返回ip地十的前三段,03d:三位整数,如果不足刚以0填充 070. } else { 071. return $_SGLOBAL['onlineip']; 072. } 073.} 074. 075.// 076./** 077. * 判断当前用户登录状态 078. */079.function checkauth() { 080. global $_SGLOBAL, $_SC, $_SCONFIG, $_SCOOKIE, $_SN; 081. 082. if($_SGLOBAL['mobile'] && $_GET['m_auth']) $_SCOOKIE['auth'] = $_GET['m_auth']; 083. if($_SCOOKIE['auth']) { //如果设置了名了auth的cookie 084. @list($password, $uid) = explode("\t", authcode($_SCOOKIE['auth'], 'DECODE')); //通过authcode()函数将加密过的auth进行解密,将解密的信息分别存在$password与$uid中 085. $_SGLOBAL['supe_uid'] = intval($uid); //将$uid设置给全局的supe_uid 086. if($password && $_SGLOBAL['supe_uid']) { //如果密码与uid都存在,则判断用户信息的正确性 087. $query = $_SGLOBAL['db']->query("SELECT * FROM ".tname('session')." WHERE uid='$_SGLOBAL[supe_uid]'"); 088. if($member = $_SGLOBAL['db']->fetch_array($query)) { 089. if($member['password'] == $password) { 090. $_SGLOBAL['supe_username'] = addslashes($member['username']); 091. $_SGLOBAL['session'] = $member; 092. } else { 093. $_SGLOBAL['supe_uid'] = 0; 094. } 095. } else {//如果用户表中不存在该用户,则到用户表中查找 096. $query = $_SGLOBAL['db']->query("SELECT * FROM ".tname('member')." WHERE uid='$_SGLOBAL[supe_uid]'"); 097. if($member = $_SGLOBAL['db']->fetch_array($query)) { 098. if($member['password'] == $password) { 099. $_SGLOBAL['supe_username'] = addslashes($member['username']); 100. $session = array('uid' => $_SGLOBAL['supe_uid'], 'username' => $_SGLOBAL['supe_username'], 'password' => $password); 101. include_once(S_ROOT.'./source/function_space.php'); 102. insertsession($session);//将信息插入到session表中 103. } else { 104. $_SGLOBAL['supe_uid'] = 0; 105. } 106. } else { 107. $_SGLOBAL['supe_uid'] = 0; 108. } 109. } 110. } 111. } 112. if(empty($_SGLOBAL['supe_uid'])) { 113. //如果supe_uid为空,则清除cookie 114. clearcookie(); 115. } else { 116. $_SGLOBAL['username'] = $member['username']; 117. } 118.}
浙公网安备 33010602011771号